是否有任何标准方法(使用分析器)检查使用这些gcc识别的分支预测宏是否可以在指令流水线方面使某些时钟周期受益?我们如何在程序中使用和不使用这些宏来衡量这一点?测量经过的时间是唯一的方法吗?
Windows中是否有类似的分支预测宏(例如假设关键字?)
-Kartlee
答案 0 :(得分:2)
我不熟悉任何能够显示分支效率的分析器。 Linux time
程序应该可以很好地帮助您进行基准测试。
在所有现代x86 CPU上,如果JMPcc指令不分支,则会更快,而只是落到下一条指令。
GCC的__builtin_expect
函数向编译器提供了一个提示 - 它告诉if()的哪一侧应该是直通,哪一侧应该是分支。如果你100%确定它,你应该只使用这个功能。 VC ++没有等效的功能。我不确定ICC。
更好的方法是避免使用这些非标准函数并使用Profile Guided Optimization(PGO),在其中运行程序并记录所有这些分支以找出内容的位置。