真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与踩坑

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