五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Unity Profiler 效能分析

2021-02-25 10:55 作者:unity_某某師_高錦錦  | 我要投稿

1. CPU

A. WaitForTargetFPS:?
????? Vsync(垂直同步)功能所,即顯示當(dāng)前幀的CPU等待時(shí)間?
?? B. Overhead:?
????? Profiler總體時(shí)間-所有單項(xiàng)的記錄時(shí)間總和。用於記錄尚不明確的時(shí)間消耗,以幫助進(jìn)一步完善Profiler的統(tǒng)計(jì)。?
??????? C. Physics.Simulate:?
????? 當(dāng)前幀物理模擬的CPU佔(zhàn)用時(shí)間。?
?? D. Camera.Render:?
????? 相機(jī)渲染準(zhǔn)備工作的CPU佔(zhàn)用量?
?? E. RenderTexture.SetActive:?
????? 設(shè)定RenderTexture操作.?
????? 底層實(shí)現(xiàn):1.比對(duì)當(dāng)前幀與前一幀的ColorSurface和DepthSurface.?
?????????????? 2.如果這兩個(gè)Buffer一致則不生成新的RT,否則則生成新的RT,並設(shè)定與之相對(duì)應(yīng)的Viewport和空間轉(zhuǎn)換矩陣.?
?? F. Monobehaviour.OnMouse_ :?
????? 用於檢測(cè)滑鼠的輸入訊息接收和反饋,主要包括:SendMouseEvents和DoSendMouseEvents。(只要Edtor開(kāi)起來(lái),這個(gè)就會(huì)存在)?
?? G. HandleUtility.SetViewInfo:?
????? 僅用於Editor中,作用是將GUI和Editor中的顯示看起來(lái)與釋出版本的顯示一致。?
H. GUI.Repaint:?
????? GUI的重繪(說(shuō)明在有使用原生的OnGUI)?
?? I. Event.Internal_MakeMasterEventCurrent:?
????? 負(fù)責(zé)GUI的訊息傳送?
?? J. Cleanup Unused Cached Data:?
????? 清空無(wú)用的快取資料,主要包括RenderBuffer的垃圾回收和TextRendering的垃圾回收。?
???????? 1.RenderTexture.GarbageCollectTemporary:存在於RenderBuffer的垃圾回收中,清除臨時(shí)的FreeTexture.?
???????? 2.TextRendering.Cleanup:TextMesh的垃圾回收操作?
?? K. Application.Integrate Assets in Background:?
????? 遍歷預(yù)載入的執(zhí)行緒佇列並完成載入,同時(shí),完成紋理的載入、Substance的Update等.?
?? L. Application.LoadLevelAsync Integrate:?
????? 載入場(chǎng)景的CPU佔(zhàn)用,通常如果此項(xiàng)時(shí)間長(zhǎng)的話70%的可能是Texture過(guò)長(zhǎng)導(dǎo)致.?
?? M. UnloadScene:?
????? 解除安裝場(chǎng)景中的GameObjects、Component和GameManager,一般用在切換場(chǎng)景時(shí).?
?? N. CollectGameObjectObjects:?
????? 執(zhí)行上面M項(xiàng)的同時(shí),會(huì)將場(chǎng)景中的GameObject和Component聚集到一個(gè)Array中.然後執(zhí)行下面的Destroy.?
?? O. Destroy:?
????? 刪除GameObject和Component的CPU佔(zhàn)用.?
?? P. AssetBundle.LoadAsync Integrate:?
????? 多執(zhí)行緒載入AwakeQueue中的內(nèi)容,即多執(zhí)行緒執(zhí)行資源的AwakeFromLoad函式.?
?? Q. Loading.AwakeFromLoad:?
????? 在資源被載入後呼叫,對(duì)每種資源進(jìn)行與其對(duì)應(yīng)用處理.

2.GPU Usage

?? A. Device.Present:?
????? device.PresentFrame的耗時(shí)顯示,該選項(xiàng)出現(xiàn)在釋出版本中.?
?? B. Graphics.PresentAndSync:?
????? GPU上的顯示和垂直同步耗時(shí).該選項(xiàng)出現(xiàn)在釋出版本中.?
?? C. Mesh.DrawVBO:?
????? GPU中關(guān)於Mesh的Vertex Buffer Object的渲染耗時(shí).?
?? D. Shader.Parse:?
????? 資源加入後引擎對(duì)Shader的解析過(guò)程.?
?? E. Shader.CreateGPUProgram:?
????? 根據(jù)當(dāng)前裝置支援的圖形庫(kù)來(lái)建立GPU工程.

3. Memory Profiler

?? A. Used Total:?
????? 當(dāng)前幀的Unity記憶體、Mono記憶體、GfxDriver記憶體、Profiler記憶體的總和.?
?? B. Reserved Total:?
????? 系統(tǒng)在當(dāng)前幀的申請(qǐng)記憶體.?
?? C. Total System Memory Usage:?
????? 當(dāng)前幀的虛擬記憶體使用量.(通常是我們當(dāng)前使用記憶體的1.5~3倍)?
?? D. GameObjects in Scene:?
????? 當(dāng)前幀場(chǎng)景中的GameObject數(shù)量.?
?? E. Total Objects in Scene:?
????? 當(dāng)前幀場(chǎng)景中的Object數(shù)量(除GameObject外,還有Component等).?
?? F. Total Object Count:?
????? Object資料 + Asset數(shù)量.

4. Detail Memory Profiler

?? A. Assets:?
????? Texture2d:記錄當(dāng)前幀記憶體中所使用的紋理資源情況,包括各種GameObject的紋理、天空盒紋理以及場(chǎng)景中所用的Lightmap資源.?
?? B. Scene Memory:?
????? 記錄當(dāng)前場(chǎng)景中各個(gè)方面的記憶體佔(zhàn)用情況,包括GameObject、所用資源、各種元件以及GameManager等(天般情況通過(guò)AssetBundle載入的不會(huì)顯示在這裡).?
?? A. Other:?
????? ManagedHeap.UseSize:程式碼在執(zhí)行時(shí)造成的堆記憶體分配,表示上次GC到目前為止所分配的堆記憶體量.?
????? SerializedFile(3):?
????? WebStream:這個(gè)是由WWW來(lái)進(jìn)行載入的記憶體佔(zhàn)用.?
????? System.ExecutableAndDlls:不同平臺(tái)和不同硬體得到的值會(huì)不一樣。

5. 優(yōu)化重點(diǎn)

?? A. CPU-GC Allow:?
????? 關(guān)注原則:1.檢測(cè)任何一次性記憶體分配大於2KB的選項(xiàng) 2.檢測(cè)每幀都具有20B以上記憶體分配的選項(xiàng).?
?? B. Time ms:?
????? 記錄遊戲執(zhí)行時(shí)每幀CPU佔(zhàn)用(特別注意佔(zhàn)用5ms以上的).?
?? C. Memory Profiler-Other:?
????? 1.ManagedHeap.UsedSize: 移動(dòng)遊戲建議不要超過(guò)20MB.?
????? 2.SerializedFile: 通過(guò)非同步載入(LoadFromCache、WWW等)的時(shí)候留下的序列化檔案,可監(jiān)視是否被解除安裝.?
????? 3.WebStream: 通過(guò)非同步WWW下載的資原始檔在記憶體中的解壓版本,比SerializedFile大幾倍或幾十倍,重點(diǎn)監(jiān)視.****?
?? D. Memory Profiler-Assets:?
????? 1.Texture2D: 重點(diǎn)檢查是否有重複資源和超大Memory是否需要壓縮等.?
????? 2.AnimationClip: 重點(diǎn)檢查是否有重複資源.?
????? 3.Mesh: 重點(diǎn)檢查是否有重複資源.

6. 專案中可能遇到的問(wèn)題

?? A. Device.Present:?
????? 1.GPU的presentdevice確實(shí)非常耗時(shí),一般出現(xiàn)在使用了非常複雜的shader.?
????? 2.GPU執(zhí)行的非???,而由於Vsync的原因,使得它需要等待較長(zhǎng)的時(shí)間.?
????? 3.同樣是Vsync的原因,但其他執(zhí)行緒非常耗時(shí),所以導(dǎo)致該等待時(shí)間很長(zhǎng),比如:過(guò)量AssetBundle載入時(shí)容易出現(xiàn)該問(wèn)題.?
????? 4.Shader.CreateGPUProgram:Shader在runtime階段(非預(yù)載入)會(huì)出現(xiàn)卡頓(華為K3V2晶片).?
?? B. StackTraceUtility.PostprocessStacktrace()和StackTraceUtility.ExtractStackTrace():?
????? 1.一般是由Debug.Log或類似API造成.?
????? 2.遊戲釋出後需將Debug API進(jìn)行遮蔽.

?? C. Overhead:?
????? 1.一般情況為Vsync所致.?
????? 2.通常出現(xiàn)在Android裝置上.?
?? D. GC.Collect:?
????? 原因: 1.程式碼分配記憶體過(guò)量(惡性的) 2.一定時(shí)間間隔由系統(tǒng)呼叫(良性的).?
????? 佔(zhàn)用時(shí)間:1.與現(xiàn)有Garbage size相關(guān) 2.與剩餘記憶體使用顆粒相關(guān)(比如場(chǎng)景物件過(guò)多,利用率低的情況下,GC釋放後需要做記憶體重排)?
?? E. GarbageCollectAssetsProfile:?
????? 1.引擎在執(zhí)行UnloadUnusedAssets操作(該操作是比較耗時(shí)的,建議在切場(chǎng)景的時(shí)候進(jìn)行).?
????? 2.儘可能地避免使用Unity內(nèi)建GUI,避免GUI.Repaint過(guò)渡GC Allow.?
????? 3.if(other.tag == GearParent.MogoPlayerTag)改為other.CompareTag(GearParent.MogoPlayerTag).因?yàn)閛ther.tag為產(chǎn)生180B的GC Allow.?
?? F. 少用foreach,因?yàn)槊看蝔oreach為產(chǎn)生一個(gè)enumerator(約16B的記憶體分配),儘量改為for.?
?? G. Lambda表示式,使用不當(dāng)會(huì)產(chǎn)生記憶體洩漏.?
?? H. 儘量少用LINQ:?
????? 1.部分功能無(wú)法在某些平臺(tái)使用.?
????? 2.會(huì)分配大量GC Allow.?
?? I. 控制StartCoroutine的次數(shù):?
????? 1.開(kāi)啟一個(gè)Coroutine(協(xié)程),至少分配37B的記憶體.?
????? 2.Coroutine類的例項(xiàng) — 21B.?
????? 3.Enumerator — 16B.?
?? J. 使用StringBuilder替代字串直接連線.?
?? K. 快取元件:?
????? 1.每次GetComponent均會(huì)分配一定的GC Allow.?
????? 2.每次Object.name都會(huì)分配39B的堆記憶體.


Unity Profiler 效能分析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
科技| 晋城| 永州市| 喀什市| 精河县| 沧源| 汶川县| 浦北县| 忻城县| 关岭| 扎赉特旗| 盐亭县| 确山县| 安岳县| 上思县| 陕西省| 安乡县| 宣汉县| 海盐县| 建湖县| 萝北县| 嫩江县| 张家港市| 诸城市| 延津县| 临湘市| 铜梁县| 九台市| 嵩明县| 望江县| 射阳县| 调兵山市| 五华县| 邵阳市| 泗水县| 淳安县| 定结县| 平利县| 太谷县| 武城县| 东乌珠穆沁旗|