V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nyxsonsleep
V2EX  ›  问与答

火焰图能按时间顺序生成吗?

  •  
  •   nyxsonsleep · 27 天前 · 500 次点击

    我的实质需求:因为 perf 测试的软件是多个组件组合成的,我只负责其中一个小组件,我该怎么判断哪些是我的组件的函数呢?

    我 perf 之后的数据生成的火焰图看上去不是按照时间顺序排列的函数。我在组件的开始和结束位置添加了两个耗时函数,但是这两个函数在火焰图上直接相邻了,我的组件执行时间是这两个函数的几倍,如果是按时间顺序排列的话应该不会在相邻的位置上。又或者说他们应该是时间顺序的,但是大部分组件都基于 util 组件,导致函数被拆散排列到前面去了。

    6 条回复    2024-08-21 10:29:12 +08:00
    lumingsun
        1
    lumingsun  
       27 天前 via Android
    火焰图是没办法按执行顺序排序的,但是用浏览器打开火焰图是可以搜索函数名等等的,可以搜一下看看你的部分的占比。看你描述不太确定添加的耗时函数是否是你的组件内,如果是你的组件内,那火焰图的堆栈关系,这俩函数的下一层就是你的组件吧。
    nyxsonsleep
        2
    nyxsonsleep  
    OP
       27 天前
    @lumingsun 因为最后会被整合到一个文件里面去,函数名直接定位到 util 里面去了,基本不可用。下一层堆栈直接就是系统函数了。
    nyxsonsleep
        3
    nyxsonsleep  
    OP
       27 天前
    @lumingsun 我看到 perf 里面有 timestamp 这个不是时间戳吗?火焰图没法利用这个数据吗?
    lumingsun
        4
    lumingsun  
       26 天前
    @nyxsonsleep 关于 timestamp 和火焰图可以参考这些资料 https://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#FlameGraph
    nyxsonsleep
        6
    nyxsonsleep  
    OP
       26 天前
    @lumingsun #5 入口搜不到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:32 · PVG 03:32 · LAX 12:32 · JFK 15:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.