衡量分支机构错误预测的频率

时间:2012-01-08 20:22:21

标签: c++ profiling

假设我在C ++中有一个if-else分支,我怎么能(在代码中)测量分支被错误预测的频率?我想在分支机构周围添加一些调用或宏(类似于自下而上的分析),它会报告分支错误预测。

拥有通用方法会很不错,但让初学者使用Intel i5 2500k。

3 个答案:

答案 0 :(得分:2)

如果您使用的是AMD CPU,那么AMD的CodeAnalyst就是您所需要的(适用于Windows和Linux)*。

如果不是,那么您可能需要使用指令手册中的CPU性能寄存器和计数器详细信息来获取VTune许可证或构建内容。

您还可以查看gperf& OProfile(仅限linux),看看它们的表现如何(我从未使用过它们,但我看到它们的含义相当多)。

* CodeAnalyst应该在Intel CPU上工作,你只是没有得到所有不错的CPU级别分析。

答案 1 :(得分:1)

OProfile

OProfile非常复杂,但它可以分析您的CPU跟踪的任何内容。

查看Event Type Reference并查找您的特定CPU。

例如,这里是core2 events。在快速搜索之后,我没有在core2架构上看到任何错过分支预测的事件计数器。

答案 2 :(得分:1)

我想知道是否可以从g++ -fprofile-arcs中提取这些信息?它必须准确测量这一点才能反馈到优化器中以优化分支。