반응형
유니티의 스톱워치를 이용해 for문과 foreach의 속도를 비교해보자.
Stopwatch는 System.Diagnostics을 선언하면 사용할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics;
public class UnityTimer : MonoBehaviour
{
Stopwatch watch = new Stopwatch();
void Start()
{
watch.Start();
// 실행할 코드
watch.Stop();
}
}
list에 1 ~ 10을 넣은 후, 1부터 10까지 1000000번 더해보자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics;
public class UnityTimer : MonoBehaviour
{
Stopwatch watch = new Stopwatch();
void Start()
{
int sum = 0;
List<int> list = new() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
watch.Start();
int count = list.Count;
for(int n = 0; n < 1000000; n++)
for (int i = 0; i < count; i++)
sum += list[i];
watch.Stop();
UnityEngine.Debug.Log("for : " + watch.ElapsedMilliseconds + " ms");
/* ------------------------------------------------------------------------ */
watch.Start();
for (int n = 0; n < 1000000; n++)
foreach (int v in list)
sum += v;
watch.Stop();
UnityEngine.Debug.Log("foreach : " + watch.ElapsedMilliseconds + " ms");
}
}
위 스크립트를 빈 오브젝트에 추가하고 게임을 실행하면 아래의 결과를 얻을 수 있다.
여러 상황에 따라 다르겠지만 foreach가 더 느리다.
참고로 카운팅하는 시간을 0으로 초기화하려면 Reset() 메서드를 사용하면 된다.
watch.Reset();
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
댓글