传授用于在C#或C ++中预测分支语句的专业知识

时间:2011-01-22 23:40:03

标签: c# c++

我知道有些CPU在决定要预取的代码时会尝试预测分支语句,我想知道是否有办法在C#(或C ++)中帮助或硬编码这些分支预测。一个例子是错误检查我知道的语句是否会在99.9999999%的时间内返回false,我想告诉CPU始终期望该分支永远不会出现在预读中。

感谢。

1 个答案:

答案 0 :(得分:5)

据我所知,这个问题没有跨平台的解决方案。我希望C#VM可以进行某种运行时分析来优化这些类型的预测,尽管我不知道这一点。

对于C / C ++,有一些特定于平台的工具可以帮助优化它。您通常可以为代码找到配置文件引导的优化器。我知道gcc和g ++支持这个事实,并且它可以在网络程序性能上产生很大的差异。 gcc还支持名为__builtin_expect的特定于编译器的扩展,它允许您对关于分支预测的假设进行硬编码:

if (__builtin_expect(x == 0, 0)) { // Unlikely to occur
    /* ... */
}