QueryPerformanceCounter и странные результаты

Я хочу использовать PerformanceCounter, чтобы измерить, сколько времени мне нужно для какой-либо операции.

Я не знаю много о PerformanceCounter и C ++ в целом. Я нашел некоторый код здесь:

Как использовать QueryPerformanceCounter?

Я получаю странные результаты с этим. Вот моя попытка:

#include <Windows.h>

// ...

double PCFreq = 0.0;
__int64 CounterStart = 0;

void StartCounter()
{
LARGE_INTEGER li;
if (!QueryPerformanceFrequency(&li))
printf("QueryPerformanceFrequency failed!\n");

PCFreq = double(li.QuadPart) / 1000.0;

//printf("Performance counter resolution: %f", PCFreq);

QueryPerformanceCounter(&li);
CounterStart = li.QuadPart;
}

double GetCounter()
{
LARGE_INTEGER li;
QueryPerformanceCounter(&li);
return double(li.QuadPart - CounterStart) / PCFreq;
}

int main(int argc, const char** argv) {
while (true) {
StartCounter();
Sleep(1000); // just a test
printf("Query frame: %d\n", GetCounter());

// ...
}
}

И вот мой странный результат с отрицательными числами:

введите описание изображения здесь

Что не так с моим кодом?

0

Решение

Вы печатаете двойную как поплавок, используйте %f:

printf("Query frame: %f\n", GetCounter());
1

Другие решения


По вопросам рекламы [email protected]