我正在查看https://chromedevtools.github.io/devtools-protocol/tot/Profiler#type-ProfileNode上的文档,试图了解如何表示CPU配置文件格式。
通常,配置文件是一组样本。每个样本都有一个堆栈框架,该框架是函数调用位置的列表。
我正在尝试将其映射为chrome devtools配置文件格式。
据我了解,profile中的samples
数组包含顶部节点ID。并且nodes
包含唯一的函数调用站点列表。
因此,索引为i
的任何样本的堆栈帧都必须是具有该ID的节点,然后是该节点的子节点?
本质上,我为样本i构想的堆栈框架是:
Node[sample[i]].callFrame
Node[sample[i]].children[0].callFrame
Node[sample[i]].children[1].callFrame
Node[sample[i]].children[2].callFrame
...
但是当我形象地看到这些链接时,它们之间的关系就会倒转了。即,箭头应从其向外延伸的根函数变成所有箭头所指向的叶函数。
我在这里想念什么?该文档没有清楚地详细说明东西的布局方式。