对 Unity 编辑器或播放模式进行性能分析时,Unity 会将它们的相关用时分为具有以下标记的两个样本组:
PlayerLoop:与播放模式相关的用时EditorLoop:与编辑器相关的用时当对播放模式进行性能分析时,性能分析器只收集在 PlayerLoop 内部发生的用时样本。此组有助于减少 CPU 和 GPU 性能分析器模块中的误导性测量值。
Unity 在 CPU 性能分析器模块图表中将任何 EditorLoop 样本都归类为其他样本,这意味着 EditorLoop 样本是其他类别的最大影响因素。如果您想了解编辑器在此期间执行的操作,并详细了解对其他类别的影响,请参阅对编辑器进程进行性能分析。
重要信息:如果使用深度性能分析 (Deep Profiling) 和目标播放模式,则会对在 PlayerLoop 和 EditorLoop 中发生的每次调用都产生性能影响。这是因为深度性能分析会在域重新加载时挂接到任何脚本方法调用的开始和结束处,不会检测哪些部分从未从 PlayerLoop 进行调用。EditorLoop 中发生的方法调用不会产生完整的样本创建开销,但它们仍会检查是否发出样本,这会导致较小的开销。
对编辑器进程进行性能分析时,之前隐藏在 EditorLoop 标记下的所有样本都会对其各自的类别产生影响。这意味着 CPU 性能分析器模块详细信息面板及其图表中的信息会明显发生更改。
某些性能分析器标记仅当在 Unity 编辑器中进行性能分析时才会出现。这些标记不会出现在与播放器相关的活动中,仅与编辑器活动相关。仅限编辑器的标记包括:
默认情况下,在 CPU 性能分析器模块的 Hierarchy 视图中,带有仅限编辑器的标记的样本栈会进行折叠并命名为 EditorOnly [SampleName]。虽然这些样本栈或其子样本可能会导致托管分配,从而触发垃圾收集,但它们在折叠时不会影响其父样本的 GC.Alloc 值。
要更改默认行为,请在模块详细信息面板右上角选择上下文菜单,然后禁用折叠”仅限编辑器”样本 (Collapse EditorOnly Samples) 设置。完成此操作后,可以展开样本并将其 GC.Alloc 值贡献给所属标记。
此选项不影响 Timeline 视图,并且样本及其子项显示为展开状态。通常可以忽略带有这些标记的样本,因为它们与仅限编辑器的活动相关,对减少托管分配没有任何影响。但是,它们可用于调查它们对播放模式是否有显著的性能影响。