Возможный дубликат:
Windows C ++ наносекундная синхронизация?
Я хочу измерить время выполнения функции. Но я использую старый C ++ (я имею в виду, я не могу использовать хроно), и я нахожусь на окнах. Я не могу найти фрагмент кода, который делает то, что мне нужно. Пожалуйста помоги.
В Windows у вас есть возможность использовать высокопроизводительный счетчик чтобы получить высокое разрешение времени. Это должно поддерживаться даже на очень старых установках Windows и старых компиляторах.
Взгляни на QueryPerformanceCounter
Прошедшее время можно получить в тиках, и вы знаете количество тиков в секунду.
Это может быть ненадежным на больших интервалах, потому что скорость процессора может измениться.
Вы можете использовать QueryPerformanceCounter
LARGE_INTEGER liFrequency = {0};
// Get the Frequency
if(QueryPerformanceFrequency(&liFrequency))
{
// Start Timing
LARGE_INTEGER liStart = {0};
if(QueryPerformanceCounter(&liStart))
{
// Do Stuff
// Get Time spent...
LARGE_INTEGER liStop = {0};
if(QueryPerformanceCounter(&liStop))
{
LONGLONG llMilliseconds = (LONGLONG)((liStop.QuadPart - liStart.QuadPart) * 1000.0 / liFrequency.QuadPart);
printf("time ellapsed ms:%lld\n", llMilliseconds);
}
}
}