Как получить время выполнения функции в C++
Я попробовал некоторые коды, прибегая к помощи:
clock_t start, end;
start = clock();
//CODES GOES HERE
end = clock();
std::cout << end - start <<"\n";
std::cout << (double) (end-start)/ CLOCKS_PER_SEC;
но прошедшее время всегда было равно 0, даже если
std::cout << (double) (end-start)/ (CLOCKS_PER_SEC/1000.0 );
Не знаю почему, но когда я получаю подобное в Java: getCurrentTimeMillis(), это работает хорошо. Я хочу, чтобы он показывал миллисекунды, так как, возможно, компьютер так быстро вычисляет.
3 ответа
Я не думаю, что это гарантировано, что clock
имеет достаточно высокое разрешение для профилирования вашей функции. Если вы хотите узнать, как быстро выполняется функция, вам следует запустить ее несколько раз, а не один раз, измерить общее время, которое требуется, и взять среднее значение.
#include <boost/progress.hpp>
int main()
{
boost::progress_timer timer;
// code to time goes here
}
Это распечатает время, необходимое для запуска main. Вы можете поместить свой код в области видимости на несколько частей, т.е. { boost::progress_timer timer; ... }
,
Этот вопрос чем-то похож на ваш: синхронизация функции в программе на C++, работающей в Linux
Посмотрите на этот ответ!