Desidero sapere cosa misura effettivamente l'API di Windows GetTickCount()
? Misura il tempo dal momento in cui viene premuto il pulsante di accensione del sistema? Misura anche il tempo impiegato dai bootloader o dal BIOS per caricare? Sto provando a misurare il tempo di avvio su Windows 7.Che cosa misura effettivamente GetTickCount()?
risposta
Poiché the official documentation non specifica, è possibile solo supporre che il momento preciso durante l'avvio non sia realmente definito e che potrebbe funzionare in modo diverso su diverse versioni di Windows. Ma considera che con la virtualizzazione e l'emulazione "poiché il pulsante di accensione è stato premuto" sarebbe privo di significato. La migliore definizione coerente che si possa sperare sarebbe il momento in cui Windows inizia a servire interruzioni - il primo momento in cui l'orologio di sistema è disponibile.
GetTickCount() è destinata principalmente per misurare breve tempointervalli. Il punto zero di GTC è fondamentalmente indefinito.
Inoltre, da quello che ho visto, GTC corrisponde molto strettamente al valore di QueryPerformanceCounter() * 1000/QueryPerformanceFrequency()
, quindi immagino sia implementato sulle macchine che supportano QPC e QPF.
Ora ci sono due opzioni comuni per determinare il tempo di attività di Windows.
query il contatore
\\.\System\System Up Time
prestazioni. Attenti allo caveats on non-English boxes. Inoltre, in base ai miei test, questo metodo semplicemente non funziona sotto Wow64, conPdhCollectQueryData
restituendo NO_DATA.Eseguire una query WMI per il valore
LastBootUpTime
daWin32_OperatingSystem table
. Questo è pesante, quindi in genere si desidera ottenere e memorizzarlo nella cache. È anche fragile in quanto WMI può rompersi in modi misteriosi. Infine, ho visto l'utilità standardsysteminfo
basata sul tempo di avvio non valido di WMI, disattivato per più di 1 giorno.
Un'altra opzione è quella di utilizzare GetSystemTimes
per ottenere folli volte/kernel/utente di tutte le CPU, li tally up, dividere per il numero di CPU e prendere che come approssimazione del tempo di attività. Avendo sperimentato questo, trovo che sia piuttosto impreciso e produca un tempo di funzionamento superiore al normale.
Quindi, tutto sommato, non esiste un modo semplice e leggero per determinare l'avvio o il tempo di attività su Windows. Niente di paragonabile a leggere /proc/uptime
su * nix. Sorpresa sorpresa.
Non si dovrebbe considerare come il tempo "da" qualsiasi cosa. Usalo solo come una sorgente di clock relativa. In altre parole, chiama una volta il numero GetTickCount
, poi fai qualcosa, quindi richiamalo di nuovo, quindi sottrai. Non utilizzare il valore assoluto del conteggio delle zecche.
L'ora di avvio precisa non è specificata e, in caso di build di debug di Windows, il "tempo di avvio" è impostato artificialmente su 49,7 giorni nel passato per esporre i bug di rollover del timer.
- 1. Che cosa misura esattamente l'accelerometro iPhone?
- 2. Che cosa sono kAudioSessionProperty_InputSources effettivamente utili?
- 3. Che cosa fa effettivamente ifstream :: rdbuf()?
- 4. Che cosa deve fare effettivamente OOttimizeForNetworkUse?
- 5. Cosa fa effettivamente Process.Dispose()?
- 6. Cosa fa effettivamente "__COMPAT_LAYER"?
- 7. Cosa restituisce effettivamente jquery $?
- 8. Cosa fa effettivamente session_register_shutdown?
- 9. Cosa fa effettivamente addChildViewController?
- 10. Cosa fa mysqli_store_result() Effettivamente?
- 11. Cosa fa effettivamente XCode 'Clean'?
- 12. Cosa sta effettivamente facendo git quando dice che "risolve delta"?
- 13. Che cosa effettivamente gestisce il disegno dello sfondo di Windows?
- 14. Che cosa fa effettivamente la funzione $ in haskell?
- 15. Che cosa significa rake db: test: preparare effettivamente fare?
- 16. In Scipy's ConvexHull, cosa misura "area"?
- 17. Che cos'è NSString's isLike: effettivamente?
- 18. Apache Camel: cosa viene effettivamente instradato?
- 19. Cosa JVM bandiera CMSClassUnloadingEnabled effettivamente fare?
- 20. Cosa causa effettivamente la chiamata di Session_Start?
- 21. cosa fa effettivamente l'istruzione di assemblaggio 'db'?
- 22. Cosa fa effettivamente il metodo Dns.GetHostEntry (String)?
- 23. Cosa fa effettivamente `python setup.py check`?
- 24. Nome metodo vuoto, cosa fa effettivamente?
- 25. Cosa GCC __attribute __ ((modalità (XX)) effettivamente fare
- 26. Cosa fanno effettivamente i file pdb?
- 27. Math.floor (Math.random()) cosa fa effettivamente +1?
- 28. Cosa è effettivamente animabile in UILabel?
- 29. Cosa hanno effettivamente fatto i glutswapbuffer?
- 30. Cosa contiene effettivamente il file eseguibile?
'GetTickCount' di quale sistema ???? http://en.wikipedia.org/wiki/GetTickCount – leppie
Presumo che si tratti di Windows, quindi questo potrebbe aiutare: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724408%28v= vs.85% 29.aspx – kainaw
Ottieni un cronometro e risolvilo da solo. È banalmente facile fare l'esperimento. –