unity性能优化-Profiler

Posted 柯腾_wjf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity性能优化-Profiler相关的知识,希望对你有一定的参考价值。

Unity内置分析器Profiler、Xcode分析工具

Profiler:

1.CPU Usage:
  WaitForTargetFPS:Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间
  Overhead:Profiler总体时间-所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。
  Physics.Simulate:当前帧物理模拟的CPU占用时间。
  Camera.Render:相机渲染准备工作的CPU占用量
  RenderTexture.SetActive:设置RenderTexture操作.
         底层实现:

       1.比对当前帧与前一帧的ColorSurface和DepthSurface.
                    2.如果这两个Buffer一致则不生成新的RT,否则则生成新的RT,并设置与之相对应的Viewport和空间转换矩阵.
  Monobehaviour.OnMouse_ :用于检测鼠标的输入消息接收和反馈,主要包括:SendMouseEvents和DoSendMouseEvents。(只要Edtor开起来,这个就会存在)
       HandleUtility.SetViewInfo:仅用于Editor中,作用是将GUI和Editor中的显示看起来与发布版本的显示一致。
       GUI.Repaint: GUI的重绘(说明有在使用原生的OnGUI)
  Event.Internal_MakeMasterEventCurrent:负责GUI的消息传送
       Cleanup Unused Cached Data:清空无用的缓存数据,主要包括RenderBuffer的垃圾回收和TextRendering的垃圾回收。
          1.RenderTexture.GarbageCollectTemporary:存在于RenderBuffer的垃圾回收中,清除临时的FreeTexture.
          2.TextRendering.Cleanup:TextMesh的垃圾回收操作
  Application.Integrate Assets in Background:遍历预加载的线程队列并完成加载,同时,完成纹理的加载、Substance的Update等.
  Application.LoadLevelAsync Integrate:加载场景的CPU占用,通常如果此项时间长的话70%的可能是Texture过长导致.
  UnloadScene:卸载场景中的GameObjects、Component和GameManager,一般用在切换场景时.
  CollectGameObjectObjects: 执行上面M项的同时,会将场景中的GameObject和Component聚集到一个Array中.然后执行下面的Destroy.
  Destroy: 删除GameObject和Component的CPU占用.
  AssetBundle.LoadAsync Integrate: 多线程加载AwakeQueue中的内容,即多线程执行资源的AwakeFromLoad函数.
  Loading.AwakeFromLoad: 在资源被加载后调用,对每种资源进行与其对应用处理.


2.GPU Usage:
     Device.Present:device.PresentFrame的耗时显示,该选项出现在发布版本中.
     Graphics.PresentAndSync:GPU上的显示和垂直同步耗时.该选项出现在发布版本中.
     Mesh.DrawVBO: GPU中关于Mesh的Vertex Buffer Object的渲染耗时.
     Shader.Parse:资源加入后引擎对Shader的解析过程.
     Shader.CreateGPUProgram:根据当前设备支持的图形库来建立GPU工程.

3.Memory Profiler
     Used Total: 当前帧的Unity内存、Mono内存、GfxDriver内存、Profiler内存的总和.
     Reserved Total:系统在当前帧的申请内存.
     Total System Memory Usage:当前帧的虚拟内存使用量.(通常是我们当前使用内存的1.5~3倍)
     GameObjects in Scene:当前帧场景中的GameObject数量.
     Total Objects in Scene:当前帧场景中的Object数量(除GameObject外,还有Component等).
     Total Object Count: Object数据 + Asset数量

4.Detail Memory Profiler
  Texture2d:记录当前帧内存中所使用的纹理资源情况,包括各种GameObject的纹理、天空盒纹理以及场景中所用的Lightmap资源.
  Scene Memory:  记录当前场景中各个方面的内存占用情况,包括GameObject、所用资源、各种组件以及GameManager等(天般情况通过AssetBundle加载的不会显示在这里).
       ManagedHeap.UseSize:代码在运行时造成的堆内存分配,表示上次GC到目前为止所分配的堆内存量.
       WebStream:这个是由WWW来进行加载的内存占用.
       System.ExecutableAndDlls:不同平台和不同硬件得到的值会不一样。

以上是关于unity性能优化-Profiler的主要内容,如果未能解决你的问题,请参考以下文章

Unity中Profiler性能分析

Unity性能优化-官方文档简译

Unity 优化篇| 优化的基本概念/意义,Unity Profiler工具的使用 以及 性能分析的方法精华收藏

Unity 优化篇| 优化的基本概念/意义,Unity Profiler工具的使用 以及 性能分析的方法精华收藏

Unity 对GPU的基础性能优化

Unity游戏项目性能优化总结 (难度3 推荐4)