2009-10-13 12 views

risposta

3

clock

A C++. Restituisce il numero di tick della CPU dall'avvio dell'applicazione. Per convertire questo in secondi dividerlo per CLOCKS_PER_SEC.

GetTickCount

funzione API Win32. Restituisce il numero di millisecondi da quando è stato avviato il sistema.

QueryPerformanceCounter

funzione API Win32. Il contatore delle prestazioni è un contatore ad alta risoluzione che aumenta nel tempo. Per convertire questo in secondi dividerlo per QueryPerformanceFrequency.

7

No, non hanno precisione millisecondo. clock e GetTickCount hanno una precisione compresa tra 4 e 15 millisecondi sulla maggior parte dei sistemi. QueryPerformanceCounter ha una precisione compresa tra il microsecondo e il nanosecondo.

clock è un wrapper intorno a GetTickCount se si utilizza la libreria di runtime C di Microsoft, che, se si sta utilizzando un compilatore MS, probabilmente lo si è. GetTickCount restituisce un valore in millisecondi, ma non aumenta di un millisecondo dopo che è trascorso un millisecondo. Viene incrementato solo quando si verifica un interrupt dell'orologio di sistema, che va da quattro a 15 millisecondi, di solito è di circa 15 ms, ma può essere modificato dalle applicazioni. Ciò influisce sull'intero computer: influisce sulla programmazione dei thread e il sovraccarico di interruzioni più frequenti lascia anche meno tempo di CPU per l'esecuzione del codice del programma, quindi non farlo a meno che non ne abbia davvero bisogno. Se il tuo computer spunta più frequentemente di 15 ms, alcune altre applicazioni hanno modificato la frequenza degli interrupt di tick.

QueryPerformanceCounter utilizza qualsiasi timer ad alta risoluzione disponibile sul sistema. In passato, di solito si basava sul conteggio interno del processore dei cicli di clock, quindi conteggiava a 2-3GHz o circa 0,5ns. Sfortunatamente alcuni processori hanno variato la velocità con cui il contatore sarebbe andato a segno quando era in stati di bassa potenza, e nei sistemi multi-CPU (cioè con più socket del processore) si avrebbero problemi se le CPU non avessero la stessa velocità. Windows ora utilizza altre fonti più affidabili, ma non hanno la stessa risoluzione del processore. QueryPerformanceFrequency ti dice quante zecche si verificano in un secondo. Per ottenere millisecondi, moltiplicare la differenza di campioni QPC per 1000 e dividere per il risultato di QueryPerformanceFrequency.

Problemi correlati