CPU Usage Profiler 模块在性能分析器 (Profiler) 窗口上半部分显示几个图表,并在窗口下半部分的详细信息面板中显示时间轴和层级视图。
CPU 使用分析器模块的图表可跟踪应用程序在主线程中花费的时间。
| 图表 | 描述 |
|---|---|
| Rendering | 应用程序花费多少时间来渲染图形。 |
| Scripts | 应用程序花费多少时间来运行脚本。 |
| Physics | 应用程序在物理系统上花费多少时间。 |
| Animation | 应用程序花费多少时间来动画化应用程序中带蒙皮的网格渲染器 (Skinned Mesh Renderers)、游戏对象和其他组件。这还包括为动画 (Animation) 组件和动画器 (Animator) 组件所用的系统进行计算所花费的时间。 |
| GarbageCollector | 应用程序运行托管垃圾回收器所花费的时间。 |
| VSync | 应用程序每帧等待 targetFrameRate 或下一个 VBlank 完成同步所花费的时间。为了确定__ VSync__垂直同步 (VSync) 是一种显示设置,可限制游戏帧频,使其与显示器的刷新率相匹配,以防止图像撕裂。See in Glossary 值,Unity 使用 QualitySettings.vSyncCount 值、目标帧率或运行应用程序的平台的默认或强制最大 VSync 值。有关 VSync 的更多信息,请参阅性能分析器标记文档。 |
| Global Illumination | 应用程序在光照上花费多少时间。 |
| UI | 应用程序花费多少时间来显示其__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息 See in Glossary。 |
| Others | 应用程序在不属于任何其他类别的代码中花费多少时间。此属性包括几个方面,例如整个 EditorLoop 或者是在播放模式下进行性能分析时的性能分析开销。有关更多信息,请参阅播放模式和编辑器样本。 |
选择 CPU 使用量模块时,详细信息面板将显示应用程序在所选帧内花费的时间的细分信息。使用面板顶部的工具栏可浏览视图。
| 属性 | 描述 | |
|---|---|---|
| Timing data view dropdown | 选择将时间数据显示为时间轴或层级表。要更改显示视图,请使用详细信息面板中的下拉选单(默认设置为时间轴 (Timeline))。 | |
| Timeline | 显示特定帧的时间细分信息,以及该帧长度的时间轴。 这是唯一可用于一次查看所有线程上的时间以及在发生这些线程的时间查看帧内时间的视图,以便可以跨线程关联时间。例如,作业系统工作线程会在主线程上的系统为它们安排了时间后启动。 |
|
| Hierarchy | 按时间数据的内部层级结构对这些数据分组。此视图以降序列表格式显示应用程序调用的元素,默认按花费的时间排序。还可以按分配的脚本内存量或调用次数对信息进行排序。 | |
| Raw Hierarchy | 以层级结构显示时间数据,该结构与发生计时的调用栈类似。Unity 在此模式中单独列出每个调用栈,而不是像在层级视图中一样将它们合并。 | |
| Inverted Hierarchy | 按性能分析器标记对样本进行分组,并使用反转样本栈显示样本。层级视图的第一个级别为每个性能分析器标记显示一个项目。 展开树中的某个项,可在样本栈中显示包含此项的标记。此选项有助于揭示由大量较小的性能影响实例引起的较大性能问题。在时间轴视图或非反转层级视图中可能更难发现此类问题。 |
|
| Live setting | 在播放模式或编辑器中记录新数据时,在模块详细信息面板中实时显示有关所选帧的数据。默认情况下,此设置已禁用,并且在记录数据时模块详细信息面板为空白。 注意:重绘 Profiler 窗口时,此设置会增加 EditorLoop 的开销。 |
|
| Thread selector(仅限层级视图) | 使用线程下拉选单来选择特定线程,例如要在这些视图中检查的主线程 (Main Thread) 或渲染线程 (Render Thread)。 | |
| Details dropdown(仅限层级视图) | 显示有关应用程序调用和使用性能分析函数的位置的信息。 | |
| No Details | 不显示任何额外信息 | |
| Related data | 显示使用 Begin 重载的 UnityEngine.Objects 列表(这些对象与性能分析器样本有关联)。 |
|
| Calls | 显示从何处调用所选样本以及这个样本调用的其他函数。 | |
More (⋮) 菜单包含以下设置:
| 设置 | 描述 | |
|---|---|---|
| Show Full Scripting Method Names | 显示所有脚本方法 (Assembly::Class::MethodName) 的完全限定名称。 |
|
| Show Flow events(仅限时间轴视图) | 显示系统、作业和线程之间的关系。启用此设置后,性能分析器会将白色事件标记添加到用于调度作业或等待调度作业完成的性能分析器样本中。它还会使不相关的样本变暗,以便更容易地看到所选择的样本。 当选择一个样本时,性能分析器将相关的流程事件标记用线条连接在一起。粗线条突出显示所选择的特定流程。例如,如果一个 begin 样本指向另外两个 next 样本,当单击 next 样本之一时,性能分析器会为其绘制一条较粗的线条。性能分析器向样本添加以下类型的箭头: |
|
| 向下箭头 (▿) | 指示流程的开始,并且此样本安排了某些工作。 | |
| 向右箭头 (▹) | 指示流程中的下一项,并且另一个样本安排了此工作。 | |
| 向上箭头 (▵) | 指示流程的结束,以及此样本上的工作已结束或同步。 | |
| Collapse EditorOnly samples(仅限层级视图) | 在视图中显示 EditorOnly 样本。默认情况下,Unity 会折叠层级视图中的所有 EditorOnly 样本。EditorOnly 样本是播放器循环 (Player Loop) 中仅因 Editor-only 安全性检查而发生的样本。样本折叠后,它们的 GC.Alloc 值不会影响所属样本的 GC.Alloc 值。有关更多信息,请参阅播放模式和编辑器样本。 |
|
当在时间轴视图中选择了一个样本,所选样本上的工具提示可以提供更多详细信息,例如所有线程中的实例数和该样本的总时间。可以在工具提示中选择文本并复制,然后使用按钮与样本进一步交互。
| 工具提示 | 描述 | |
|---|---|---|
| Copy | 将调用栈和工具提示的全部内容复制到剪贴板上。 | |
| Show | 选择此下拉选单可在不同的上下文中查看样本: | |
| Hierarchy | 将所选样本的视图更改为 Hierarchy 视图。 | |
| Raw Hierarchy | 将所选样本的视图更改为 Raw Hierarchy 视图。 | |
| Inverted Hierarchy | 将所选样本的视图更改为 Inverted Hierarchy 视图。 | |
| Full Details for Call Stacks | 启用此属性可显示调用栈的方法指针地址的完整列表。 Unity 将调用栈记录为方法指针地址列表,用于显示栈的方法名称、文件路径和行号。每当仅存在指针地址时,Unity 都会忽略它,以便为具有更多可用信息的可操作项保留屏幕空间。 |
|
| Selected Sample Stack | 查看样本栈的详细信息。Unity 会在单独的窗口中打开此信息。然后,您可以将样本栈信息复制到剪贴板上。 样本栈与方法的调用栈不同,因为 Unity 不会将每个样本都与特定方法绑定,也不会将每个调用都记录为样本。如果在其他帧中选择样本,而显示的帧中没有具有相同样本栈的样本,则此窗口将显示原始选择的样本栈以及此帧的近似选择。 |
|
层级视图都会显示有关每一项的以下详细信息:
| 列 | 描述 |
|---|---|
| Total | Unity 在特定样本中花费的总时间(占总帧时间的百分比)。 |
| Self | Unity 在特定样本中花费的总时间(占总帧时间的百分比),不包括子样本中的时间。 |
| Calls | 此帧中调用样本的次数。在 Raw Hierarchy 视图中,此列中的值始终为 1,因为性能分析器不会合并样本的层级视图。 |
| GC Alloc | Unity 在当前帧中分配的脚本堆内存量。垃圾回收器负责管理脚本堆内存。 有关托管堆的更多详细信息,请参阅有关了解自动内存管理的文档。 |
| Time ms | Unity 在特定样本上花费的总时间(以毫秒为单位)。 注意:如果应用程序使用作业系统或多线程渲染,则此信息可能会产生误导,因为它仅包含 Unity 在选定线程上花费的时间。要更改线程,请选择层级面板顶部的线程 (Thread) 下拉选单。 |
| Self ms | Unity 在特定样本上花费的总时间(以毫秒为单位),不包括 Unity 在调用子函数时花费的时间。 |
| Warning (⚠) | 显示应用程序在当前帧中触发警告的次数。有关更多信息,请参阅性能警告。 |