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 |
댓글