用c ++测量CPU时间

时间:2013-11-23 20:47:59

标签: c++ time runtime cpu-usage cpu-time

如果我有以下代码

clock_t t;
t = clock();
//algorithm
t = clock() - t;

t将等于运行程序的刻度数。这与CPU时间相同吗?有没有其他方法可以用C ++来衡量CPU时间?

OS - Debian GNU / Linux 我愿意接受任何可行的事情。我想比较两种算法的CPU时间。

3 个答案:

答案 0 :(得分:11)

指定

clock()来测量CPU时间,但并非所有实现都这样做。特别是微软在VS中的实现不计算多个线程运行时的额外时间,或者计算程序线程休眠/等待的时间减少。

另请注意,clock()应该测量整个程序使用的CPU时间,因此,虽然将测量//algorithm中多个线程使用的CPU时间,但其他线程不属于{{1也被计算在内。

//algorithm是标准中指定的唯一一种测量CPU时间的方法,但是当然还有其他一些特定于平台的方法来测量CPU时间。

clock()不包括用于测量CPU时间的任何时钟。它只有一个与系统时间同步的时钟,一个相对于实时以稳定速率前进的时钟,以及一个“高分辨率”但不一定能测量CPU时间的时钟。

答案 1 :(得分:2)

如何使用cpu-time?

#include <ctime>

std::clock_t c_start = std::clock();
// your_algorithm
std::clock_t c_end = std::clock();

long_double time_elapsed_ms = 1000.0 * (c_end-c_start) / CLOCKS_PER_SEC;
std::cout << "CPU time used: " << time_elapsed_ms << " ms\n";

当然,如果你以秒为单位显示时间:

std::cout << "CPU time used: " << time_elapsed_ms / 1000.0 << " s\n";

来源:http://en.cppreference.com/w/cpp/chrono/c/clock

答案 2 :(得分:-1)

C ++有一个计时库。见http://en.cppreference.com/w/cpp/chrono。还有通常依赖于平台的方法来获得高分辨率的计时器(显然因平台而异)。