【问题标题】:Can you profile a single call of a function with perf?你能用 perf 分析一个函数的单个调用吗?
【发布时间】:2020-09-09 09:43:54
【问题描述】:

我有一个要分析的 C++ 函数,并且只有该函数。一种可能的方法是使用 chrono 并仅测量运行该函数所需的时间并将其打印出来,运行该程序几次,然后对样本进行统计。

我想知道我是否可以跳过显式编码时间测量,而只要求 perf 专注于指定函数所花费的时间。

【问题讨论】:

    标签: c++ linux profiling perf


    【解决方案1】:

    查看 Google 的基准测试 library 以对感兴趣的函数进行微基准测试。

    然后,您可以像往常一样使用 perf 分析生成的可执行文件。

    例如,假设在basic usage 之后,您生成了一个名为 mybenchmark 的可执行文件。然后,您可以像往常一样在二进制文件上运行 perf

    $ perf stat ./mybenchmark
    

    【讨论】:

      【解决方案2】:

      您可以以 SVG 格式构建整个应用程序的flame graph。使用火焰图,您可以快速查看占用 CPU 时间最多的函数。 SVG 火焰图是交互式的:您可以单击任何功能并仅查看所选功能的详细火焰图。来自description of flame graphs

      它也是交互式的:将鼠标悬停在 SVG 上以显示细节,然后单击放大。

      您可以在示例 bash 火焰图上试用它:

      http://www.brendangregg.com/FlameGraphs/cpu-bash-flamegraph.svg

      【讨论】:

        猜你喜欢
        • 2023-01-01
        • 1970-01-01
        • 2011-01-17
        • 2015-07-01
        • 1970-01-01
        • 2015-05-29
        • 2021-09-21
        • 1970-01-01
        • 2016-06-04
        相关资源
        最近更新 更多