CPU Usage
??????? ●?GC Alloc?- 記錄了游戲運行時代碼產(chǎn)生的堆內(nèi)存分配。這會導(dǎo)致ManagedHeap增大刹淌,加速GC的到來饶氏。我們要盡可能避免不必要的堆內(nèi)存分配,同時注意:1有勾、檢測任何一次性內(nèi)存分配大于2KB的選項疹启;2、檢測每幀都具有20B以上內(nèi)存分配的選項蔼卡。
●?WaitForTargetFPS?- VSync功能所致喊崖,即顯示的是當前幀的CPU等待時間。
●??Overhead?- 表示Profiler總體時間雇逞,即所有單項的記錄時間總和荤懂。用于記錄尚不明確的時間消耗,以幫助進一步完善Profiler的統(tǒng)計喝峦。(一般出現(xiàn)在移動設(shè)備势誊,鋸齒狀為Vsync所致)
●??Physics.Simulate?- 當前幀物理模擬的CPU占用量呜达。
●??Camera.Render?- 相機渲染準備工作的CPU占用量谣蠢。
●??RenderTexture.SetActive?- 設(shè)置RenderTexture操作。比對當前幀與前一幀的ColorSurface和DepthSurface,如果一致則不生成新的RT眉踱,否則生成新的RT挤忙,并設(shè)置與之對應(yīng)的Viewport和空間轉(zhuǎn)換矩陣。
●??Monobehaviour.OnMouse_?- 用于檢測鼠標的輸入消息接收和反饋谈喳,主要包括 SendMouseEvents和DoSendMouseEvents册烈。
●??HandleUtility.SetViewInfo?- 僅用于Editor中,作用是將GUI在Editor中的顯示看起來與發(fā)布版本上的顯示一致婿禽。
?●?GUI.Repaint?- GUI的重繪(盡可能避免使用Unity內(nèi)建GUI)赏僧。
●?Event.Internal_MakeMasterEventCurrent?- 負責(zé)GUI的消息傳送。
●??Cleanup Unused Cached Data?- 清空無用的緩存數(shù)據(jù)扭倾,主要包括RenderBuffer 的垃圾回收和TextRendering的垃圾回收淀零。
●??RenderTexture.GarbageCollectTemporary?- 存在于RenderBuffer的垃圾回收中,清除臨時的FreeTexture膛壹。
●??TextRendering.Cleanup?- TextMesh的垃圾回收操作驾中。
●??Application.Integrate Assets in Background?- 遍歷預(yù)加載的線程隊列并完成加載,同時完成紋理的加載模聋、Substance的Update等肩民。
●??Application.LoadLevelAsync Integrate?- 加載場景的CPU占用。
●??UnloadScene?- 卸載場景中的GameObjects链方、Component和GameManager持痰,一般用在切換場景時。
●??CollectGameObjects?- 將場景中的GameObject和Component聚集到一個Array 中侄柔。
●??Destroy?- 刪除GameObject或Component的CPU占用共啃。
●??AssetBundle.LoadAsync Integrate?- 多線程加載AwakeQueue中的內(nèi)容,即多線程執(zhí)行資源的AwakeFormLoad函數(shù)暂题。
●??Loading.AwakeFormLoad?- 在資源被加載后調(diào)用移剪,對每種資源進行與其對應(yīng)的處理。
●??StackTraceUtility.PostprocessStacktrace() 和 StackTraceUtility.ExtractStackTrace()?- 一般是由Debug.Log或類似API造成薪者,游戲發(fā)布后需將Debug API進行屏蔽纵苛。
●??GC.Collect?- 系統(tǒng)啟動的垃圾回收操作。當代碼分配內(nèi)存過量或一定時間間隔后觸發(fā)言津,與現(xiàn)有的Garbage size及剩余內(nèi)存使用粒度相關(guān)攻人。
● ?GarbageCollectAssetsProfile?- 引擎在執(zhí)行UnloadUnusedAssets操作。
GPU Usage?
●??Device.Present?- device.PresentFrame的耗時顯示悬槽,該選項出現(xiàn)在發(fā)布版本中怀吻。關(guān)于該參數(shù)有如下幾個常見問題:1、GPU的presentdevice確實非常耗時初婆,一般出現(xiàn)在使用了非常復(fù)雜的Shader等蓬坡;2猿棉、GPU運行是非常快的屑咳,而由于Vsync的原因萨赁,使得它需要等待較長時間;3兆龙、同樣是Vsync的原因杖爽,若其他線程非常耗時,會導(dǎo)致該項等待時間很長紫皇,比如過量的AssetBundle加載時容易出現(xiàn)該問題慰安。
●?Graphics.PresentAndSync?- GPU上的顯示和垂直同步耗時,該選項出現(xiàn)在發(fā)布版本中聪铺。
●?Mesh.DrawVBO?- GPU中關(guān)于Mesh的Vertex Buffer Object的渲染耗時泻帮。
●??Shader.Parse?-?資源加入后引擎對Shader的解析過程。
●??Shader.CreateGPUProgram?- 根據(jù)當前設(shè)備支持的圖形庫信息來建立GPU工程计寇。
Memory?
●?GameObjects in Scene?- 當前幀場景中的GameObject數(shù)量锣杂。
●?Total Objects in Scene?- 當前幀場景中的Object數(shù)量(除了GameObject外,還有Component等)番宁。
●??Total Object Count?- Object數(shù)量 + Asset數(shù)量元莫。
●??Scene Memory?- 記錄當前幀場景中各方面的內(nèi)存占用情況,包括GameObject蝶押、所有資源踱蠢、各種組件及GameManager等。