Fan*_*Fox 1 c++ compiler-construction multithreading for-loop compiler-optimization
我想在工作的新计算机上强调处理器.我认为一个好方法是用每个处理器为这个函数打开一个线程:
void soStressful() {
int j = 0;
for (int i = 0; i < 10000; ++i) {
j += i;
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,编译器将此代码移除.(因为无论计算的复杂程度或i的大小,程序都会立即运行,并且我们也记录了很少的CPU使用率.
如何停止编译器编译此代码?
您的功能不带输入,也不提供输出.所以编译器很容易发现它什么都不做.
我建议在你的循环中修改一个全局变量,最好声明为volatile.然后编译器将无法假定它未被使用.
此外,如果处理器速度很快,则需要超过10000次迭代循环才能获得任何有意义的CPU使用率.
你可能想看看那里的一些基准测试代码 - dhrystone就是其中之一.
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |