Измерение точного времени выполнения в C
У меня есть задание, которое просит меня измерить точное время выполнения нескольких программ. Я не уверен, как это сделать, но я думаю, что это как-то связано с time_start(); как я видел это в интернете. Что делает time_start(); значит, и как я могу использовать его для измерения времени выполнения? Я использую Windows 7 и Dev C++ Compiler
Спасибо
1 ответ
"Точное" измерение времени требует использования определенных функций операционной системы.
Под Windows вы, вероятно, хотите использовать следующую функцию: ( MSDN)
BOOL WINAPI QueryPerformanceCounter(_Out_ LARGE_INTEGER *lpPerformanceCount);
Эта функция дает вам счетчик тиков с высоким разрешением с момента запуска вашего приложения. Интервал между двумя тактами зависит от вашего процессора и может быть получен с помощью следующей функции: ( MSDN)
BOOL WINAPI QueryPerformanceFrequency(_Out_ LARGE_INTEGER *lpFrequency);
Итак, вот фрагмент кода, чтобы получить точное значение текущего времени в секундах:
double GetCurTime()
{
LARGE_INTEGER CounterFreq;
QueryPerformanceFrequency(&CounterFreq);
LARGE_INTEGER Counter;
QueryPerformanceCounter(&Counter);
return (double)Counter.QuadPart / (double)CounterFreq.QuadPart;
}
Чтобы сделать измерение времени, позвоните GetCurTime()
в начале и вызовите его снова в конце, и возьмите разницу между двумя значениями.