Niedawno zdecydowałem, że muszę zmienić czas używania milisekund na mikrosekundy dla mojej klasy Timer, a po pewnych badaniach zdecydowałem, że QueryPerformanceCounter jest prawdopodobnie najbezpieczniejszym zakładem. (Ostrzeżenie na Boost::Posix
, że może nie działać na Win32 API, odstraszyło mnie trochę). Jednak nie jestem pewien, jak to wdrożyć.Jak korzystać z QueryPerformanceCounter?
To, co robię, to wywołanie dowolnej funkcji esque, której używam, i przypisanie jej do zmiennej czasowej Timera. Następnie, aby znaleźć ilość czasu, po prostu odejmuję wartość zwracaną przez funkcję z startingTicks
, a po zresetowaniu licznika po prostu wywołuję funkcję ponownie i przypisuję do niej parametr startTicks. Niestety, z kodu, który widziałem, nie jest tak prosty jak zwykłe wywoływanie QueryPerformanceCounter()
i nie jestem pewien, co mam przekazać jako jego argument.
Mam podjętej kod urywki Ramonster i zamieniłem ich w bibliotekę tutaj: https://gist.github.com/1153062 dla obserwujących. – rogerdpack
Niedawno zaktualizowaliśmy dokumentację QueryPerformanceCounter i dodaliśmy dodatkowe informacje dotyczące właściwego użycia i odpowiedzi na często zadawane pytania. Zaktualizowaną dokumentację można znaleźć tutaj: http://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx –
, tak jak wspomnieć o [__rdtsc] (https: // msdn.microsoft.com/en-us/library/twchhe95.aspx), to właśnie używa QueryPerformanceCounter. –