Qt ha QElapsedTimer
che supporta la misurazione fino a nanosecondi. Non posso testimoniare quanto sia accurato, IIRC utilizza diverse implementazioni su piattaforme diverse. Purtroppo è C++, che potrebbe non essere adatto a te. Inoltre:
Su piattaforme che non forniscono una risoluzione di nanosecondi, il valore restituito sarà la migliore stima disponibile.
La funzione clock()
va bene per le misurazioni approssimative, ma funziona nell'intervallo del millisecondo. Contrariamente al suo nome, non penso che funzioni negli orologi della CPU, poiché le frequenze di clock dei processori moderni possono variare parecchio, rendendo impossibile determinare con precisione il tempo reale affidandosi esclusivamente agli orologi della CPU. IMO questo concetto risale ai giorni in cui le frequenze della CPU erano costanti, non esisteva alcuna gestione energetica, nessun overclocking automatico "turbo boost" o altro.
EDIT: Anche questo (time.h):
int clock_gettime(clockid_t clk_id, struct timespec *tp);
... and the target struct...
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
... and the clock options...
CLOCK_REALTIME
System-wide realtime clock. Setting this clock requires appropriate privileges.
CLOCK_MONOTONIC
Clock that cannot be set and represents monotonic time since some unspecified starting point.
CLOCK_PROCESS_CPUTIME_ID
High-resolution per-process timer from the CPU.
CLOCK_THREAD_CPUTIME_ID
Thread-specific CPU-time clock.
Penso letto: 'difftime (,)' –
possibile duplicato [Ottenere l'ora corrente in millisecondi] (http://stackoverflow.com/questions/3756323/getting-the-current-time -in-millisecondi) –
duplicato di http://stackoverflow.com/questions/6749621/high-resolution-timer-in-linux e molte altre domande qui –