读取 Profiler 快照
在 分析器 工具窗口( )中,收集的数据显示在多个选项卡上: 火焰图、 调用树、 方法列表、 统计 和 调用图。
在快照中导航
您可以在选项卡之间跳转,同时保持聚焦在某个特定方法上。 在所需方法上点击鼠标右键,然后选择要在其中打开它的其他视图。

在 火焰图、 调用树 和 方法列表 选项卡上的任何方法,您都可以打开 合并被调用者 和 反向跟踪 树。 在该方法上点击鼠标右键,然后分别选择 方法合并被调用方 或 方法回溯。
线程
在 性能分析器 工具窗口的选项卡中,分析数据按线程分组。 您可以选择查看整个进程的合并数据(所有线程已合并 ),也可以选择特定线程以进行更深入的分析。
显示线程
默认情况下,线程列表被隐藏,数据显示为所有线程的合并。
要选择特定线程或查看线程列表,请点击左侧工具栏中的 显示线程视图。

线程列在 分析器 工具窗口的左侧,并按收集的样本数量排序。 因此,您可以在列表顶部找到最忙的线程。
火焰图
火焰图将应用程序调用树可视化为表示调用栈帧的矩形,并按宽度排序。

获取调用详细信息
将鼠标悬停在某个块上可查看包含帧详细信息的工具提示。 该工具提示会显示在整个快照中的时间占比以及在该帧直接父级中的时间占比。
缩放图表
在火焰图的工具栏上使用
和
按钮,或使用滚轮来缩放图表。
要聚焦于特定方法,请在图表上双击相应的块。
要恢复图表的原始大小,请在工具栏上点击 1:1。
在图表中搜索
如果想在图表上定位特定方法,请开始键入其名称,或点击
并在搜索栏中键入该名称。
图表会高亮显示所有方法名称与您的搜索请求匹配的块。
使用
和
可在搜索结果之间快速导航。 使用工具栏上的按钮,您还可以搜索整个图表或特定子树,并在找到后立即导航到结果。
捕获图表
您可以将图表与快照中的其他数据分开进行捕获并导出。
点击
并选择 复制到剪贴板 ,或点击 保存 ,将图表以 .png 格式导出为图像。
您可以在火焰图上可视化两个快照之间的差异。
与基线比较
打开两个快照。 要打开快照,您可以运行 Profiler 两次,或转到 并在此选择快照。
点击 与基线比较… 按钮并选择要与之比较的快照。

将打开一个单独的差异选项卡,显示比较结果:合并两个火焰图,并以红色和绿色显示差异。
如果看到帧的某些部分为绿色,则表示在此次 Profiler 运行期间,相应方法变得更快。 红色表示相应方法变慢。
调用树
调用树 选项卡以树状结构组织采样数据。

对于每个方法,该选项卡会显示以下信息:
在总执行时间或父级执行时间中的占比
聚合执行时间
递归调用
默认情况下,百分比是相对于总执行时间的。 您可以选择查看相对于父级帧的数值。
在总计与父级之间切换百分比基准
点击
并选择 显示总时间的百分比 或 显示父项的百分比。
假设:聚焦特定方法
PyCharm 允许您在 调用树 中检查特定节点和子树:您可以排除特定方法,或反过来,仅聚焦于您当前感兴趣的节点。
在 调用树 选项卡中右键点击所需节点,然后选择以下选项之一,在专用选项卡中打开结果:
聚焦于子树 :仅显示所选方法调用。 父方法采样计数器仅显示在所选子树中花费的时间。
聚焦于调用 :显示所选方法以及调用它的方法。 启用此选项后,每个帧仅显示在所选方法中花费的时间。
排除子树 :忽略所选方法调用。
排除调用 :忽略对所选方法的所有调用。
方法列表
方法列表 会收集分析数据中的所有方法,并按累积采样时间排序。 此列表中的每个条目都有多个视图:
反向跟踪 显示调用方的层次结构。 使用此视图来跟踪哪些方法调用了所选方法。
合并的被调用方 是调用树,对调用层次结构中的方法进行汇总。
被调用方列表 是方法列表,对调用层次结构中的方法进行汇总。
统计
在 统计 选项卡中,您可以检查分析结果:

项 | 说明 |
|---|---|
名称 | 函数名称。 |
调用次数 | 所选函数的调用次数。 |
时间 | 所选函数的执行时间,加上该函数调用的所有函数所用时间。 此调用耗时相对于括号中所有调用耗时的百分比。 |
自身时间 | 所选函数的自身执行时间。 此调用的自身耗时相对于括号中该调用总耗时的百分比。 |
跳转到源代码
要导航到某个函数的源代码,请在 统计 选项卡上右键点击相应条目,然后在上下文菜单中选择 :
函数的源代码会在编辑器中打开。
调用图
请注意 调用图 上的颜色标记:标记为红色的函数耗时更多;最快的函数为绿色。

使用工具栏按钮来操作图表:
项
说明
点击此图标以增大图表的缩放比例。 或者,按 NumPad+。
点击此图标以减小图表的缩放比例。 或者,按 NumPad-。
点击此图标以恢复图表的实际大小。
点击此图标以使内容适应当前图表大小。
点击此图标以应用当前布局,该布局从图表上下文菜单的 布局 节点中选择。
点击此图标以将图表缩放到窗口边缘。
点击此图标以将图表复制到剪贴板。
点击此图标,然后使用鼠标选择任意图表区域:所选区域将被复制到剪贴板。
点击此图标以将当前图表导出为 PNG 格式。
点击此图标以打印图表。