如何解读XCode Instruments profile树形视图的函数耗时统计规则?
解答
你的理解是对的,这个10.31s统计的就是所有从main函数发起的调用流中,HeapMatrix::pivot相关执行的总耗时——不管main是直接调用它,还是通过GradedMatrix::kernel这类中间函数多层间接调用它,对应耗时都会被算进这个数值里。
Time Profiler的调用树默认是按调用栈层级聚合统计的:
- 当调用树的顶层节点是
main时,所有跑在main启动的执行流程里的HeapMatrix::pivot,无论中间隔了多少层调用,它的累计总耗时都会被汇总到main下的HeapMatrix::pivot条目下。这里的总耗时包含两部分:HeapMatrix::pivot函数本身的执行时间,以及它内部调用的所有下游子函数的执行时间。 - 你直接展开这个
HeapMatrix::pivot节点,就能看到不同上游调用路径各自贡献的耗时,比如经GradedMatrix::kernel调用的分支、其他可能的调用分支,所有分支的耗时加总正好就是标注的10.31s。
别和Self Time搞混:这个数值是Total Time口径,函数自身不含子调用的纯执行时间,会在视图单独的Self列单独展示。

内容的提问来源于stack exchange,提问作者Bubaya
相关产品推荐
相关产品推荐

