Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么boost::auto_cpu_timer显示>;100%利用率?_C++_Boost - Fatal编程技术网

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

C++ 为什么boost::auto_cpu_timer显示>;100%利用率?,c++,boost,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); } 标准:向量hv(1000*100

要进行定时比较,我想使用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);
}
标准:向量hv(1000*1000); std::generate(hv.begin(),hv.end(),rand); { boost::timer::auto\u cpu\u timer t; std::transform(hv.begin()、hv.end()、hv.begin()、sqrtf); } 令人困惑的是boost::timer报告了以下内容:

0.01157s墙壁,0.020000s用户+0.000000s系统=0.020000s CPU(172.8%)


我的用户空间时间怎么能超过墙时间

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

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


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

这几乎就是main()的全部内容。在某些平台上使用旧的boost定时器实现时,这确实是一个已知的事实。“虽然纳秒_类型能够表示一纳秒,但常用操作系统计时器的实际分辨率可能要低得多。对于大约2010年的桌面系统上的挂钟时间,分辨率通常不超过一微秒。对于用户和系统时间,Windows上的典型分辨率为15毫秒,而Windows上的分辨率为10毫秒。”n POSIX。“