【问题标题】:likely and unlikely macros可能和不太可能的宏
【发布时间】:2011-05-12 03:47:17
【问题描述】:

是否有任何标准方法(使用分析器)来检查使用这些 gcc 识别的分支预测宏是否可以在指令流水线方面使某些时钟周期受益?我们如何在程序中使用和不使用这些宏来衡量这一点?测量经过的时间是唯一的方法吗?

Windows 中是否有类似的分支预测宏(例如假设 keywork?)

-卡特里

【问题讨论】:

    标签: windows gcc compiler-construction linux-kernel profiler


    【解决方案1】:

    我不熟悉任何可以显示分支效率的分析器。 Linux time 程序应该可以很好地帮助您进行基准测试。

    在所有现代 x86 CPU 上,如果 JMPcc 指令不分支,而是直接进入下一条指令,它们会更快。

    GCC 的 __builtin_expect 函数向编译器提供了一个提示——它告诉 if() 的哪一侧应该是fall-through,哪一侧应该是分支。仅当您 100% 确定时才应使用此功能。 VC++ 没有等效的功能。我不确定 ICC。

    更好的方法是避免使用这些非标准函数并使用配置文件引导优化 (PGO),您可以在其中运行程序并记录所有这些分支以找出内容的去向。

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 1970-01-01
      • 2021-12-19
      • 2016-11-16
      • 2010-12-12
      • 2016-04-13
      • 2010-11-29
      • 1970-01-01
      • 2014-05-12
      相关资源
      最近更新 更多