Измерение субсекунды прошедшего времени собственного C++ на платформе Windows


Что было бы хорошим способом измерить субсекундное затраченное время собственного кода C++ на платформе Windows (я работаю на Windows Vista, Visual Studio 2010)

Я пробовал использовать

#include <ctime>

int main()
{    
    clock_t start = clock();
    ... some code
    clock_t end = clock();
    double cpu_time = static_cast<double>(end - start)/CLOCKS_PER_SEC;
}

Но cpu_time Всегда 0.

Спасибо !

2 2

2 ответа:

Можно использовать функции QueryPerformanceFrequency и QueryPerformanceCounter WinAPI. Пример

Ваш код полностью корректен и работает. Если вы пытаетесь определить время выполнения определенного фрагмента кода, Вы должны запустить его через цикл, как это предлагает Xymostech. Основная причина заключается в следующем:

  • ваш фрагмент кода будет выполняться очень быстро. В некоторых случаях выполнение начало, фрагмент кода и конец вашего таймера - один и тот же Тик. Это приведет к тому, что start будет иметь то же значение, что и end, вызывая cpu_time равняется нулю.

Однако есть и дополнительная выгода способности вычислять среднее время выполнения за много итераций