본문 바로가기
프로그래밍/Unity

LayerMask.NameToLayer / Equals 성능/포퍼먼스

by neive 2021. 1. 14.
728x90

LayerMask.NameToLayer("Ground")

 

이렇게 쓰다보면 string 들어가니 성능 안나오고 그런게 아닐까..

 

미리 다른 곳에 받아놓고 그걸 쓰는 사람들도 있고.. 과연 얼마나

 

차이가 있을까 실험을 해봅시다

 

    using System.Diagnostics;
    
    private void Awake()
    {
        Stopwatch stopwatch = new Stopwatch();
        
        stopwatch.Start();
        for (int i = 0; i < 100000; i++)
            if (gameObject.layer == LayerMask.NameToLayer("Ground"))
                break;
        stopwatch.Stop();
        Debug.Log($"Test 1 Sec {stopwatch.ElapsedMilliseconds}");

        int layer = LayerMask.NameToLayer("Ground");
        
        stopwatch.Start();
        for (int i = 0; i < 100000; i++)
            if (gameObject.layer == layer)
                break;
        stopwatch.Stop();
        Debug.Log($"Test 2 Sec {stopwatch.ElapsedMilliseconds}");

        stopwatch.Start();
        for (int i = 0; i < 100000; i++)
            if (gameObject.layer.Equals(layer))
                break;
        stopwatch.Stop();
        Debug.Log($"Test 3 Sec {stopwatch.ElapsedMilliseconds}");
    }

각각 10만번에 번외편으로 == 과 Equals 비교까지!

 

결론 NameToLayer 를 10만번 써도 이 정도면 그냥 써도 별로 상관은 없

어보이고 그럼에도 미리 받아두면 3배 가까이 빠르다

 

== 과 equals 는 == 가 더 빠르기도 하고 equals 이 더 빠르기도

하고 할 때마다 다르다 그냥 가독성을 위해 == 도 나쁘지 않다

728x90

'프로그래밍 > Unity' 카테고리의 다른 글

KinematicObject 계열의 캐릭터 주의점  (0) 2021.01.25
2D Lookat / Lookat2D  (0) 2021.01.21
Spine Render Separator  (0) 2021.01.08
JobQueue  (0) 2020.12.27
UGUI Sprite 늘리기  (0) 2020.10.19

댓글