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 16-06-2004, 23:44   #1
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
[C] Misurare tempo di esecuzione

Dovrei realizzare una specie di mini server che accetti richieste di lettura ed operazioni varie sui file di una certa directory. Per ciascuna delle possibili operazioni previste il server deve mantenere traccia del tempo (medio) di esecuzione (Sia dato per scontato che cio' sia fatto...). In base a tale statistica verificare se una certa richiesta (Riconosciuta e di cui guardo il tempo medio di exec...) richieda un tempo di exec maggiore di una fork(): se si l'operazione viene svolta dal proc figlio altrimenti dal proc padre.
Volendo fare tale controllo sul tempo di exec, dovrei effettuare ogni volta una fork() misurandone il tempo ovvero:

....
struct timeval start, end;
gettimeofday(&start, NULL);
fork();
gettimeofday(&end, NULL);
long execTime = (end.tv_sec - start.tv_sec) + (end.tv_usec - end.tv_usec);
....

Ma, a questo punto, una fork() e' gia' stata eseguita ed un nuovo processo e' in exec . No ?!? E quindi, anche se la richiesta avesse un tempo di exec. inferiore ad una fork() che vantaggio ne trarrei ?!?! Sono assai confusetto...

thks
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 08:08   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Sì anch'io. Puoi spiegare meglio cosa devi fare? Magari con qualche esempio...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 10:20   #3
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
Quote:
Originariamente inviato da ilsensine
Sì anch'io.

Quote:
Originariamente inviato da ilsensine
Puoi spiegare meglio cosa devi fare? Magari con qualche esempio...
Allora, brevemente... Un processo server deve mettere a disp. di un imprecisato numero di client delle operazioni su file di testo. Operazioni del tipo: ricerca di una certa sottostringa all'interno di un file dato, restituzione di una parte di testo di un certo file dati offset e lunghezza del testo cercato, etc...
Il server accetta richieste dai client attraverso una pipe con nome nota e creata all'avvio dal server. Le risposte del server ai client avvengono sulle pipe che i client stessi specificano, inviandone il nome (Attraverso la pipe del server) al server stesso.

Vedi ESEMPIO e relativa LEGENDA.

Il server, alla ricezione di una generica richiesta:

-controlla che la richiesta sia "lecita" (Il modo i cui lo faccia per ora non ci interessa).
-se il controllo precedente e' soddisfatto controlla (Accedendo ad una tabella privata, magari...) qual e' il tempo medio di exec. per soddisfare tale richiesta. Confronta tale valore (TEMPO_FUN) con quello rischiesto per fare una fork() (TEMPO_FORK) (Il tempo per fare una fork() viene calcolato come sopra...) e quindi:

TEMPO_FUN > TEMPO_FORK ==> il server crea un processo figlio il quale soddisfera' la richiesta per poi terminare. Il server avra' cosi' la possibilita' di restare "in acolto" di nuove richieste.
TEMPO_FORK > TEMPO_FUN ==> il server richiama direttamente la funzione in grado di soddisfare la richiesta del client senza dare il controllo a nessun processo figlio.

Ad ogni modo si terra' traccia del tempo impiegato a soddisfare la richiesta (Dal padre o dal figlio) in modo da poterne aggiornare (Nella tabella privata) il valore corrispondente del tempo medio di exec.

Adesso e' piu' chiaro ??
La mia perplessita' e' la stessa...
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.

Ultima modifica di Ed_Bunker : 18-06-2004 alle 22:15.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 10:46   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Ed_Bunker
Anch'io ero assai "confusetto" dalla tua descrizione

Quote:
Vedi esempio e relativa legenda.
chmod +x images
chmod +r images/*


Quote:
TEMPO_FUN > TEMPO_FORK ==> il server crea un processo figlio il quale soddisfera' la richiesta per poi terminare. Il server avra' cosi' la possibilita' di restare "in acolto" di nuove richieste.
TEMPO_FORK > TEMPO_FUN ==> il server richiama direttamente la funzione in grado di soddisfare la richiesta del client senza dare il controllo a nessun processo figlio.
Ovviamente la exec è un pò più lenta della fork. Il tuo problema però mi sembra più idoneo ad essere approcciato con i thread.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 10:50   #5
fpucci
Senior Member
 
Iscritto dal: Jul 2002
Città: Roma
Messaggi: 806
TEMPO_FORK lo calcoli una volta per sempre all'inizio dei tempi, quando tiri su il server e prima che esso dia la disponibilità ai client di collegarsi ad esso. E questo è il tuo tempo di riferimento (ci devi aggiungere anche il tempo di esecuzione di una exec() e di una eventuale wait() ).

A questo punto, ad ogni richiesta, non c'è bisogno di invocare la fork() se TEMPO_FORK > TEMPO_FUN.
fpucci è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 10:50   #6
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da ilsensine
Ovviamente la exec è un pò più lenta della fork. Il tuo problema però mi sembra più idoneo ad essere approcciato con i thread.
Aspetta c'è qualcosa che non mi quadra...una exec deve essere comunque preceduta da una fork, altrimenti il processo chimante termina...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 11:19   #7
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
Quote:
Originariamente inviato da fpucci
TEMPO_FORK lo calcoli una volta per sempre all'inizio dei tempi, quando tiri su il server e prima che esso dia la disponibilità ai client di collegarsi ad esso. E questo è il tuo tempo di riferimento (ci devi aggiungere anche il tempo di esecuzione di una exec() e di una eventuale wait() ).

A questo punto, ad ogni richiesta, non c'è bisogno di invocare la fork() se TEMPO_FORK > TEMPO_FUN.
Non mi occorre fare nessuna exec() poiche' dopo la fork avro' processo padre e processo figlio. (Eventualmente...) Il primo si rimette in attesa di ulteriori richieste, il secondo esegue la funzione richiesta. ma tale funzione si trova all'interno del codice del padre e quindi non e' necessaria nessuna exec.

/*Tralasciando, per ora, il discorso sul controllo del controllo sui tempi di exec e supponendo di fare eseguire sempre la richiesta mediante un processo figlio...*/

...
...

int main(....)
{
...
int pid;
if ((pid = fork()) == -1)
{
perror("Errore nella fork();
exit(0);
}
if(pid)/*Sono il padre*/
{
/*Mi metto in ascolto di ulteriori richieste*/
}
if (pid == 0)/*Sono il figlio*/
{
/*Per esempio...*/
funzione1();
exit(0);
}
...
...
}

void funzione1()
{
...
}

void funzione2()
{
...
...
}

void funzione3()
{
...
...
}


Pertanto nessun problema per la exec. Ma...
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 11:21   #8
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
Quote:
Originariamente inviato da ilsensine
Aspetta c'è qualcosa che non mi quadra...una exec deve essere comunque preceduta da una fork, altrimenti il processo chimante termina...
Non e' che il processo chiamante termina, continua la sua esecuzione ma eseguendo un altro codice...
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 11:43   #9
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Ed_Bunker
Non e' che il processo chiamante termina, continua la sua esecuzione ma eseguendo un altro codice...
Sì ma all'atto pratico è lo stesso. Se il processo server chiama exec, ci sarà un altro processo in esecuzione. Il processo server termina lì, e non può più essere recuperato se non rilanciandolo ex novo.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 11:57   #10
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
Quote:
Originariamente inviato da ilsensine
Sì ma all'atto pratico è lo stesso. Se il processo server chiama exec, ci sarà un altro processo in esecuzione. Il processo server termina lì, e non può più essere recuperato se non rilanciandolo ex novo.
In "soldoni' si... La exec non ritorna mai (A meno di errori) ma il processo e' lo stesso (Stesso PID...), ovviamente non sara' piu' un server, poiche' il codice che andra' ad eseguire sara' un altro...
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 12:08   #11
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
E' un pò strano come design, il server dovrebbe continuare ad essere attivo anche dopo aver soddisfatto la richiesta...

Comunque sia, la fork dovrebbe essere più veloce.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 12:13   #12
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
Quote:
Originariamente inviato da ilsensine
E' un pò strano come design, il server dovrebbe continuare ad essere attivo anche dopo aver soddisfatto la richiesta...

Comunque sia, la fork dovrebbe essere più veloce.
Allora forse mi sono spiegato proprio male.... E' ovvio che il server rimanga attivo. Altrimenti che roba sarebbe ?!?!? Dato che NESSUNA exec() viene fatta (Ne' dal processo figlio ne', tantomeno, dal padre) il server resta sempe attivo.
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 12:19   #13
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Ah te intendevi "exec" per "esecuzione"....credevo stessi parlando della _funzione_ exec, spesso usata insieme a fork
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 12:45   #14
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
Quote:
Originariamente inviato da ilsensine
Ah te intendevi "exec" per "esecuzione"....credevo stessi parlando della _funzione_ exec, spesso usata insieme a fork
Ecco dove nasceva l' "incomprensione" !
Era tanto per abbreviare un po'...
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 12:47   #15
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Ora che l'arcano è svelato, cosa vuoi sapere? Come ottenere la latenza di una fork?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 13:43   #16
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
Re: [C] Misurare tempo di esecuzione

Quello che vorrei sapere e' semplicemente quello che ho detto fin dall'inizio:

Quote:
Originariamente inviato da Ed_Bunker
.....
Ma, a questo punto, una fork() e' gia' stata eseguita ed un nuovo processo e' in exec . No ?!? E quindi, anche se la richiesta avesse un tempo di exec. inferiore ad una fork() che vantaggio ne trarrei ?!?! Sono assai confusetto...

thks
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 13:55   #17
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Una fork è implementata in maniera molto veloce, però ci sono un paio di cose che devi considerare:

- Normalmente dopo la syscall fork, il controllo passa al processo figlio. Non puoi però fare assunzioni su questo, in quanto potrebbe benissimo variare da kernel a kernel.

- La fork è veloce perché è efficientemente implementata tramite la tecnica COW; la semplice latenza della chiamata fork però non è il solo overhead che devi considerare, ma anche la tecnica COW che viene utilizzata. Ti spiego in due parole di cosa si tratta:
COW -- copy-on-write
Per rendere meno pesante per il sistema il fork di un processo, le pagine di memoria inizialmente _non_ sono duplicate: ne viene conservata una sola copia, però nello stato di sola lettura. Quando uno dei due processi tenta di scrivere su una pagina di memoria, essendo questa in sola lettura il kernel genera una eccezione di accesso, e solo allora duplica fisicamente la pagina interessata (e solo quella pagina).
La tecnica COW consente quindi di effettuare fork molto veloci, e di risparmiare molto sulla memoria utilizzata (le pagine che vengono solo lette, come librerie ecc., non verranno mai duplicate!), al prezzo però di qualche minor page fault in più.

Ciò detto, non so se nel tuo caso la fork introduca un overhead accettabile o meno: a meno che non stai facendo una applicazione veramente time-critical, non noterai il suo impatto. Sicuramente se fai dell'I/O su file, il costo della fork è assolutamente trascurabile.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 14:37   #18
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
Quote:
Originariamente inviato da ilsensine
Una fork è implementata in maniera molto veloce, però ci sono un paio di cose che devi considerare:

- Normalmente dopo la syscall fork, il controllo passa al processo figlio. Non puoi però fare assunzioni su questo, in quanto potrebbe benissimo variare da kernel a kernel.

- La fork è veloce perché è efficientemente implementata tramite la tecnica COW; la semplice latenza della chiamata fork però non è il solo overhead che devi considerare, ma anche la tecnica COW che viene utilizzata. Ti spiego in due parole di cosa si tratta:
COW -- copy-on-write
Per rendere meno pesante per il sistema il fork di un processo, le pagine di memoria inizialmente _non_ sono duplicate: ne viene conservata una sola copia, però nello stato di sola lettura. Quando uno dei due processi tenta di scrivere su una pagina di memoria, essendo questa in sola lettura il kernel genera una eccezione di accesso, e solo allora duplica fisicamente la pagina interessata (e solo quella pagina).
La tecnica COW consente quindi di effettuare fork molto veloci, e di risparmiare molto sulla memoria utilizzata (le pagine che vengono solo lette, come librerie ecc., non verranno mai duplicate!), al prezzo però di qualche minor page fault in più.

Ciò detto, non so se nel tuo caso la fork introduca un overhead accettabile o meno: a meno che non stai facendo una applicazione veramente time-critical, non noterai il suo impatto. Sicuramente se fai dell'I/O su file, il costo della fork è assolutamente trascurabile.
L'efficienza non e' un problema basilare nel caso di una situazione come la mia. Della tecnica COW avevo gia' letto. Era nell'ambiro di S.O.... non ricordo bene... Mi sembra che figlio e padre condividano dati fintanto che uno dei due non faccia un tentativo di aggiornamento/scrittura su essi. No ?!? Comunque, a parte questo, il fatto e':

ad ogni richiesta "devo" misurare il tempo di esecuzione della fork() ed in base a cio' decidere ?!? In tal caso la mia domanda e':
cosa ci guadagno in termini di efficienza visto che oramai una fork() e' stata eseguita e, quindi, l'eventualita' che l'operazione richiesta possa essere svolta in meno tempo di quello necessario per la fork() e' svanita ?!?
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 14:42   #19
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Ed_Bunker
ad ogni richiesta "devo" misurare il tempo di esecuzione della fork() ed in base a cio' decidere ?!? In tal caso la mia domanda e':
cosa ci guadagno in termini di efficienza visto che oramai una fork() e' stata eseguita e, quindi, l'eventualita' che l'operazione richiesta possa essere svolta in meno tempo di quello necessario per la fork() e' svanita ?!?
Non mi sembra molto fattibile. Primo, perché se la fork è stata eseguita, ormai il più è fatto. Secondo, perché dovresti trovare un modo per dire al processo figlio (che hai ormai lanciato) "fermati, annulla tutto, ci penso io". Ammesso che sei ancora in tempo a farlo, ovviamente.

C'è un qualche motivo per cui non puoi usare i thread?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2004, 15:50   #20
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9552
Quote:
Originariamente inviato da ilsensine
Non mi sembra molto fattibile. Primo, perché se la fork è stata eseguita, ormai il più è fatto. Secondo, perché dovresti trovare un modo per dire al processo figlio (che hai ormai lanciato) "fermati, annulla tutto, ci penso io". Ammesso che sei ancora in tempo a farlo, ovviamente.

C'è un qualche motivo per cui non puoi usare i thread?
Il fatto e' che il tutto riguarda un progetto per l'universita' ed i thread non sono stati materia del programma. Anche se probabilmente sarebbero la sol. ideale...
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è 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, ...
Steam Deck 2: Valve non trova ancora il ...
Il CEO di Microsoft chiede una supervisi...
Dreame T15 Pro Heat, aspira la polvere e...
Apple rilascia iOS 27, iPadOS 27 e macOS...
DDRop, l'attacco hardware da meno di 200...
LG OLED G6 55'' a 1.368€ e LG NANO 98'' ...
OpenRGB 1.0 arriva dopo tre anni: una so...
OpenAI paga centinaia di revisori per le...
Opel scarica l'adrenalina elettrica al S...
Volkswagen Mission Efficiency: Cd di 0,1...
Dreame L10s Pro Gen 3 a 179€: ottimo pre...
I Samsung Galaxy S24 ricevono la One UI ...
Google Drive, prende il via il programma...
TempGuard: la protezione di ASRock fa ci...
La prima missione orbitale del razzo spa...
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:38.


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