我知道有些CPU在决定要预取的代码时会尝试预测分支语句,我想知道是否有办法在C#(或C++)中帮助或硬编码那些分支预测.一个例子是错误检查我知道的语句是否会在99.9999999%的时间内返回false,我想告诉CPU始终期望该分支永远不会出现在预取的目的.
谢谢.
据我所知,这个问题没有跨平台的解决方案.我希望C#VM可以进行某种运行时分析来优化这些预测,尽管我不知道这一点.
对于C/C++,有一些特定于平台的工具可以帮助优化它.您通常可以为代码找到配置文件引导的优化器.我知道gcc和g ++支持这一点,并且它可以在网络程序性能上产生很大的差异.gcc还支持一个特定于编译器的扩展__builtin_expect,它允许你对你的分支预测假设进行硬编码:
if (__builtin_expect(x == 0, 0)) { // Unlikely to occur
/* ... */
}
Run Code Online (Sandbox Code Playgroud)