Android端末でのUnityプロファイル


Unity5になると無料版でもProfilerが使えるということで、日頃重さに苦労しているAndroid端末の処理負荷を計測してみました。

ただ、UnityのProfiler平均値がとれないのと、計測結果のが安定しないのでだいたいの平均値になります(´・ω・`)

検証環境

Unity5 5.0.1f1
AQUOS PHONE IS12SH
Android 2.3.3

検証1 Rigidbody2D+Collider2D

RigidbodyがついていないColliderを動かすと処理負荷があがるらしいので、実際にどのくらいの変化があるのか検証

    void Start () {
        gameObject.transform.position = new Vector3 (1.0f, 0.0f);
    }   
    void Update () {
        // 適当にうごかす
        gameObject.transform.position = -gameObject.transform.position;
    }

・Rigidbodyなし Collider2Dをつけたオブジェクト

関数 処理負荷
MoveTest.Update 0.12ms 〜 0.18ms
Physics.Processing 0.72ms 〜 0.76ms
Physics2D.FixedUpdate 0.06ms 〜 0.09ms

・Rigidbodyあり COllider2Dをつけたオブジェクト

関数 処理負荷
MoveTest.Update 0.03ms 〜 0.09ms
Physics.Processing 0.42ms 〜 0.76ms
Physics2D.FixedUpdate 0.12ms 〜 0.18ms

あまりかわらない・・?

10個分のオブジェクトを作成してみた
・Rigidbodyなし Collider2Dをつけたオブジェクト

関数 処理負荷
MoveTest.Update 0.67ms 〜 0.94ms
Physics.Processing 0.30ms 〜 0.57ms
Physics2D.FixedUpdate 0.12ms 〜 0.24ms

・Rigidbodyあり COllider2Dをつけたオブジェクト

関数 処理負荷
MoveTest.Update 0.24ms 〜 0.33ms
Physics.Processing 0.30ms 〜 0.57ms
Physics2D.FixedUpdate 0.42ms 〜 0.70ms

考察

Rigidbodyがない場合は MoveTest.Update 、ある場合は Physics2D.FixedUpdateが上がっている。


Rigidbodyがない場合は MoveTest.Updateのなかで CircleColiderの再作成を行っているので、こちらの処理をMoveTest.Updateで行うか、Physic2D.FixedUpdateで行うかの違いしかないのかもしれません。