作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我知道一些 CPU 在决定预取什么代码时会尝试预测分支语句,我想知道是否有办法在 C#(或 C++)中帮助或硬编码这些分支预测。一个例子是错误检查 if 语句,我知道它会在 99.9999999% 的时间内返回 false,我想告诉 CPU 始终期望该分支永远不会发生用于预取目的。
谢谢。
最佳答案
据我所知,没有针对此问题的跨平台解决方案。我希望 C# VM 会进行某种运行时分析来优化这些类型的预测,尽管我并不知道这一点。
对于 C/C++,有一些特定于平台的工具可以帮助优化这一点。您通常可以为代码找到配置文件引导的优化器。我知道 gcc 和 g++ 支持这一点,并且它可以对净程序性能产生很大的影响。 gcc 还支持名为 __builtin_expect
的特定于编译器的扩展,它允许您在关于分支预测的假设中进行硬编码:
if (__builtin_expect(x == 0, 0)) { // Unlikely to occur
/* ... */
}
关于c# - 传授预测 C# 或 C++ 分支语句的专家知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4771368/
我是一名优秀的程序员,十分优秀!