您可以使用 perf 分析函数的单个调用吗?
Can you profile a single call of a function with perf?
我有一个要分析的 C++ 函数,而且只有那个函数。一种可能的方法是使用 chrono 并仅测量 运行 该功能所需的时间并将其打印出来,运行 程序几次,然后对样本进行统计。
我想知道我是否可以跳过必须显式编码时间测量而只要求 perf 关注在指定函数中花费的时间。
您可以构建一个 flame graph of whole application in SVG format. With flame graph you can quickly see function that take most of the time when consuming CPU. SVG flame graph is interactive: you can click any function and see detailed flame graph only for that selected function. From description of flame graphs:
It is also interactive: mouse over the SVGs to reveal details, and click to zoom.
您可以在示例 bash 火焰图上尝试它:
http://www.brendangregg.com/FlameGraphs/cpu-bash-flamegraph.svg
查看 Google 的基准测试 library 以对感兴趣的函数进行微基准测试。
然后您可以像往常一样使用 perf 分析生成的可执行文件。
例如,假设在 basic usage 之后,您生成了一个名为 mybenchmark 的可执行文件。然后,您可以 运行 像往常一样对二进制文件执行
$ perf stat ./mybenchmark
我有一个要分析的 C++ 函数,而且只有那个函数。一种可能的方法是使用 chrono 并仅测量 运行 该功能所需的时间并将其打印出来,运行 程序几次,然后对样本进行统计。
我想知道我是否可以跳过必须显式编码时间测量而只要求 perf 关注在指定函数中花费的时间。
您可以构建一个 flame graph of whole application in SVG format. With flame graph you can quickly see function that take most of the time when consuming CPU. SVG flame graph is interactive: you can click any function and see detailed flame graph only for that selected function. From description of flame graphs:
It is also interactive: mouse over the SVGs to reveal details, and click to zoom.
您可以在示例 bash 火焰图上尝试它:
http://www.brendangregg.com/FlameGraphs/cpu-bash-flamegraph.svg
查看 Google 的基准测试 library 以对感兴趣的函数进行微基准测试。
然后您可以像往常一样使用 perf 分析生成的可执行文件。
例如,假设在 basic usage 之后,您生成了一个名为 mybenchmark 的可执行文件。然后,您可以 运行 像往常一样对二进制文件执行
$ perf stat ./mybenchmark