Unity Profiler CPU使用情况分析器

简介: 内容翻译主要以机器翻译为主,有翻译错误的地方大家留言我可以及时更正CPU使用情况分析器CPU使用情况分析器显示您在游戏中花费的时间。

内容翻译主要以机器翻译为主,有翻译错误的地方大家留言我可以及时更正

  • CPU使用情况分析器

img_4e005ca56cc6a818ede28e4f883bdd93.png

CPU使用情况分析器显示您在游戏中花费的时间。选中时,下窗格显示所选帧的分层时间数据。查看 Profiler Window
的文档,了解更多关于探查器时间线的信息。

  • Hierarchy mode:显示分层结构的时间数据。
  • Group Hierarchy mode:时间数据分组为逻辑组(如渲染,物理,脚本)。因为任何Group的子项也可能处于不同的小组(例如,某些脚本也可能称为渲染功能),所以Group时间百分比通常加起来超过100%。

上下拖动图表标签以重新排列CPU图表的堆叠方式。

选择个别项目

在下窗格中选择某个项目时,其对CPU图表的贡献将高亮显示(其余灰显)。再次点击一个项目取消选择它。
img_7d4af202aacf2787550014e28ffdea66.gif
img_ce98d477a8ba6317230eda00860c995f.png

Render.OpaqueGeometry选中并在图表中突出显示其贡献。

在分层时间数据中,Self是指在特定函数中花费的时间,不包括调用子函数所花费的时间。在上面的截图中,41.1%的时间花在Camera.Render函数中。这个函数做很多工作,调用各种绘图和裁剪函数。排除所有这些功能,只有2.1%的时间花在Camera.Render函数本身上。

Time msSelf ms列显示相同的信息,但以毫秒为单位。Camera.Render以0.01ms但是,包括所有的函数调用,0.21ms消耗。该GC Alloc显示多少内存被分配在当前帧,稍后由垃圾收集器收集。保持这个值在零防止垃圾回收器使您的帧率波动。

CPU Profiler 的Others部分记录了所有不属于渲染、脚本、物理,垃圾收集或垂直同步。这包括动画、AI、音频、颗粒、网络、加载和PlayerLoop。

物理标记(Physics markers)

下面的描述简要说明了各个高级物理分析器标记的含义。

  • Physics.Simulate:所谓从FixedUpdate。这个更新的物理状况来指导物理引擎(PhysX)运行仿真。
  • Physics.Processing:所谓从FixedUpdate。这是所有非布料物理作业处理的地方。扩展此标记显示了物理引擎内部正在进行的工作的低级细节。
  • Physics.ProcessingCloth: 所谓从FixedUpdate。这是所有布料物理作业处理的地方。扩展这个标记将显示物理引擎内部正在进行的低层次细节。
  • Physics.FetchResults:所谓从FixedUpdate。这就是物理模拟结果从物理引擎中收集到的地方。
  • Physics.UpdateBodies:所谓从FixedUpdate。这是所有物理体的位置和旋转更新以及发送这些更新信息的地方。
  • Physics.ProcessReports:所谓从FixedUpdate。这一阶段是运行一次物理FixedUpdate已得出结论,并在所有响应仿真结果的各个阶段的处理。接触,接头断裂和触发更新和信息在这里。有四个不同的子阶段:
    • Physics.TriggerEnterExits:所谓从FixedUpdate。这就是OnTriggerEnter和ontriggerexit事件处理。
    • Physics.TriggerStays:所谓从FixedUpdate。这是ontriggerstay事件处理。
    • Physics.Contacts:所谓从FixedUpdate。这就是OnCollisionEnter,oncollisionexit和oncollisionstay事件处理。
    • Physics.JointBreaks:所谓从FixedUpdate。这就是与关节断开有关的更新和信息。
  • Physics.UpdateCloth:从更新调用。这是关于布料及其蒙皮网格的更新。
  • Physics.Interpolation:从更新调用。这个阶段涉及所有物理对象的位置和旋转的插值。

性能警告

CPU Profiler能够检测并警告您一些常见的性能问题。在查看CPU使用时,出现在下面窗格的警告栏中。


img_c3577cea843fa7cee7db4d351f97e2ef.png

Profiler警告指示静态碰撞已被移动

Profiler可以检测到的具体问题是:

  • Static Collider.Modify(昂贵的延迟成本)
  • Static Collider.Move(昂贵的延迟成本)
  • Static Collider.Create(昂贵的延迟成本)
  • Animation.DestroyAnimationClip [触发器RebuildInternalState]
  • Animation.AddClip [触发器RebuildInternalState]
  • Animation.RemoveClip [触发器RebuildInternalState]
  • Animation.Clone [触发RebuildInternalState]
  • Animation.Deactivate [触发器RebuildInternalState]
    在上面的截图中,Profiler显示了Static Collider.Move警告。该**Warning **栏表明,该警告已在当前帧被触发12次。术语“延迟成本”意味着,尽管事件Profiler中的条目可能表现出较低的成本(在这种情况下为0.00ms),但是该操作稍后可能触发更多的系统要求操作。

CPU Profiler Timeline

内存记录:本机内存性能分析

本机内存性能分析允许您在Unity本机内存管理系统中剖析活动,并评估它如何影响运行时性能。在Unity内存管理中搜索不需要的或资源密集型的分配模式时,这可能很有用。

要分析Unity的本机内存管理,您需要记录它。要访问本机内存录制模式(在Unity中称为Mem Record),请转到Window > Profiler打开Profiler窗口。选择CPU Usage Profiler(如果不可见,请单击AddProfiler > CPU),然后选择Profiler下的下拉菜单。接下来,点击Timeline,然后选择Mem Record

img_3119190cb32dfaf2f6acc10b205241ab.png

img_82202d1fd6cb0ee97f5875a2821d48dd.png
选项 功能 对性能的影响
None 模式禁用。这是默认选择。 N/A
Sample only 录内存分配,重新分配,解除分配,活动类型和系统。 Low
Callstack (fast) 与“ Sample only”具有相同的功能,但是也会记录从原始分配站点到callstack从本地符号转换为脚本符号的缩短调用堆栈。实际上,你只能看到最深的脚本符号的调用堆栈。 Medium
Callstack (full) 这与“ Sample only”具有相同的功能,但还会记录完整的脚本到本机和本机到脚本的转换。 High

注意:当活动的Profiler仅连接到独立播放器时,仅支持低影响的仅限样本模式。

记录的内存分配样本以鲜红色显示在Profiler窗口中。

img_28e79d25ea2b57a5ce3bc3030698d0ba.png

点击记录旁边的高细节按钮启用高细节模式。选择一个样本来显示分配类型和系统。如果为选定的分配样本记录了callstack,则关联的callstack符号也将被解析并显示:
img_ecd3a96b18f9de0095ae38570a5a6fcf.png

使用Mem记录
有一些情况下,其中的纪念品记录功能非常有用。例如:

  • 学习一个系统正在做很多小的分配而不是几个大的分配。
  • 学习什么时候一个工作线程意外地分配内存(例如通过意外的MemLabel使用)。
  • 发现锁定争用(当多个线程同时尝试访问本机内存系统时)。
  • 查找内存碎片来源(对于低内存设备尤其重要)。

时间线的高细节视图

CPU使用情况分析器时间轴的高细节视图至少每个由Unity的CPU使用情况分析器记录的样本都给出一个宽度的像素。

这使您可以查看框架中所有活动的完整概览,包括线程同步或内存分配等短暂活动。

要启用“ 高细节”视图,请转到“ 窗口” >“ 分析器”以打开“分析器”窗口。选择CPU Usage Profiler(如果不可见,请单击添加Profiler > CPU),然后选择Profiler下的下拉菜单,然后单击时间轴,然后选择高细节。


img_32aa3a76a48baf822cd34e1caac6062c.png

对照

以下两张图显示了CPU使用情况分析器时间轴的高细节视图和普通视图之间的区别。

高细节视图

img_c17de3a5b22e3ee41a038dd5912993c8.png

普通视图

img_77683b9d519489a042dc19288c814f71.png
相关文章
|
5月前
|
存储 设计模式 监控
运用Unity Profiler定位内存泄漏并实施对象池管理优化内存使用
【7月更文第10天】在Unity游戏开发中,内存管理是至关重要的一个环节。内存泄漏不仅会导致游戏运行缓慢、卡顿,严重时甚至会引发崩溃。Unity Profiler作为一个强大的性能分析工具,能够帮助开发者深入理解应用程序的内存使用情况,从而定位并解决内存泄漏问题。同时,通过实施对象池管理策略,可以显著优化内存使用,提高游戏性能。本文将结合代码示例,详细介绍如何利用Unity Profiler定位内存泄漏,并实施对象池来优化内存使用。
369 0
|
监控 Ubuntu 数据可视化
如何使用各种工具和命令来检查 Ubuntu 中的 CPU 使用情况?
如何使用各种工具和命令来检查 Ubuntu 中的 CPU 使用情况?
1926 0
如何使用各种工具和命令来检查 Ubuntu 中的 CPU 使用情况?
|
7月前
|
监控 Linux API
LabVIEW监控实时嵌入式目标上的CPU和内存使用情况
LabVIEW监控实时嵌入式目标上的CPU和内存使用情况
281 4
|
7月前
LabVIEW中CPU和内存使用情况在NI分布式系统管理器中不可见
LabVIEW中CPU和内存使用情况在NI分布式系统管理器中不可见
87 3
|
7月前
|
监控 Linux 测试技术
【 C/C++ 性能分析工具 CPU 采样分析器 perf 】掀开Linux perf性能分析的神秘面纱
【 C/C++ 性能分析工具 CPU 采样分析器 perf 】掀开Linux perf性能分析的神秘面纱
436 0
|
7月前
|
监控 Ubuntu
百度搜索:蓝易云【如何使用各种工具和命令来检查Ubuntu中的CPU使用情况?】
这些工具和命令可以帮助你实时监控和检查Ubuntu系统中的CPU使用情况。你可以根据需要选择合适的工具来查看CPU使用情况,并根据情况采取相应的措施来优化系统性能。
97 1
|
人工智能 Java Android开发
全面了解CPU Profiler:解读CPU性能分析工具的核心功能与用法
**==Traceview==** 是一个用于分析应用程序性能的工具,用来分析函数调用过程。 **==CPU Profiler==** 是 集成在Android Studio 3.2版本之后的Android Profiler工具当中,实时记录展示 App cpu消耗,用来替代Traceview。
|
监控 测试技术 Android开发
【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )
【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )
564 0
【Android CPU 优化】Android CPU 调优 ( Trace 文件分析 | Android Profiler 工具 | CPU Profiler 工具 )
|
监控 Android开发 Windows
【错误记录】应用运行 CPU 占用率达到 90% ( 使用 CPU Profiler 监控应用运行情况 )
【错误记录】应用运行 CPU 占用率达到 90% ( 使用 CPU Profiler 监控应用运行情况 )
213 0
【错误记录】应用运行 CPU 占用率达到 90% ( 使用 CPU Profiler 监控应用运行情况 )
|
Linux
Linux查看CPU和内存使用情况
cpu信息,内核,RAM运存
314 0