Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-09-2005, 10:35   #1
andreaM
Senior Member
 
L'Avatar di andreaM
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 361
[C/C++] Intel Centrino batte AMD64 con gli array

Ciao. Chiedo gentilmente opinione e consiglio a tutti.

Questo programma di esempio gira con tempi strani e, soprattutto porta alla vittoria di un centrino 1.6MHz (Dothan) contro un AMD64-3000+(Winchester). Vi inviterei a provare. Il codice lo trovate in fondo.

Riassunto veloce:

- array 13x13, ma la dimensione non è vincolante.
- le matrici sono int e unsigned char
- vengono inizializzate 100milioni di volte

Le inizializzazioni sono di due tipi:

- una percorre la matrice da sinistra a destra
- l'altra dall'alto verso il basso

Compilo su un Centrino 1.6 con gcc 3.3.5 ed opzioni -03 -g0 e si ottengono i seguenti tempi:

Quote:
Starting up-down mode INT...
Elapsed : 25 secs.

Starting up-down mode UCHAR...
Elapsed : 24 secs.

Starting left-right mode INT...
Elapsed : 34 secs.

Starting left-right mode UCHAR...
Elapsed : 34 secs.
Allora, è sensato che percorrere dall'alto cerso il basso la matrice sia più conveniente, poichè le locazioni di memoria vengono percorse in modo contiguo ed ogni load in cache si porta dietro almeno una parola (giusto?).

Comincia non tornare nella scarsa o nessuna differenza tra l'uso di int e uchar, che dovrebbero essere indirizzate a 16 e 8 bit rispettivamente.

Non mi torna per niente che questo programmino giri più lento su un AMD64-3000+.

Ditemi voi cosa ne pensate.

Grazie e ciao!

Andrea


Codice:
Codice:
#include <iostream>
#include <cstdlib>

#define K 12
#define BOUND 100000000

using namespace std;

int main(int argc, char *argv[])
{

 unsigned char matrixC [K+1][K+1];
 int matrixI [K+1][K+1];
 
  unsigned long startTime;
  unsigned long finishTime;
  
  /* 
  	In tutte le matrici non si fa altro che assegnare un valore 
  	fissato per ogni elemento un numero di volte pari a BOUND
  */
 
  
  cout << "\n\nStarting up-down mode INT..." << endl;  
  startTime = time(0);
  
  for (int M = 0; M < BOUND; M++)
  	for (int j = 0; j <= K; j++)
  		for (int i = 0; i <=K; i++)
  			matrixI[i][j] = 1;
  			
  finishTime = time(0);  
  cout << "Elapsed : " << finishTime-startTime << " secs." << endl;
  
  
  
  cout << "\n\nStarting up-down mode UCHAR..." << endl;  
  startTime = time(0);
  
  for (int M = 0; M < BOUND; M++)
  	for (int j = 0; j <= K; j++)
  		for (int i = 0; i <=K; i++)
  			matrixC[i][j] = 2;
  			
  finishTime = time(0);  
  cout << "Elapsed : " << finishTime-startTime << " secs." << endl;
  

 
  cout << "\nStarting left-right mode INT..." << endl;  
  startTime = time(0);
  
  for (int M = 0; M < BOUND; M++)
  	for (int i = 0; i <= K; i++)
  		for (int j = 0; j <=K; j++)
  			matrixI[i][j] = 3;
  			
  finishTime = time(0);
  cout << "Elapsed : " << finishTime-startTime << " secs." << endl; 
  
  
   cout << "\nStarting left-right mode UCHAR..." << endl;  
  startTime = time(0);
  
  for (int M = 0; M < BOUND; M++)
  	for (int i = 0; i <= K; i++)
  		for (int j = 0; j <=K; j++)
  			matrixC[i][j] = 4;
  			
  finishTime = time(0);  
  cout << "Elapsed : " << finishTime-startTime << " secs." << endl;
  

  return EXIT_SUCCESS;
}
__________________
Utenti nel Mercatino: Axel78-Hyperion-marco760-djeasy-giggione666-Never-Tancrozio-mafbass-ominiverdi-Dr.AseptiK-recidivo-Tycho-The_Saint-Spyke-malleus
Utenti nel Mercatino:Valle

Ultima modifica di andreaM : 12-09-2005 alle 16:54.
andreaM è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 13:16   #2
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
devi provare a compilare ottimizzando il codice per ogni piattaforma, li capisci realmente il limite della cpu.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 13:45   #3
andreaM
Senior Member
 
L'Avatar di andreaM
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 361
Quote:
Originariamente inviato da Fenomeno85
devi provare a compilare ottimizzando il codice per ogni piattaforma, li capisci realmente il limite della cpu.

~§~ Sempre E Solo Lei ~§~
Innanzi tutto grazie per aver risposto.
Su AMD64 ho provato a dare delle opzioni a gcc mirate proprio a questo, del tipo:

-march , -mcpu , -m32 o m64 (una alla volta) per legare l'eseguibile all'architettura sottostante

eppure non è cambiato proprio nulla. Un idea?
__________________
Utenti nel Mercatino: Axel78-Hyperion-marco760-djeasy-giggione666-Never-Tancrozio-mafbass-ominiverdi-Dr.AseptiK-recidivo-Tycho-The_Saint-Spyke-malleus
Utenti nel Mercatino:Valle
andreaM è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 14:03   #4
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
per intel c'è il compilatore sui volendo ma ti costa un botto, poi prova a fare ottimizzione migliore che se non erro è -o3

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 14:19   #5
andreaM
Senior Member
 
L'Avatar di andreaM
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 361
Quote:
Originariamente inviato da Fenomeno85
per intel c'è il compilatore sui volendo ma ti costa un botto, poi prova a fare ottimizzione migliore che se non erro è -o3

~§~ Sempre E Solo Lei ~§~
Compilo su entrambe le architetture sempre con -O3 -g0 : su Intel Centrino va come spiegato sopra, mentre su AMD64 rallenta.

Io non sono sicuro che si tratti di un problema di compilazione non ottimizata. Infatti ci sono altri tipi di programmi che ho realizzato, meno sensibili all'indirizzamento e più esosi di clock: lì le cose cambiano, eppure la piattaforma è la stessa...

Guarda è un bel rompicapo.

Ciao.
__________________
Utenti nel Mercatino: Axel78-Hyperion-marco760-djeasy-giggione666-Never-Tancrozio-mafbass-ominiverdi-Dr.AseptiK-recidivo-Tycho-The_Saint-Spyke-malleus
Utenti nel Mercatino:Valle
andreaM è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 16:29   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Intanto le matrici sono 13x13 Se il ciclo lo fai partire da zero fino <= K sono 13...
E' possibilissimo che il P-M si più veloce dell'Athlon 64...non ci vedo niente di strano... L'alu del Pentium 3 è sempre stata molto efficiente...

Il compilatore probabilmente alloca i char allineandoli ai 32 bit...di conseguenza la matrice di char occupa la stessa dimensione di una matrice di int...
Questo perchè non è così agevole per le CPU moderne accedere solamente ad uno dei vari byte di una locazione a 32 bit...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 16:38   #7
andreaM
Senior Member
 
L'Avatar di andreaM
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 361
Quote:
Originariamente inviato da cionci
Intanto le matrici sono 13x13 Se il ciclo lo fai partire da zero fino <= K sono 13...
Ehm, già... La frenesia del cut&paste! sorry.

Quote:
E' possibilissimo che il P-M si più veloce dell'Athlon 64...non ci vedo niente di strano... L'alu del Pentium 3 è sempre stata molto efficiente...
Si impara sempre qualcosa... Stessa faccenda con i Pentium4?

Quote:
Il compilatore probabilmente alloca i char allineandoli ai 32 bit...di conseguenza la matrice di char occupa la stessa dimensione di una matrice di int...
Questo perchè non è così agevole per le CPU moderne accedere solamente ad uno dei vari byte di una locazione a 32 bit...
Questo lo sospettavo, anche se mi aspettavo di poter allineare a 32 bit due coppie di int e a 64 bit 4coppie...

Grazie comunque per la risposta.
Ciao.
__________________
Utenti nel Mercatino: Axel78-Hyperion-marco760-djeasy-giggione666-Never-Tancrozio-mafbass-ominiverdi-Dr.AseptiK-recidivo-Tycho-The_Saint-Spyke-malleus
Utenti nel Mercatino:Valle
andreaM è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 16:41   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Un int è già a 32 bit...non c'è bisogno di allinearlo...

Il P4 suppongo che vada più lento...anche se bisogna sempre vedere la frequenza...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 20:39   #9
andreaM
Senior Member
 
L'Avatar di andreaM
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 361
Quote:
Originariamente inviato da cionci
Un int è già a 32 bit...non c'è bisogno di allinearlo...
In realtà mi riferivo allo standard ANSI del C++, che prevedeva:

char a 8 bit
int a 16 bit
float a 32 bit
double a 64 bit

(per questo speravo quanto ti ho detto)
ovviamente, però, i progettisti dei vari compilatori hanno fatto delle scelte diverse.

Quote:
Il P4 suppongo che vada più lento...anche se bisogna sempre vedere la frequenza...
Se hai un po' di pazienza & tempo, me la chiariresti questa cosa? Il fatto che una ALU più efficente faccia la differenza su un programma di questo tipo non lo capisco.

Pensavo piuttosto alla differenza di cache tra i due processori della prova: un Intel con core Banias ha 2MB di L2, mentre lo AMD Winchester ne ha 512KB.
Non potrebbe essere?

Ciao.

Andrea
__________________
Utenti nel Mercatino: Axel78-Hyperion-marco760-djeasy-giggione666-Never-Tancrozio-mafbass-ominiverdi-Dr.AseptiK-recidivo-Tycho-The_Saint-Spyke-malleus
Utenti nel Mercatino:Valle
andreaM è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 21:05   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da andreaM
In realtà mi riferivo allo standard ANSI del C++, che prevedeva:
Non credo che lo stadard imponga quelle dimensioni...
Solitamente l'int è pari alla grandezza del registro della ALU...

Questo programma sicuramente non risentirà della cache L2, visto che girerà sempre sulla L1...

Gli accessi alla RAM quindi hanno una latenza molto bassa...
Per ogni inizializzazione dovrai fare un solo accesso alla cache (suppongo solo uno visto che il vettore è allocato staticamente), ma dovrai fare una prodotto per calcolare l'indirizzo della linea (si fa con la ALU), un'altra somma per calcolare la posizione del dato nella linea (questa operazione si fa con la AGU), l'accesso alla cache, e poi per ogni for più interno: un incremento, un confronto ed una jump condizionata)... Sono 1 operazione AGU e 4 ALU per ogni accesso alla cache... Quindi suppongo che siano le 5 operazioni a dare un contributo superiore a quello dell'accesso alla cache...

Ultima modifica di cionci : 09-09-2005 alle 21:09.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 21:08   #11
andreaM
Senior Member
 
L'Avatar di andreaM
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 361
Quote:
Originariamente inviato da andreaM
In realtà mi riferivo allo standard ANSI del C++, che prevedeva:

char a 8 bit
int a 16 bit
float a 32 bit
double a 64 bit
(Qui mi auto-quoto ) , dimenticavo l'uso di sizeof in C++.. da cui ho appena scoperto che in gcc si ha che

char 1 byte (come ANSI)
int 4 byte
float 4 byte (come ANSI)
double 8 byte (come ANSI)
__________________
Utenti nel Mercatino: Axel78-Hyperion-marco760-djeasy-giggione666-Never-Tancrozio-mafbass-ominiverdi-Dr.AseptiK-recidivo-Tycho-The_Saint-Spyke-malleus
Utenti nel Mercatino:Valle
andreaM è offline   Rispondi citando il messaggio o parte di esso
Old 09-09-2005, 21:11   #12
andreaM
Senior Member
 
L'Avatar di andreaM
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 361
Quote:
Originariamente inviato da cionci
Non credo che lo stadard imponga quelle dimensioni...
Solitamente l'int è pari alla grandezza del registro della ALU...
Per questo citavo il libro di Helbert Schildt.. comunque ANSI non lo imponeva, le raccomandava solo come minime.

Quote:
Questo programma sicuramente non risentirà della cache L2, visto che girerà sempre sulla L1...

Gli accessi alla RAM quindi hanno una latenza molto bassa...
Per ogni inizializzazione dovrai fare un solo accesso alla cache (suppongo solo uno visto che il vettore è allocato staticamente), ma dovrai fare una somma per calcolare l'indirizzo della linea, un'altra somma per calcolare la posizione del dato nella linea (queste operazioni si fanno con la AGU), l'accesso alla cache, e poi per ogni for più interno: un incremento, un confronto ed una jump condizionata)... Sono 2 operazioni AGU e 3 ALU per ogni accesso alla cache... Quindi suppongo che siano le 5 operazioni a dare un contributo superiore a quello dell'accesso alla cache...

Perfetto, Chiaro. Grazie.
__________________
Utenti nel Mercatino: Axel78-Hyperion-marco760-djeasy-giggione666-Never-Tancrozio-mafbass-ominiverdi-Dr.AseptiK-recidivo-Tycho-The_Saint-Spyke-malleus
Utenti nel Mercatino:Valle
andreaM è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2005, 07:42   #13
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Le matrici sono piccole e stanno tutte nella cache L1, per cui può darsi che in questo caso la maggior efficienza dell'accesso alla cache dei Pentium-M faccia la differenza.

I char in questo dovrebbero occupare comunque 1 byte.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2005, 07:50   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ora che ci penso con -O3 ci sta che faccia anche il loop unrolling...in questo caso ci sarebbero solo accessi alla L1...
Quote:
Originariamente inviato da cdimauro
I char in questo dovrebbero occupare comunque 1 byte.
Allora come spieghi il fatto che abbiano le stesse prestazioni ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2005, 08:45   #15
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Proprio perché i dati stanno tutti nella cache: una volta caricati, accedere a un byte o a un valore a 32 bit è indifferente per il processore.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2005, 08:50   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da cdimauro
Proprio perché i dati stanno tutti nella cache: una volta caricati, accedere a un byte o a un valore a 32 bit è indifferente per il processore.
E' vero...che testa
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2005, 11:51   #17
andreaM
Senior Member
 
L'Avatar di andreaM
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 361
Quote:
Originariamente inviato da cdimauro
Proprio perché i dati stanno tutti nella cache: una volta caricati, accedere a un byte o a un valore a 32 bit è indifferente per il processore.
Fatemi capire bene:

- questo tipo di programma porta la matrice in L1 e, ad ogni inizializzazione, la ALU calcola la posizione dell'elemento in cache.

- per questo motivo usare char, short int o int non dovrebbe avere impatto sulle prestazione (anche se un po' invece succede). A patto che la matrice non diventi troppo grande e serva utilizzare anche la L2.

- il Centrino va più veloce perchè ha una ALU più efficiente: su questo cdimauro concorda?

Ciao.
__________________
Utenti nel Mercatino: Axel78-Hyperion-marco760-djeasy-giggione666-Never-Tancrozio-mafbass-ominiverdi-Dr.AseptiK-recidivo-Tycho-The_Saint-Spyke-malleus
Utenti nel Mercatino:Valle
andreaM è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2005, 12:11   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Secondo cdimauro la cache L1 del P-M è più efficiente...però sarei d'accordo su questo se con -O3 il compilatore facesse il loop unrolling...in tal caso il tutto si riduce ai soli accessi alla L1...

La differenza non c'è fra int e char perchè il protocollo di accesso alla L1 è identico sia che si voglia recuperare un int che un char...

Ultima modifica di cionci : 12-09-2005 alle 12:13.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2005, 13:08   #19
andreaM
Senior Member
 
L'Avatar di andreaM
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 361
Quote:
Originariamente inviato da cionci
Secondo cdimauro la cache L1 del P-M è più efficiente...però sarei d'accordo su questo se con -O3 il compilatore facesse il loop unrolling...in tal caso il tutto si riduce ai soli accessi alla L1...
Secondo il manuale gcc il loop unrolling si abilita con le seguenti opzioni di ottimizzazione:


-funroll-loops
-funroll-all-loops


che però NON sono abilitate con nessuna opzione -Ox. Perciò le prestazioni misurate non beneficiano del loop unrolling.
__________________
Utenti nel Mercatino: Axel78-Hyperion-marco760-djeasy-giggione666-Never-Tancrozio-mafbass-ominiverdi-Dr.AseptiK-recidivo-Tycho-The_Saint-Spyke-malleus
Utenti nel Mercatino:Valle
andreaM è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2005, 16:11   #20
DioBrando
Senior Member
 
Iscritto dal: Jan 2003
Città: Milano - Udine
Messaggi: 9418
Quote:
Originariamente inviato da andreaM
Pensavo piuttosto alla differenza di cache tra i due processori della prova: un Intel con core Banias ha 2MB di L2, mentre lo AMD Winchester ne ha 512KB.
Non potrebbe essere?

Ciao.

Andrea
solo una precisazione, il core Banias ha un 1 MB di cache L2

ma è cmq il doppio rispetto all'A64
DioBrando è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Musk incassa un altro maxi contratto IA:...
Le vendite di EV sono esplose in tutto i...
Avio si prepara ai test del Dimostratore...
Space Pioneer ha annunciato le cause del...
Anthropic avrebbe nuovi antibiotici cont...
Scoperto un 'moltiplicatore nascosto' ne...
DREO: a IFA 2026 4 novità fra cui...
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: 09:44.


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