可能和不可能的宏

问题描述 投票:0回答:1

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

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

windows gcc linux-kernel profiler
1个回答
2
投票

我不熟悉任何能够显示分支效率的分析器。 Linux

time
程序应该运行良好,足以帮助您进行基准测试。

在所有现代 x86 CPU 上,如果 JMPcc 指令不分支而是直接跳转到下一条指令,那么它们的速度会更快。

GCC 的

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

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

© www.soinside.com 2019 - 2024. All rights reserved.