Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Logitech G PRO 60 X: la prima tastiera 60% del marchio convince solo a metà
Recensione Logitech G PRO 60 X: la prima tastiera 60% del marchio convince solo a metà
Logitech G lancia la sua prima tastiera da gaming con layout al 60%, debuttando così in una categoria dove i grandi concorrenti della casa elvetica operano già da anni. Il produttore opta per gli switch ottici e, nonostante la partnership con i pro player, rinuncia ad alcune funzionalità 'essenziali' per il gaming competitivo. Il prezzo di vendita, inoltre, non è molto incoraggiante.
Bose Open Ultra: gli auricolari più audaci e unici di sempre! La recensione
Bose Open Ultra: gli auricolari più audaci e unici di sempre! La recensione
Sono gli auricolari dal design nuovo, capaci di aderire all’orecchio esterno e non entrando completamente nel padiglione auricolare. Un prodotto decisamente diverso da ciò che l’azienda aveva fino ad oggi in catalogo e mai realizzato prima. L’idea di Bose è quella di trovare successo anche con device non convenzionali come questo. 
Recensione ASUS ROG Cetra TWS SpeedNova: le migliori nella loro fascia, ma lo stelo va accorciato
Recensione ASUS ROG Cetra TWS SpeedNova: le migliori nella loro fascia, ma lo stelo va accorciato
Nelle ultime settimane abbiamo avuto l'opportunità di mettere sotto torchio le ASUS ROG Cetra TWS SpeedNova. Seppur classificati come "da gaming", gli auricolari vanno ben oltre quelle che sono le esigenze dei videogiocatori proponendosi come una soluzione polifunzionale capace di fornire un suono eccezionale in ogni circostanza, dalla musica ai contenuti multimediali, passando ovviamente per i videogiochi con i quali è possibile ottenere una latenza praticamente assente.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2008, 16:14   #21
MFSPO=DBGPOF
Bannato
 
Iscritto dal: Dec 2007
Messaggi: 42
Ho chiesto, e pare che così è meglio:

Codice:
int abs(int x)

{
	return ((x^(x>>31))-(x>>31));
}

Ultima modifica di MFSPO=DBGPOF : 13-02-2008 alle 16:20.
MFSPO=DBGPOF è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 16:27   #22
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1536
Quote:
Originariamente inviato da MFSPO=DBGPOF Guarda i messaggi
Ho chiesto, e pare che così è meglio:

Codice:
int abs(int x)

{
	return ((x^(x>>31))-(x>>31));
}
cross platform soprattutto
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 16:32   #23
MFSPO=DBGPOF
Bannato
 
Iscritto dal: Dec 2007
Messaggi: 42
Quote:
Originariamente inviato da Ufo13 Guarda i messaggi
cross platform soprattutto
vabbe, metto a posto

Codice:
int abs(int x)

{
	return ((x^(x>>((sizeof(int)<<3)-1)))-(x>>((sizeof(int)<<3)-1)));
}
Contento?
MFSPO=DBGPOF è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 17:11   #24
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
Guardate che io avevo barato.
L'implementazione piu' veloce e' esattamente quella che abbiamo imparato, ovvero usare la
funzione gia' disponibile nella stdlib.h (e nella math.h)

Ovvero
int abs(int x)
gia' dichiarata e pronta per tutti.

Il mio codice infatti non era altro che il Disassembly del codice generato da tale funzione.

Fra l'altro il codice generato dalla soluzione di MFSPO=DBGPOF e' easttamente equivalente, a parte il
CDQ generato dalla ABS di libreria
e il (SAR registro,31) generato dalla soluzione.
entrambi vogliono riempire un registro con quello che e' il bit piu' significativo, ovvero il segno, della nostra variabile in questione.

Usare la ABS di libreria secondo me e' quindi piu' veloce, piu' leggibile e piu' cross-platform di qualunque altro metodo.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 17:20   #25
MFSPO=DBGPOF
Bannato
 
Iscritto dal: Dec 2007
Messaggi: 42
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Guardate che io avevo barato.
L'implementazione piu' veloce e' esattamente quella che abbiamo imparato, ovvero usare la
funzione gia' disponibile nella stdlib.h (e nella math.h)

Ovvero
int abs(int x)
gia' dichiarata e pronta per tutti.

Il mio codice infatti non era altro che il Disassembly del codice generato da tale funzione.

Fra l'altro il codice generato dalla soluzione di MFSPO=DBGPOF e' easttamente equivalente, a parte il
CDQ generato dalla ABS di libreria
e il (SAR registro,31) generato dalla soluzione.
entrambi vogliono riempire un registro con quello che e' il bit piu' significativo, ovvero il segno, della nostra variabile in questione.

Usare la ABS di libreria secondo me e' quindi piu' veloce, piu' leggibile e piu' cross-platform di qualunque altro metodo.
Quoto gugoXX. Ho disassemblato la abs(x) della stdlib.h, e il codice x86 generato è pari pari quello proposto da gugoXX. La abs() di stdlib.h è la più veloce possibile.
MFSPO=DBGPOF è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 18:43   #26
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Ragazzi vedo che vi siete impegnati per darmi la soluzione...
Ovviamente ho fatto un attento profiling ed il collo di bottiglia è proprio il calcolo del valore assoluto che è da calcolarsi il più velocemente possibile... Ho provato anche ad utilizzare la funzione abs di libreria come dite voi ma la LUT continua ad essere la soluzione più veloce...
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 19:09   #27
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53967
Mi spieghi come hai fatto la lookup table per l'abs ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 19:36   #28
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da cionci Guarda i messaggi
Mi spieghi come hai fatto la lookup table per l'abs ?
siccome il mio numero da "assolutizzare" va da -23000 a +23000 per ognuno di quesi numeri mi sono fatto una tabella lunga 46001 elementi mettendoci il risultato. Questa tabella l'ho generata con Matlab su un file di testo che poi ho dato in pasto al C.
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 19:45   #29
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53967
Sicuramente è molto veloce, ma fare il quadrato e poi la divisione era molto più lento ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 19:59   #30
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da cionci Guarda i messaggi
Sicuramente è molto veloce, ma fare il quadrato e poi la divisione era molto più lento ?
Guarda ti faccio un piccolo schema:

Funzione abs di libreria => 16ms
Mia funzione citata nel primo post => 14ms
Quadrato e poi divisione => 13ms
LUT => 9ms

Se consideri che tale algoritmo lo voglio fare in real-time anche se formalmente più brutto preferisco la LUT.
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:11   #31
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53967
In real time intendi in so real time ? In tal caso ti capisco
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:32   #32
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12075
Quote:
Originariamente inviato da Mr. X Guarda i messaggi
Guarda ti faccio un piccolo schema:

Funzione abs di libreria => 16ms
Mia funzione citata nel primo post => 14ms
Quadrato e poi divisione => 13ms
LUT => 9ms

Se consideri che tale algoritmo lo voglio fare in real-time anche se formalmente più brutto preferisco la LUT.
ma non è tantissimo 9ms?
...spero che non sia per un'esecuzione sola...
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:34   #33
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
Quote:
Originariamente inviato da Mr. X Guarda i messaggi
siccome il mio numero da "assolutizzare" va da -23000 a +23000 per ognuno di quesi numeri mi sono fatto una tabella lunga 46001 elementi mettendoci il risultato. Questa tabella l'ho generata con Matlab su un file di testo che poi ho dato in pasto al C.
La prossima volta spiega bene il problema allora.
46KB*4 di memoria non sono nulla
4GB*4 potrebbero esserlo.

Nelle valutazioni quantitative devi anche considerare che quella lookup table sono sempre 200KB di cache che usi solo per il calcolo del valore assoluto, e che potrebbero essere usati per altro.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 13-02-2008 alle 20:38.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:42   #34
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12075
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ma non è tantissimo 9ms?
...spero che non sia per un'esecuzione sola...
ho fatto una semplicissima prova in ruby sul mio A64 3000+@4000+ (2520mhz e RAM 186 mhz se non sbaglio):
Codice:
startTime = Time.new
for i in 0..1000000
  a = -2.abs
end
puts Time.new - startTime
risultato... 350 msec per un milione di iterazioni....
e ruby è notoriamente molto lento come implementazione (ho usato la versione 1.8.6 non la ben + veloce 1.9.0 )
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:42   #35
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da cionci Guarda i messaggi
In real time intendi in so real time ? In tal caso ti capisco
Esatto
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:44   #36
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ma non è tantissimo 9ms?
...spero che non sia per un'esecuzione sola...
9ms impiega tutto l'algoritmo al cui interno ci sono diverse migliaia di valori assoluti
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:46   #37
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
La prossima volta spiega bene il problema allora.
46KB*4 di memoria non sono nulla
4GB*4 potrebbero esserlo.

Nelle valutazioni quantitative devi anche considerare che quella lookup table sono sempre 200KB di cache che usi solo per il calcolo del valore assoluto, e che potrebbero essere usati per altro.
Ti ringrazio per la precisazione. Anche se prendesse 200KB di cache preferisco la velocità.
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:47   #38
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
ho fatto una semplicissima prova in ruby sul mio A64 3000+@4000+ (2520mhz e RAM 186 mhz se non sbaglio):
Codice:
startTime = Time.new
for i in 0..1000000
  a = -2.abs
end
puts Time.new - startTime
risultato... 350 msec per un milione di iterazioni....
e ruby è notoriamente molto lento come implementazione (ho usato la versione 1.8.6 non la ben + veloce 1.9.0 )
Occhio, non conosco Ruby, ma il C++ in quel caso avrebbe saltato la valutazione dell'ABS.
Avrebbe messo direttamente +2 nella variabile a.
Anzi, se tutto va bene, dato che la variabile a non e' usata, avrebbe proprio saltato tutta la riga...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:48   #39
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3691
Quote:
Originariamente inviato da Mr. X Guarda i messaggi
Ti ringrazio per la precisazione. Anche se prendesse 200KB di cache preferisco la velocità.
Chiaro.
Quello che dico e' che nel complesso mangiare 200KB di cache potrebbe rallentare il sistema. Valuta bene.
Poi a me vedere un array che nella cella 1 c'e' scritto 1
nella cella 2 c'e' scritto 2
nella cella X c'e' scritto X
Mi fa irritare un po'... ma passa subito non preoccuparti.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2008, 20:51   #40
Mr. X
Senior Member
 
L'Avatar di Mr. X
 
Iscritto dal: Nov 2005
Città: Arezzo
Messaggi: 1801
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Chiaro.
Quello che dico e' che nel complesso mangiare 200KB di cache potrebbe rallentare il sistema. Valuta bene.
Poi a me vedere un array che nella cella 1 c'e' scritto 1
nella cella 2 c'e' scritto 2
nella cella X c'e' scritto X
Mi fa irritare un po'... ma passa subito non preoccuparti.
__________________
iMac 27" - Apple iPhone 4 16GB Nero
Ho concluso trattative con: cletopolonia - lele11 - Palli - darkn3o - Res3rator - andyxx - ABCcletta - DyingSweetly - streke - spiderman4 - mickyjenny - bottoni - tancrozio - perno
Mr. X è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Logitech G PRO 60 X: la prima tastiera 60% del marchio convince solo a metà Recensione Logitech G PRO 60 X: la prima tastier...
Bose Open Ultra: gli auricolari più audaci e unici di sempre! La recensione Bose Open Ultra: gli auricolari più audac...
Recensione ASUS ROG Cetra TWS SpeedNova: le migliori nella loro fascia, ma lo stelo va accorciato Recensione ASUS ROG Cetra TWS SpeedNova: le migl...
Google Pixel 8a: può diventare un vero best buy? La recensione Google Pixel 8a: può diventare un vero be...
MSI Vector 16 HX A13V è un notebook gaming che fa sentire la sua potenza (e non solo) MSI Vector 16 HX A13V è un notebook gamin...
Lefant M1 è un ottimo robot che l...
Un assistente virtuale potrà risp...
Windows 11 24H2, disponibile al download...
3DMark: Steel Nomad è arrivato pe...
Speciale sicurezza domotica con Amazon R...
Il Kit di sicurezza Ring Alarm è ...
Gordon Bell, pioniere dei PC (DEC), &egr...
ASUS Zenbook 14 torna in sconto (super m...
NVIDIA progetta lo sbarco sugli AI PC co...
DJI Air 3 in supersconto su Amazon, anch...
Controllare un robot Tesla con la mente:...
NVIDIA è ancora da record grazie ...
La sonda spaziale NASA Voyager 1 torna a...
Easydom svela Stark: ecosistema smart pe...
Amazon Web Services (AWS) non vuole pi&u...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www2v