[UNITY] 코드의 실행 시간 측정 - Stopwatch 클래스

2023. 8. 1. 15:52유니티

유니티로 게임개발을 하다 보면 최적화가 필요한 경우가 생긴다.

최적화를 하면서 어떤 코드가 더 성능이 좋을지 모르겠으면, Stopwatch 클래스를 통해 직접 확인할 수 있다.

Stopwatch 클래스 사용법

Stopwatch 클래스는 System.Diagnostics 네임스페이스에 존재하기 때문에 using을 해주어야 한다.

using System.Diagnostics;

public class Test : Monobehavier
{
	void Start()
    {
        Stopwatch stopwatch = new();
        stopwatch.Start();

        //테스트할 코드

        stopwatch.Stop();
        UnityEngine.Debug.Log(stopwatch.ElapsedMilliseconds);  //Start부터 Stop까지 걸린 시간을 ms단위로 출력
    }
}

굳이 Debug.Log에 UnityEngine을 붙인 이유는 System.Diagnostics.Debug 클래스가 존재하기 때문이다.

사용예시

실수와 벡터를 곱할 때 식의 순서에 따른 속도를 검사하는 코드이다.

void Start()
    {
        Stopwatch sw1 = new();
        Stopwatch sw2 = new();

        sw1.Start();
        for (int i = 0; i < 10000000; i++)
        {
            transform.position += Vector3.one * i * Time.deltaTime;
        }

        sw1.Stop();
        UnityEngine.Debug.Log(sw1.ElapsedMilliseconds + "ms");


        sw2.Start();
        for (int i = 0; i < 10000000; i++)
        {
            transform.position += i * Time.deltaTime * Vector3.one;
        }

        sw2.Stop();
        UnityEngine.Debug.Log(sw2.ElapsedMilliseconds + "ms");
    }

검사결과