真Unity3d_Profiler調試DeepProfiling和部分真實代碼優化案例

說2個重點

開發環境始終不是真機環境,沒有程序員想犯錯,可事實就是沒有程序員能不犯錯

測試工具本身也是程序,並不是說程序錯或不好用,但極其容易出現平時開發中的問題:你會真的以爲你的以爲就是你的以爲

 

其實很多公司都在做一些實踐,也是有益的,但是很多爲了做而做的“優化”工作就未必那麼有效,或使程序員能力不能發揮

而最終你會發現你需要這種程序員,閱讀代碼能力的

 

這裏只是說說一些代碼案例,需要程序員對閱讀代碼有一些“理解”

之前我分享了不少可視化工具,但這不是

這下面的案例需要有一些“閱讀理解”

Profiler 的 DeepProfiling的作用

不開deepprofiling的情況

上圖是不開Deep的截圖,是不是感覺無法閱讀?

根本都不知道 PhysX.CcScene.ccdBroadPhase什麼意思,一大堆英文都沒見過的,和自己開發出入很大

但是等等.......

PhysX  看上難道不是c#的包名

ScScene 不像類名嗎?還是很臭名昭著的駝峯式命名哦

ccdBroadPhaseAABB

clothPreprocessing

colliderStep 這幾個方法名沒覺得命名的很好的嗎??

如下這麼寫,會不會比較容易“閱讀”??

using UnityEngine;
using System.Collections;
namespace PhysX
{
    public class ScScene
    {
        void ccdBroadPhaseAABB() { }
        void clothPreprocessing() { }
        void colliderStep() { }
    }
}

當然Unity內部並不用C#實現,但Unity確實,明顯地告訴你這些內部方法的"效能“

使用DeepProfiling的情況

如上圖,明顯的,開了DeepProfiling,會顯示(監測)一些我們自己寫的方法名,如上圖

當然也有一些方法看上去也還是雲裏霧裏,但至少說明了LuaTable,Dictionary 這些“高效”的我們熟悉的“效能”大戶出現了

這個截圖也是隨便的,但Unity確實如他官方上說的,開了DeepProfiling就會把每個方法(日常開發,非官方)Record下來

而目測也幾乎每個方法都有記錄,而且coroutineonTriggerEnter 官方效能大戶也是會單獨在Profiler顯示

可以說開Deep幫助很大了

用Profiler分析一些代碼案例

下面只寫3個案例,代碼邏輯,代碼流程,代碼框架就沒法具體展開講了,請自行腦補

案例一:子彈射出,受擊怪物受到傷害,碰撞體響應

  public void OnTriggerEnter(Collider other)
    {
        if (owner == null)
            return;

        var otherUnit = other.GetComponent<NTGBattleUnitController>();
        if (otherUnit != null && otherUnit.alive && otherUnit.group != owner.group && (mask & otherUnit.mask) != 0)
        {
            otherUnit.Hit(shooter, this);
            //Debugger.LogError("減速");

            //otherUnit.AddPassive(pBehaviour., owner, p: new[] { this.param[1] });
            otherUnit.AddPassive(pBehaviour.passiveName, owner, skillController);

            FXHit(otherUnit);
        }
    }

流程圖如上:這麼做有什麼Profiler的“效能”問題呢??

Animator.SetTrigger(keyName) 名字不對,則有一個Warning,

上圖沒能清楚的表達清楚,雖只是一個流程,但是所有碰撞都會通過OnTrigger觸發,即使能保證只是受擊怪物,那可能也是十幾個怪物,會觸發十幾遍這個流程,是十幾遍

(如果你以爲WARNING不算什麼,那麼真心建議放棄你以爲的以爲就是真相,的這種想法)

(又一個程序員比犯錯誤之一,你以爲不是多線程,但卻承受多線程的壞處)

你會收到一堆莫名的錯誤,而這又恰恰非常佔“效能”

 

所以,日誌要注意“沒紅色ERROR"是不足夠了,Warning也要注意。。。。

擴展閱讀

性能優化之在真機上開啓DeepProfile與踩坑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章