Icache性能适用于以下代码片段

时间:2013-11-24 20:39:46

标签: performance caching optimization

我有一段代码

for ( ... ) 
{
    if (condition) {
       // some code
    }
    // some more code
}

if条件和外部的代码大小合适。条件要么总是真的要么总是假的,所以不应该有任何分支预测未命中。在条件总是false的情况下,if条件中的代码是否会从指令缓存中删除?有什么方法可以为icache优化这个吗?

1 个答案:

答案 0 :(得分:0)

总的来说,我发现做更像这样的事情会更好:

if (condition) {
     for ( ... ) 
      {
      // some code
      }
}
else
{
     for (...)
     {
     // some more code
     }
}

如果if clause确实是一个不变的

如果多次出现这种情况 - 您可以选择包含for循环的函数指针或函子,并在做出决定后调用它:

func = (condition) ? func1 : func2

然后到处拨打func