我试图在一个函数中找到最常错误预测分支的位置。我试了一下perf,如下:
perf record ./a.out
a.out
-ggdb -fno-omit-frame-pointer
按照手册的建议,使用 options 编译。
我怎样才能找到这些景点?
我试图在一个函数中找到最常错误预测分支的位置。我试了一下perf,如下:
perf record ./a.out
a.out
-ggdb -fno-omit-frame-pointer
按照手册的建议,使用 options 编译。
我怎样才能找到这些景点?
默认情况下对周期事件perf record
执行采样。每次发生给定数量的周期事件时,都会记录一个内部包含不同事物(例如指令指针)的样本。有了这个,您可以主要观察您在代码的哪一部分花费了时间。
使用 -e 选项指定要对其执行采样的事件。可能您可以尝试指定分支错误预测的事件(根据您的硬件),并且样本只会在该事件的每 X 次出现时生成。但我不确定是否可以对所有事件进行采样。
我不知道它的真正含义,但在我的性能版本 3.11 上,存在以下选项:
-j, --branch-filter 启用采取的分支堆栈采样。每个样本捕获一系列连续的分支。每个样本捕获的分支数量取决于底层硬件、感兴趣的分支类型和执行的代码。可以选择通过启用过滤器捕获的分支类型。