2013-07-19 3 views
-2

У меня есть задание, которое просит меня измерить точное время выполнения нескольких программ. Я не уверен, как это сделать, но я думаю, что это имеет какое-то отношение к time_start(); как я видел это в Интернете. Что делает time_start(); и как его использовать для измерения времени выполнения? Я использую Windows 7, и Dev C++ CompilerИзмерение точного времени выполнения в C

Спасибо

+2

Предположительно, кто установить задание дал вам эту информацию ... –

+0

Дублированный: http://stackoverflow.com/questions/5248915/execution-time-of-c-program Кроме того, Google и StackOverflow являются вашими друзьями. ;) – jrd1

ответ

2

«Точные» измерения времени требует, чтобы использовать специфические функции операционной системы.

В Windows, вы proably хотите использовать следующую функцию: (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() в начале и снова вызовите его в конце и воспользуйтесь разницей между двумя значениями.

+0

Также обратите внимание, что вы можете получить «PerformanceFrequency» в начале вашей программы и сохранить значение, так как оно никогда не изменяется во время выполнения. Таким образом, вы можете уменьшить эту функцию до одного системного вызова вместо двух. – Benlitz

+1

Спасибо большое :) –

Смежные вопросы