Version: 6000.3
语言: 中文
CPU 性能数据
导航 CPU 使用率分析器模块

CPU 使用率分析器模块介绍

大致了解应用程序在 CPU 上花费的时间分析器帮助您优化游戏的窗口。它显示了在游戏的各个领域花费了多少时间。例如,它可以报告渲染、动画制作或游戏逻辑所花费的时间百分比。更多信息
请参阅术语表
模块。

CPU 使用率分析器模块概述了应用程序花费时间的区域,例如在渲染时,其脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
和动画。它会在窗口顶部的图表中显示此信息。您可以选择单个帧来检查时间轴中的数据,也可以在“探查器”窗口下半部分的详细信息窗格中选择各种分层视图。

视图

CPU 使用率探查器模块在时间线视图或不同的分层视图中显示分析数据。以下视图可用:

  • 时间轴:在时间轴图中显示示例,该时间轴图显示不同线程上标记之间的关系。
  • 层次结构:显示按调用堆栈和标记分组的示例。
  • 倒置层次结构:在倒置样本堆栈中显示按标记分组的样本。
  • 原始层次结构:显示未分组的样本。

要更改视图,请使用“探查器”窗口下半部分的下拉视图选择器

“性能分析器”窗口,其中选择了“CPU 使用率分析器”模块中的一个框架。在详细信息窗格中选择“时间线”视图。
“性能分析器”窗口,其中选择了“CPU 使用率分析器”模块中的一个框架。在详细信息窗格中选择“时间线”视图。

时间轴视图

时间轴视图是 CPU 使用率探查器模块的默认视图。它包含应用程序花费的时间以及计时之间的关系的概述。它显示来自所有线程的性能数据,在它们自己的子部分和沿同一时间轴显示。

使用“时间线”视图了解不同线程上的活动在并行执行中如何相互关联。“时间轴”视图还显示应用程序使用不同线程(例如作业系统的工作线程)的程度。它还指示线程上的工作如何排队,以及是否有任何线程空闲(空闲示例)或等待另一个线程或作业完成(等待 x 个示例)。

层次结构视图

“层次结构”视图一次显示一个线程的分析数据,默认为主线程。这些视图仅显示样本的持续时间,而“时间轴”视图显示每个样本发生的时间。

“层次结构”视图列出了已分析的所有示例,并按其共享调用堆栈和层次结构将它们分组在一起探查器标记放置在代码中,用于描述 CPU 或 GPU 事件,然后显示在 Unity 探查器窗口中。默认添加到 Unity 代码中,或者您可以使用 ProfilerMarker API 添加自己的自定义标记。更多信息
请参阅术语表
.“原始层次结构”视图不会将样本分组在一起,因此非常适合在粒度级别上查看样本。

“反向层次结构”视图按分析器标记对样本进行分组,并使用反向样本堆栈显示它们。层次结构的第一级显示每个探查器标记的项。树中的每个子项都代表倒置示例堆栈的一部分,其数据显示通过此示例堆栈为聚合父项贡献了多少时间或堆内存。

“反向层次结构”视图可用于揭示由大量小性能影响实例引起的较大性能问题。此类问题可能更难在时间轴或非反转层次结构视图中发现

调查托管代码调用堆栈和分配

探查器标记发出一组样本,探查器使用这些样本将分析信息显示和组织到不同的时间顺序和分层视图中。探查器窗口显示的所有样本都是样本堆栈的一部分。

示例堆栈与方法的调用堆栈不同,因为 Unity 不会将每个示例都绑定到特定方法,也不会将每个调用记录为示例。深度分析会向每个函数调用添加一个分析器标记,但它不会为本机代码添加任何标记,并且记录这些示例会带来很高的开销。

可以使用 CPU 使用率探查器模块来检查完整的调用堆栈,以查找以下示例GC.Alloc,UnsafeUtility.MallocJobHandle.Complete发出。如果你想追踪这些样本的发生位置,而不启用深度分析并遇到其高开销,这将非常有用。有关如何启用调用堆栈的信息,请参阅启用完整调用堆栈

调查托管分配

您还可以使用 CPU 使用率分析器来调查 Unity 执行内存清理的位置。

每当代码创建新的托管对象时,它都可能无法放入当前内存堆中,并且 Unity 会执行垃圾回收。垃圾回收会暂停所有线程,并扫描托管堆以查找未使用的内存。此过程可能需要很长时间并中断帧速率。托管垃圾回收显示为GC.Collect样本,而托管分配显示为GC.Alloc.

为了防止垃圾收集器影响应用程序的帧速率,请尝试将GC.Alloc值为零,并保持堆大小较小。在“时间轴”视图中,GC.Alloc样本以红色洋红色显示,代表分配的大小。

若要了解代码托管分配中发生的位置,可以为 GC 启用完整的调用堆栈。分配。有关托管堆的详细信息,请参阅有关托管内存的文档。

其他资源

CPU 性能数据
导航 CPU 使用率分析器模块