Измерение точного времени выполнения в 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() в начале и вызовите его снова в конце, и возьмите разницу между двумя значениями.

Другие вопросы по тегам