Использование процессора — Измерение истекшего времени в секундах нативного C ++ на платформе Windows

Что было бы хорошим способом измерить истекшее время с точностью до секунды собственного кода C ++ на платформе Windows (я работаю над Windows Vista, Visual Studio 2010)

Я пытался использовать

#include <ctime>

int main()
{
clock_t start = clock();
... some code
clock_t end = clock();
double cpu_time = static_cast<double>(end - start)/CLOCKS_PER_SEC;
}

но cpu_time всегда 0,

Спасибо !

2

Решение

Вы можете использовать QueryPerformanceFrequency а также QueryPerformanceCounter WinAPI функции. пример

2

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

Ваш код действителен и работает. Если вы пытаетесь рассчитать время выполнения определенного фрагмента кода, вы должны запустить его через цикл, как это предлагает Xymostech. Основная причина:

  • Ваш фрагмент кода будет выполняться очень быстро. В некоторых случаях выполнение
    начало, фрагмент кода и конец вашего таймера совпадают.
    Это приведет к start держа такое же значение, как end, вызывая
    cpu_time равным нулю.

тем не менее, есть еще одно преимущество — возможность рассчитывать среднее время выполнения за многократные итерации.

0

По вопросам рекламы [email protected]