Способ получения точных измерений времени - счетчики производительности.
В Windows вы можете использовать QueryPerformanceCounter()
и QueryPerformanceFrequency()
:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644904%28v=vs.85%29.aspx
РЕДАКТИРОВАТЬ: Вот простой пример, который измеряет время, необходимое для суммирования от 0 до 1000000000:
LARGE_INTEGER frequency;
LARGE_INTEGER start;
LARGE_INTEGER end;
// Get the frequency
QueryPerformanceFrequency(&frequency);
// Start timer
QueryPerformanceCounter(&start);
// Do some work
__int64 sum = 0;
int c;
for (c = 0; c < 1000000000; c++){
sum += c;
}
printf("sum = %lld\n",sum);
// End timer
QueryPerformanceCounter(&end);
// Print Difference
double duration = (double)(end.QuadPart - start.QuadPart) / frequency.QuadPart;
printf("Seconds = %f\n",duration);
Выход:
sum = 499999999500000000
Seconds = 0.659352