Самый дешевый способ генерировать метки времени под окнами - PullRequest
0 голосов
/ 18 ноября 2010

Какой самый быстрый способ создать временную метку для множества событий в Windows?
Разрешение миллисекунд в порядке.

Очевидными вариантами являются GetLocalTime (), GetTickCount () или даже QueryPerformanceCounter ().
Какой из этих (или некоторых других кандидатов) требует наименьшего количества тактов?

Ответы [ 2 ]

1 голос
/ 18 ноября 2010

QueryPerformanceCounter () и GetTickCount () получат количество времени, прошедшего с момента запуска машины, и не дадут метку времени.Теоретически вы можете сохранить время запуска машины и использовать его в качестве смещения для получения текущего времени, однако я не уверен, насколько оно будет точным.

Если точность в миллисекундах не требуетсяВы также можете посмотреть на функцию time () и ее варианты.Это даст вам время, прошедшее с эпохи в секундах.Это должно быть довольно быстро и может храниться в исходном формате до тех пор, пока вам не понадобится отображать или манипулировать им.

Если производительность является вашей самой большой проблемой, вам следует профилировать каждую из предложенных вами альтернатив (скорее всего, сQueryPerformanceCounter), и пусть это решит за вас.Я также думаю, что производительность функции отметки времени, вероятно, не имеет большого значения в большинстве серьезных приложений, поэтому, возможно, сначала следует сосредоточиться на более сложных частях вашего приложения.

0 голосов
/ 18 ноября 2010

Самый быстрый способ - использовать инструкцию x86 RDTSC . У него есть несколько недостатков, поэтому, пожалуйста, прочитайте документацию. Если вам не нравится встроенная сборка, для VS есть встроенная функция: __rdtsc()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...