Недавно я решил, что мне нужно перейти от использования миллисекунд к микросекундам для моего класса Timer, и после некоторых исследований я решил, что QueryPerformanceCounter - это, наверное, моя самая безопасная ставка. (Предупреждение о Boost::Posix
о том, что он может не работать в Win32 API, немного отбросил меня). Однако я не уверен, как его реализовать.Как использовать QueryPerformanceCounter?
Что я делаю - это вызов функции GetTicks()
esque, которую я использую и назначаю ее переменной Timer. Затем, чтобы найти количество пройденного времени, я просто вычитаю возвращаемое значение функции из startingTicks
, а когда я сброшу таймер, я просто снова вызову функцию и назначу для нее startTicks. К сожалению, из кода, который я видел, не так просто, как просто позвонить QueryPerformanceCounter()
, и я не уверен, что я должен передать в качестве аргумента.
Я взял фрагменты кода Ramonster и превратили их в библиотеку здесь: https://gist.github.com/1153062 для последователей. – rogerdpack
Недавно мы обновили документацию для QueryPerformanceCounter и добавили дополнительную информацию для правильного использования и ответы на часто задаваемые вопросы. Вы можете найти обновленную документацию здесь http://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx –
как раз упомянуть [__rdtsc] (https: // msdn.microsoft.com/en-us/library/twchhe95.aspx), это то, что использует QueryPerformanceCounter. –