Ann*_*inn 5 c++ optimization visual-studio-2010
我想介绍一系列的matrice操作,以了解他们将花多少时间.(当我想起CPU可以通过指令咀嚼的速度是多么愚蠢时,我更不倾向于考虑优化)
for(int n = 0; n < times; ++n){
// scrambled to miss the cache on purpose
matrix[ rand()%matrixLen ] * matrix[ rand()%matrixLen ];
}
Run Code Online (Sandbox Code Playgroud)
我的编译器不断优化这个表达式.有没有办法让它实际执行此代码,同时仍然保留所有其他优化?
生成一个成本低廉但技术上依赖于所有这些的结果。
例如,将它们全部相加并提取结果值。
然后,要么对返回值进行块优化(创建动态库或其他内容),要么在分析代码之外输出该值。
这仍然可能受到代码元素重新排序的影响,但它主要阻止表达式消除。(请注意,如果不实际执行,则很难生成结果 - 例如,加法比乘法更好,因为一旦命中,0它可能会根据“假设”规则提前退出)
| 归档时间: |
|
| 查看次数: |
1136 次 |
| 最近记录: |