Unity - Profiler参数详解
CPU Usage
● GC Alloc - 记录了游戏运行时代码产生的堆内存分配。这会导致ManagedHeap增大,加速GC的到来。我们要尽可能避免不必要的堆内存分配,同时注意:1、检测任何一次性内存分配大于2KB的选项;2、检测每帧都具有20B以上内存分配的选项。
● WaitForTargetFPS - VSync功能所致,即显示的是当前帧的CPU等待时间。
● Overhead - 表示Profiler总体时间,即所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。(一般出现在移动设备,锯齿状为Vsync所致)
● Physics.Simulate - 当前帧物理模拟的CPU占用量。
● Camera.Render - 相机渲染准备工作的CPU占用量。
● RenderTexture.SetActive - 设置RenderTexture操作。比对当前帧与前一帧的ColorSurface和DepthSurface,如果一致则不生成新的RT,否则生成新的RT,并设置与之对应的Viewport和空间转换矩阵。
● Monobehaviour.OnMouse_ - 用于检测鼠标的输入消息接收和反馈,主要包括 SendMouseEvents和DoSendMouseEvents。
● HandleUtility.SetViewInfo - 仅用于Editor中,作用是将GUI在Editor中的显示看起来与发布版本上的显示一致。
● GUI.Repaint - GUI的重绘(尽可能避免使用Unity内建GUI)。
● Event.Internal_MakeMasterEventCurrent - 负责GUI的消息传送。
● Cleanup Unused Cached Data - 清空无用的缓存数据,主要包括RenderBuffer 的垃圾回收和TextRendering的垃圾回收。
● RenderTexture.GarbageCollectTemporary - 存在于RenderBuffer的垃圾回收中,清除临时的FreeTexture。
● TextRendering.Cleanup - TextMesh的垃圾回收操作。
● Application.Integrate Assets in Background - 遍历预加载的线程队列并完成加载,同时完成纹理的加载、Substance的Update等。
● Application.LoadLevelAsync Integrate - 加载场景的CPU占用。
● UnloadScene - 卸载场景中的GameObjects、Component和GameManager,一般用在切换场景时。
● CollectGameObjects - 将场景中的GameObject和Component聚集到一个Array 中。
● Destroy - 删除GameObject或Component的CPU占用。
● AssetBundle.LoadAsync Integrate - 多线程加载AwakeQueue中的内容,即多线程执行资源的AwakeFormLoad函数。
● Loading.AwakeFormLoad - 在资源被加载后调用,对每种资源进行与其对应的处理。
● StackTraceUtility.PostprocessStacktrace() 和 StackTraceUtility.ExtractStackTrace() - 一般是由Debug.Log或类似API造成,游戏发布后需将Debug API进行屏蔽。
● GC.Collect - 系统启动的垃圾回收操作。当代码分配内存过量或一定时间间隔后触发,与现有的Garbage size及剩余内存使用粒度相关。
● GarbageCollectAssetsProfile - 引擎在执行UnloadUnusedAssets操作。
GPU Usage
● Device.Present - device.PresentFrame的耗时显示,该选项出现在发布版本中。关于该参数有如下几个常见问题:1、GPU的presentdevice确实非常耗时,一般出现在使用了非常复杂的Shader等;2、GPU运行是非常快的,而由于Vsync的原因,使得它需要等待较长时间;3、同样是Vsync的原因,若其他线程非常耗时,会导致该项等待时间很长,比如过量的AssetBundle加载时容易出现该问题。
● Graphics.PresentAndSync - GPU上的显示和垂直同步耗时,该选项出现在发布版本中。
● Mesh.DrawVBO - GPU中关于Mesh的Vertex Buffer Object的渲染耗时。
● Shader.Parse - 资源加入后引擎对Shader的解析过程。
● Shader.CreateGPUProgram - 根据当前设备支持的图形库信息来建立GPU工程。
Memory
● GameObjects in Scene - 当前帧场景中的GameObject数量。
● Total Objects in Scene - 当前帧场景中的Object数量(除了GameObject外,还有Component等)。
● Total Object Count - Object数量 + Asset数量。
● Scene Memory - 记录当前帧场景中各方面的内存占用情况,包括GameObject、所有资源、各种组件及GameManager等。