【GoLand教程】GoLand 阅读分析器快照

在Profiler工具窗口中,收集的数据显示在几个选项卡上:火焰图、调用树和方法列表。
浏览快照
您可以在选项卡之间跳转,同时专注于特定方法。右键单击必要的方法并选择要在其中打开它的另一个视图。
对于任何选项卡上的方法,您可以打开Merged Callees和Back Traces树。右键单击方法并分别选择Method Merged Callees或Method Back Traces。
如果您想在编辑器中查看源代码,请在任何选项卡上右键单击它并选择Jump to Source或按F4。这将带您到声明此方法的地方。
火焰图
火焰图使用代表调用堆栈框架的矩形可视化应用程序调用树,按宽度排序。消耗更多资源的方法比其他方法更广泛。
当您阅读火焰图时,请关注最宽的块。这些块是配置文件中出现最多的方法。您可以从底部开始向上移动,遵循从父方法到子方法的代码流,或者使用相反的方向探索显示直接在 CPU 上运行的函数的顶部块。在这种情况下,您可以使用 |Show Icicle Graph选项更改图表视图。
获取通话详情
- 将鼠标悬停在块上以查看工具提示。
工具提示显示完全限定的方法名称、父采样时间的百分比和总采样时间的百分比。
缩放图表
- 使用
和
按钮或滚轮缩放图形。
- 要关注特定方法,请双击图表上的相应块。
- 要恢复图形的原始大小,请单击1:1。
搜索图表
- 如果您想在图表上查找特定方法,请开始输入其名称或单击
并在搜索栏中输入名称。
该图突出显示具有与您的搜索请求匹配的方法名称的所有块。
使用和
在搜索结果之间快速导航。您还可以在整个图形中或仅在特定子树中进行搜索。
捕获图表
您可以将图形与快照中的其他数据分开捕获和导出。
- 单击
并选择复制到剪贴板或单击保存以将图形导出为.png格式的图像。
您可以在火焰图上可视化两个快照之间的差异。
与基线比较
- 打开两个快照。要打开快照,您可以运行探查器两次或转到运行 | 打开 Profiler Snapshot并在此处选择快照。
- 单击与基线比较按钮并选择要比较的快照。
将打开一个单独的差异选项卡,其中包含比较结果,结合两个火焰图并将差异显示为红色和绿色。
如果您看到框架的某些部分是绿色的,这意味着相应的方法在此分析器运行期间变得更快。红色表示相应的方法变慢了。
调用树
“调用树”选项卡以树状结构组织采样数据。
对于每种方法,选项卡显示以下信息:
- 方法名称
- 占总样本或父母样本的百分比
- 总样本数
- 递归调用
默认情况下,百分比是相对于样本总数的。您可以选择查看相对于父框架的数字。
在总计和父级之间切换百分比
- 单击
并选择Show Percent of Total Time或Show Percent of Parent。
折叠递归调用
涉及递归的堆栈可能很难分析。在常规的调用树视图中,递归调用会在调用时显示——一个接一个,这可能导致几乎无限的堆栈滚动。
当调用堆栈中更高的调用相同的方法时,GoLand 会检测递归。在这种情况下,子树从调用树中取出,然后附加回该方法的第一次调用。通过这种方式,您可以绕过递归并专注于消耗大部分资源和调用的方法。
折叠递归调用可以让您查看在这些调用中花费的总时间,就好像没有递归一样。
折叠递归调用在调用树选项卡上标有图标。单击它以在单独的选项卡中打开递归调用树。您可以在工具提示中预览合并调用的数量。
假设:关注具体方法
GoLand 允许您检查调用树中的特定方法:您可以排除特定方法或其他方式,只关注您目前感兴趣的方法。
右键单击调用树选项卡上的必要方法,然后选择以下选项之一以在专用选项卡中打开结果:
- Focus On Subtree:仅显示选定的方法调用。父方法样本计数器仅显示在所选子树中花费的时间。
- Focus On Call:显示选定的方法和调用它的方法。启用此选项后,每帧仅显示在所选方法中花费的时间。
- 排除子树:忽略选定的方法调用。
- 排除调用:忽略对所选方法的所有调用。
方法列表
方法列表收集配置文件数据中的所有方法,并按累积采样时间对其进行排序。此列表中的每个项目都有几个视图:
- Back Traces显示调用者的层次结构。使用此视图来跟踪哪些方法调用了选定的方法。
- Merged Callees汇总了所选方法调用的所有方法。
- 被调用者列表显示从所选方法调用的所有方法。