为什么boost :: auto_cpu_timer显示> 100%利用率?

时间:2015-04-04 06:09:34

标签: c++ boost

为了进行时序比较,我想使用boost :: timer。这是一个执行一些向量操作的简单测试用例:

std::vector<float> hv( 1000*1000 );
std::generate(hv.begin(), hv.end(), rand);
{
    boost::timer::auto_cpu_timer t;
    std::transform(hv.begin(), hv.end(), hv.begin(), sqrtf);
}

令人困惑的部分是boost :: timer报告:

  

0.011577s wall,0.020000s user + 0.000000s system = 0.020000s CPU(172.8%)

我的用户空间时间如何超过挂号时间?

2 个答案:

答案 0 :(得分:0)

最有可能的情况是,如果使用线程,它将显示在进程中所有线程上花费的CPU时间

答案 1 :(得分:0)

通过添加更多测试代码,用户空间时间将跳至0.03秒,然后升至0.04秒

因此看起来用户空间持续时间仅精确到10毫秒内,导致CPU利用率计算错误。