TomoGのごちゃまぜ倉庫

Unity 関数の処理速度を測定する関数

今回は以前の記事で使用していた関数の処理速度を測定する関数を紹介します。

使用した記事
tomog.hatenablog.com

ソースコード

    private void TimeMeasurement(Action action)
    {
        _TimeMeasurement(action, "", 1);
    }

    private void TimeMeasurement(Action action, string Tag)
    {
        _TimeMeasurement(action, Tag + " : ", 1);
    }

    private void TimeMeasurement(Action action, uint count)
    {
        _TimeMeasurement(action, "", count);
    }

    private void TimeMeasurement(Action action, string Tag, uint count)
    {
        _TimeMeasurement(action, Tag + " : ", count);
    }

    private void _TimeMeasurement(Action action, string Tag, uint count)
    {
        System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
        float num = 0;
        for (uint i = 0; i < count; i++)
        {
            sw.Start();
            action();
            sw.Stop();
            float progress = (float)sw.Elapsed.TotalMilliseconds;
            num += progress;
            sw.Reset();
        }

        Debug.Log(Tag + " num : " + num.ToString());
        Debug.Log(Tag + "Average : " + (num / (float)count).ToString());
    }

◇例

    void Start()
    {
        TimeMeasurement(MaesurementProcess1, "Sample1", 100);
    }

    private void MaesurementProcess1()
    {
        int num = 0;
        for (int i = 0; i < 100; i++)
        {
            num += i;
        }
    }

この例では、0から99までを足す処理を100回実行し、合計時間と平均時間をmsで出力する


◇使い方

TimeMeasurement(Action action, string Tag, uint count)

・Action action

必須:計測したい関数を入れる変数

・string Tag

任意:複数計測した場合、混合しないためのタグ

・uint count

任意:処理を行う回数

オーバーロードとして

TimeMeasurement(Action action)
TimeMeasurement(Action action, string Tag)
TimeMeasurement(Action action,uint count)
TimeMeasurement(Action action, string Tag, uint count)

がある。

オーバーロードについて
tomog.hatenablog.com