我使用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 time
和system CPU time
的含义是什么?
答案 0 :(得分:2)
我获得的值是什么意思(211.1%),是否意味着执行我的算法涉及两个以上的核心?
这意味着程序使用的CPU时间比壁时间多两倍。要做到这一点,它必须在一段时间内至少在三个核心上运行。
用户CPU时间和系统CPU时间是什么意思?
用户CPU时间是CPU运行用户代码的时间。系统CPU时间是CPU运行系统代码的时间。当您调用系统函数(如从文件读取的函数)时,您将从运行的用户代码切换到正在运行的系统代码,直到该函数返回。