boost — Получите время в наносекундах с C ++ на окнах без хронографа

Возможный дубликат:
Windows C ++ наносекундная синхронизация?

Я хочу измерить время выполнения функции. Но я использую старый C ++ (я имею в виду, я не могу использовать хроно), и я нахожусь на окнах. Я не могу найти фрагмент кода, который делает то, что мне нужно. Пожалуйста помоги.

0

Решение

В Windows у вас есть возможность использовать высокопроизводительный счетчик чтобы получить высокое разрешение времени. Это должно поддерживаться даже на очень старых установках Windows и старых компиляторах.

1

Другие решения

Взгляни на QueryPerformanceCounter
Прошедшее время можно получить в тиках, и вы знаете количество тиков в секунду.
Это может быть ненадежным на больших интервалах, потому что скорость процессора может измениться.

0

Вы можете использовать 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);
}
}
}
0
По вопросам рекламы [email protected]