读取 pprof 分析文件
收集完分析文件后,可以在 Go 性能优化 工具窗口中进行分析。
分析器显示有关程序执行的采样数据。 每个样本代表一次捕获的调用堆栈,因此所有数值均为基于统计采样的估算值。
可以用不同的方式查看数据,如表格、调用图或火焰图。 每个视图高亮显示性能的不同切面,帮助查找高开销的函数和调用路径。
切换样本类型。
请在工具窗口右上角使用 显示 菜单。

Go 分析器提供多种视图用于分析快照:
顶部 :展示函数聚合统计信息的扁平视图。
图 :展示函数之间关系的调用图。
火焰图 :调用堆栈的可视化,有助于识别热点路径。
树 :函数调用及其对执行时间贡献的层级视图。
顶部
顶部 视图以扁平表格显示函数的分析聚合数据。 每一行表示一个函数,并显示该函数的耗时或采样次数。

该视图中的数据来源于分析采样。 每个样本表示程序执行期间捕获的调用堆栈。
表格包含以下指标:
扁平 — 在该函数本身所记录的耗时或采样次数。 不包括它所调用的其他函数的耗时或采样。
扁平% — 该函数本身在总耗时或采样中的占比。
总和% — 扁平% 的自上而下累计值。
累计 — 在该函数及其所有调用的函数中所记录的总耗时或采样次数。
累计% — 包含该函数及其被调用函数在内的总耗时或采样占比。
使用该视图可找到最耗资源的函数。 优先关注 扁平 或 累计 值最高的函数。
这些值基于统计采样。 每个样本代表一次捕获的调用堆栈,因此这些数值为估算值。
导航到源代码
点击表格中的函数即可打开其源代码。
排序结果
点击列页眉可根据选定指标对函数排序,例如 扁平 或 累计。
在顶部搜索
输入函数名称即可高亮显示匹配区块。
图
图 视图显示应用程序的调用图。 以节点表示函数,节点间的边表示调用关系。

每个节点表示一个函数。 每条边表示从一个函数到另一个函数的调用。
在内存分析文件中,图表还可以包含显示函数调用之间已分配内存块的紧凑分配节点。

每个节点标签显示两个数值:
记录在函数本身的数值
记录在该函数及其调用的所有函数中的总数值
使用此视图可以了解函数间的调用方式,并识别高消耗的调用路径。
配置图表显示
点击 配置 位于右上角。
配置图表选项:
节点数目 限制显示的函数数量。
节点比例 会隐藏贡献小于指定总采样份额的函数。
边比例 会隐藏贡献小于指定总采样份额的调用。
调用树 控制函数在图表中的显示方式。
禁用该选项时,相同函数的节点会合并为一个节点。 启用时,每个调用单独显示,有助于区分不同的调用路径。
例如,如果函数
foo()在程序的不同位置被调用,默认图表会为foo()显示一个节点,但启用 调用树 后,每次对foo()的调用都作为单独的节点出现。
点击 Apply 更新图表。

浏览图形
点击节点可聚焦于某个函数并检查其连接关系。
双击节点以在编辑器中打开函数。
拖动画布以移动视图。 可以使用鼠标右键,或者按住 Ctrl ,用鼠标左键或右键拖动。
在图形中搜索
按 Ctrl+F ,或点击左侧工具栏上的 在图中查找 (
)。
开始输入函数名称。
搜索弹窗会显示所有图节点,并定位到选中的函数。
火焰图
火焰图将调用堆栈显示为一组矩形。 每个矩形表示一个函数调用。 矩形的宽度表示函数使用了多少时间或样本数。 矩形越宽表示该函数消耗越大。
父函数显示在子函数的下方。 这种布局有助于理解代码的工作流。

缩放图表
使用 放大 (
)和 缩小 (
)图标进行缩放。
按两次点击一个区块以聚焦指定函数。
点击 重置缩放 (
)图标以重置缩放比例。
配置视图设置
在工具栏中打开视图设置菜单。
启用或禁用以下选项:
显示 Icicle 图 :切换火焰图和冰柱布局。
固定文本 :缩放时保持函数名称可见。
新建火焰图视图 :使用更新后的渲染模式。
单击导航 :点击即可打开函数。

在火焰图中搜索
点击 显示搜索工具栏 (
)或按 Ctrl+F。
输入函数名称即可高亮显示匹配区块。
使用导航控件在匹配项之间切换。

获取函数详情
将鼠标悬停在区块上查看详细信息。

捕获图表
点击工具栏上的 捕获图像 图标(
)。
请选择一个选项:
复制到剪贴板 :将图表复制为图片。
保存 :将图表保存为 PNG 文件。
树
树状视图以层次结构显示函数调用。 每一行表示一个函数。 子行显示由父函数调用的函数。
该视图有助于理解应用程序的执行流程及资源消耗的调用路径。

配置视图设置
在工具栏中打开视图设置菜单。
启用或禁用以下选项:
显示占总值的百分比 :显示所有样本值的总和。
显示父项的百分比 :显示相对于父函数的占比。
单击导航 :单击即可打开代码。

浏览树状图
展开或收起节点以探索调用路径。
选择函数以查看其指标。
解释指标
使用这些列分析资源用法:
扁平 — 函数中直接使用或分配的内存。
扁平% — 该函数中占总用法的比例。
累计 — 函数及其所有被调用函数使用的内存。
累计% — 包括子调用在内的总用法占比。
在树状视图中搜索
输入函数名称即可高亮显示匹配区块。
行分析器
当您打开快照时,GoLand 会显示 分析器 工具窗口,并在编辑器中相应的行右侧添加运行时提示。
执行时间较长的行会显示灰色标签,最耗资源的行则用带有火焰图标的红色标签标记。

在 分析器 工具窗口中切换视图模式也会更改编辑器内标签的模式。 可以选择查看函数的总执行时间、CPU 时间或执行此行所分配的内存量。
如果想深入查看带标签函数的内容,点击提示会跳转到函数声明,在那里可以检查导致缓慢的特定行。
