c++ - 同一类对象之间的分支预测

标签 c++ class optimization branch

我正在优化一个程序,并试图避免分支错误预测。我有一个类的两个对象。在类的主要函数中,有几个 if 分支。每个对象在每个分支上都采取不同的方向,并且它们各自依次运行该函数。我的问题:

由于它们是同一类的成员,因此共享该函数,它们是否也共享相同的分支预测?本质上,我是不是让系统变得 TFTFTTF...

或者,由于它们是自己的对象,因此它们有自己的分支预测,因此保持一致的预测(TTTTTTT ...和 ​​FFFFFFFF ...)

最佳答案

是的,该方法在类的实例之间共享。

这也意味着预测是共享的。

但是,分支预测不仅仅限于“最后”时间。处理器将记住一些最后的结果并识别“简单”(循环)模式。因此,如果您不断地在两个对象之间交换并且模式最终为 TFTPFTTFFF,那么处理器将正确猜测下一个结果将是 T

但是,从语义的角度来看,您是否考虑过使用基类和两个不同的派生类(+通常的虚拟机制)?

关于c++ - 同一类对象之间的分支预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7982196/

相关文章:

c++ - 来自核心转储的异常回溯

java wsimport 字符串

c++ - 初始化自定义类的 vector ?

c++ - 更快的 std::insert,或者,如何优化 Instruments 认为速度很慢的调用?

optimization - GLSL 着色器中 cos() 和 sin() 函数的速度?

jquery - 优化ajax调用

c++ - 可以动态填充 Visual Studio 项目中的 C++ 文件列表吗?

c++ - 非键类型集合中的有效搜索

c++ - 每 8 位将 bitset<64> 转换为字符串

javascript - css 从一个选项卡应用到另一个选项卡