15

如果我有以下代码

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

t 将等于运行程序的滴答数。这和CPU时间一样吗?有没有其他方法可以测量 C++ 中的 CPU 时间?

操作系统——Debian GNU/Linux 我愿意接受任何可行的方法。我想比较两种算法的 CPU 时间。

4

3 回答 3

21

clock()指定用于测量 CPU 时间,但并非所有实现都这样做。特别是微软在 VS 中的实现不会在多个线程运行时计算额外的时间,或者在程序的线程处于睡眠/等待状态时计算更少的时间。

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

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

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

于 2013-11-23T20:51:58.277 回答
8

如何测量使用的 CPU 时间?

#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

于 2017-05-05T08:53:56.690 回答
0

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

于 2013-11-23T20:53:14.027 回答