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

29 天前
 nyxsonsleep

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

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

522 次点击
所在节点    问与答
6 条回复
lumingsun
29 天前
火焰图是没办法按执行顺序排序的,但是用浏览器打开火焰图是可以搜索函数名等等的,可以搜一下看看你的部分的占比。看你描述不太确定添加的耗时函数是否是你的组件内,如果是你的组件内,那火焰图的堆栈关系,这俩函数的下一层就是你的组件吧。
nyxsonsleep
29 天前
@lumingsun 因为最后会被整合到一个文件里面去,函数名直接定位到 util 里面去了,基本不可用。下一层堆栈直接就是系统函数了。
nyxsonsleep
29 天前
@lumingsun 我看到 perf 里面有 timestamp 这个不是时间戳吗?火焰图没法利用这个数据吗?
lumingsun
29 天前
@nyxsonsleep 关于 timestamp 和火焰图可以参考这些资料 https://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#FlameGraph
lumingsun
29 天前
nyxsonsleep
28 天前
@lumingsun #5 入口搜不到

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1066392

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX