1

我试图在一个函数中找到最常错误预测分支的位置。我试了一下perf,如下:

perf record ./a.out

a.out-ggdb -fno-omit-frame-pointer按照手册的建议,使用 options 编译。

我怎样才能找到这些景点?

4

1 回答 1

0

默认情况下对周期事件perf record执行采样。每次发生给定数量的周期事件时,都会记录一个内部包含不同事物(例如指令指针)的样本。有了这个,您可以主要观察您在代码的哪一部分花费了时间。

使用 -e 选项指定要对其执行采样的事件。可能您可以尝试指定分支错误预测的事件(根据您的硬件),并且样本只会在该事件的每 X 次出现时生成。但我不确定是否可以对所有事件进行采样。

我不知道它的真正含义,但在我的性能版本 3.11 上,存在以下选项:

-j, --branch-filter 启用采取的分支堆栈采样。每个样本捕获一系列连续的分支。每个样本捕获的分支数量取决于底层硬件、感兴趣的分支类型和执行的代码。可以选择通过启用过滤器捕获的分支类型。

于 2014-04-13T08:16:22.783 回答