我的实质需求:因为 perf 测试的软件是多个组件组合成的,我只负责其中一个小组件,我该怎么判断哪些是我的组件的函数呢?
我 perf 之后的数据生成的火焰图看上去不是按照时间顺序排列的函数。我在组件的开始和结束位置添加了两个耗时函数,但是这两个函数在火焰图上直接相邻了,我的组件执行时间是这两个函数的几倍,如果是按时间顺序排列的话应该不会在相邻的位置上。又或者说他们应该是时间顺序的,但是大部分组件都基于 util 组件,导致函数被拆散排列到前面去了。
1
lumingsun 124 天前 via Android
火焰图是没办法按执行顺序排序的,但是用浏览器打开火焰图是可以搜索函数名等等的,可以搜一下看看你的部分的占比。看你描述不太确定添加的耗时函数是否是你的组件内,如果是你的组件内,那火焰图的堆栈关系,这俩函数的下一层就是你的组件吧。
|
2
nyxsonsleep OP @lumingsun 因为最后会被整合到一个文件里面去,函数名直接定位到 util 里面去了,基本不可用。下一层堆栈直接就是系统函数了。
|
3
nyxsonsleep OP @lumingsun 我看到 perf 里面有 timestamp 这个不是时间戳吗?火焰图没法利用这个数据吗?
|
4
lumingsun 123 天前
@nyxsonsleep 关于 timestamp 和火焰图可以参考这些资料 https://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html#FlameGraph
|
5
lumingsun 123 天前
|
6
nyxsonsleep OP @lumingsun #5 入口搜不到
|