Tra le funzioni di temporizzazione, time
, clock
getrusage
, clock_gettime
, gettimeofday
e timespec_get
, voglio capire chiaramente come la loro applicazione e quali sono i loro valori di ritorno in modo da sapere in quale situazione devo usarli.Misurare il tempo in Linux - tempo vs orologio vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
In primo luogo abbiamo bisogno di classificare funzioni che restituiscono muro-clock valori confronta con funzioni che restituiscono processo o thread valori. gettimeofday
restituisce il valore di orologio a muro, clock_gettime
restituisce il valore di orologio a parete o il valore di processo o i valori di thread a seconda del parametro Clock
passato ad esso. getrusage
e clock
valori di processo di ritorno.
Quindi la seconda domanda riguarda l'implementazione di queste funzioni e, di conseguenza, la loro accuratezza. Quale meccanismo hardware o software utilizza queste funzioni.
Sembra che getrusage
utilizzi solo il segno di spunta del kernel (in genere lungo 1 ms) e di conseguenza non può essere più preciso del ms. È giusto? Quindi la funzione getimeofday
sembra utilizzare l'hardware sottostante più preciso disponibile. Di conseguenza, la precisione è solitamente il microsecondo (non può essere più a causa dell'API) sull'hardware recente. E a proposito di clock
, la pagina man parla di "approssimazione", cosa significa? Che dire di clock_gettime
, l'API è in nanosecondi, vuol dire che è in grado di essere così preciso se l'hardware sottostante lo consente? Che dire della monotonicità?
Esistono altre funzioni?
ora avete 18 punti rep ;-) –
Mac OS X non ha 'clock_gettime', da qui l'uso di [ 'gettimeofday()'] (http://www.songho.ca/misc/timer/timer.html) è un po 'più versatile di 'clock_gettime()' – bobobobo
@bobobobo Sono d'accordo che OS X non ha clock_gettime (), tuttavia gettimeofday() purtroppo misura l'ora dell'orologio a muro. Ho aggiornato il mio post per fornire queste informazioni. Se la precisione di ms è sufficiente, allora suggerisco getrusage() come miglior orologio da usare come timer. –