• 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:不同平台和不同硬件得到的值会不一样。

  • 相关阅读:
    java内部类案例
    java内部类之成员内部类之局部内部类
    java内部类之成员内部类之匿名内部类
    java静态内部类
    java内部类之成员内部类实例
    java内部类之成员内部类
    UDP和TCP的区别和联系
    SSM
    连接各种数据库
    JDBC数据库连接
  • 原文地址:https://www.cnblogs.com/wang-jin-fu/p/8330982.html
Copyright © 2020-2023  润新知