Измерение субсекунды прошедшего времени собственного 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 ответа:
Можно использовать функции
QueryPerformanceFrequency
иQueryPerformanceCounter
WinAPI. Пример
Ваш код полностью корректен и работает. Если вы пытаетесь определить время выполнения определенного фрагмента кода, Вы должны запустить его через цикл, как это предлагает Xymostech. Основная причина заключается в следующем:
- ваш фрагмент кода будет выполняться очень быстро. В некоторых случаях выполнение начало, фрагмент кода и конец вашего таймера - один и тот же Тик. Это приведет к тому, что
start
будет иметь то же значение, что иend
, вызываяcpu_time
равняется нулю.Однако есть и дополнительная выгода способности вычислять среднее время выполнения за много итераций