|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Cronometrare programma multithreaded
Ciao a tutti!
Ho sviluppato un programmino che esegue un determinato algoritmo e poi mi stampa a schermo i risultati. Questo algoritmo prende in input un array molto grande (di lunghezza 262000) e mi restituisce un array calcolato secondo l'algoritmo (non lo scrivo perché è un po' lungo). Siccome uso due thread che processano uno la prima metà dell'array e uno la seconda metà, ho bisogno di capire il tempo impiegato da ciascun thread. Ho utilizzato la clock_gettime() con l'argomento CLOCK_MONOTONIC e poi quando terminano i due thread sommo i tempi di esecuzione di entrambi per avere il tempo totale. Il problema è che alla prima esecuzione (cioè appena dopo aver compilato) il timer mi restituisce 6 sec, mentre dalla seconda esecuzione in poi sempre 8 secondi. E' una cosa normale? Anche perché ho sviluppato anche la versione monothread e quella impiega sempre 6,97 secondi ad ogni esecuzione (lì però ho usato clock() per cronometrare l'algoritmo). P.S. : Entrambe le versioni le ho compilate con il flag di ottimizzazione O3.
__________________
Intel Core 2 Duo Q6600 G0, 4GB DDR2-800 A-Data, ABIT AB9, XFX GeForce 8800 GTS 320MB, Sound Blaster X-Fi Extreme Music, Seagate 320GB SATA2, Maxtor 80GB ATA-133, Western Digital 1TB SATA2 Ho concluso affari positivamente con: scandalf, Sinclair63, mstella, checcodag, wilson Ultima modifica di Manugal : 26-06-2010 alle 14:52. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
non saprei cosa può generare questo errore, dato che a ogni escuzione la situazione dovrebbe esere la medesima trascurando l'impegno per altri processi....
Se sei come penso (e spero l'output di time è semplice riporta il tempo di esecuzione del programma: Codice:
root@saturn:~# time real 0m0.000s user 0m0.000s sys 0m0.000s Ultima modifica di Teo@Unix : 26-06-2010 alle 15:26. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Il comando time già l'avevo utilizzato e mi ritornava questo output.
Codice:
real 0m14.253s user 0m7.820s sys 0m0.680s
__________________
Intel Core 2 Duo Q6600 G0, 4GB DDR2-800 A-Data, ABIT AB9, XFX GeForce 8800 GTS 320MB, Sound Blaster X-Fi Extreme Music, Seagate 320GB SATA2, Maxtor 80GB ATA-133, Western Digital 1TB SATA2 Ho concluso affari positivamente con: scandalf, Sinclair63, mstella, checcodag, wilson |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:51.



















