如何解释多核机器上boost :: timer :: cpu_timer的输出?

时间:2014-10-16 07:02:11

标签: c++ boost benchmarking cpu-time

我使用boost::timer::cpu_timer来衡量我的应用程序中某些算法的性能。示例输出如下所示:

  

Algo1持续时间:6.755457s墙,12.963683s用户+ 1.294808s系统= 14.258491s CPU(211.1%)

来自boost cpu_timer文档:

  

此程序的输出将如下所示:

5.713010s wall, 5.709637s user + 0.000000s system = 5.709637s CPU (99.9%)
     

换句话说,这个程序的运行时间为5.713010秒   通过墙上的时钟测量,操作系统对其进行充电   5.709637秒的用户CPU时间和0秒的系统CPU时间,这两者的总数为5.709637,即99.9%   挂钟时间。

我获得的值是什么意思(211.1%),是否意味着执行我的算法涉及两个以上的核心?

user CPU timesystem CPU time的含义是什么?

1 个答案:

答案 0 :(得分:2)

  

我获得的值是什么意思(211.1%),是否意味着执行我的算法涉及两个以上的核心?

这意味着程序使用的CPU时间比壁时间多两倍。要做到这一点,它必须在一段时间内至少在三个核心上运行。

  

用户CPU时间和系统CPU时间是什么意思?

用户CPU时间是CPU运行用户代码的时间。系统CPU时间是CPU运行系统代码的时间。当您调用系统函数(如从文件读取的函数)时,您将从运行的用户代码切换到正在运行的系统代码,直到该函数返回。