유니티 6로 넘어와보니 Find 함수 중 FindObjectOfType 함수가 더이상 사용되지않는다고 한다.
그 대신에 FindFirstObjectByType 이나 FindAnyObjectByType을 사용하라고 하는데, 대체 무슨 차이가 있길래 기존에 사용하던 함수를 버리고 새로운 함수를 사용하라고 하는 것인지 궁금했다.
그래서 이 코드를 준비했다.
using UnityEngine;
using System.Diagnostics;
public class FindFunctionTest : MonoBehaviour
{
private const int ITERATIONS = 10000000;
void Start()
{
// FindObjectOfType 테스트
Stopwatch sw1 = Stopwatch.StartNew();
for (int i = 0; i < ITERATIONS; i++)
{
var abcd1 = FindObjectOfType<Class>();
}
sw1.Stop();
Debug.Log($"FindObjectOfType 실행 시간 ({ITERATIONS}회): {sw1.ElapsedMilliseconds}ms");
// FindFirstObjectByType 테스트
Stopwatch sw2 = Stopwatch.StartNew();
for (int i = 0; i < ITERATIONS; i++)
{
var abcd2 = FindFirstObjectByType<Class>();
}
sw2.Stop();
Debug.Log($"FindFirstObjectByType 실행 시간 ({ITERATIONS}회): {sw2.ElapsedMilliseconds}ms");
// FindAnyObjectByType 테스트
Stopwatch sw3 = Stopwatch.StartNew();
for (int i = 0; i < ITERATIONS; i++)
{
var abcd3 = FindAnyObjectByType<Class>();
}
sw3.Stop();
Debug.Log($"FindAnyObjectByType 실행 시간 ({ITERATIONS}회): {sw3.ElapsedMilliseconds}ms");
}
}
System.Diagnostics에 있는 Stopwatch를 통해서 실행 시간을 측정하고 출력하도록 했다.
Class 클래스는 그저 간단한 debug만 있는 스크립트이므로 재미로 봐주길 바란다.
위 코드를 실행시킨 결과는 아래와 같다.

FindObjectOfType 과 FindFirstObjectByType의 경우는 서로 실행시간이 비슷하지만, FindAnyObjectByType의 경우는 두 함수에 비해 3배나 빠르다.
물론 함수마다 각각의 역할이 있는 것 이기에, 이것만 봐서 FindAnyObjectByType 함수가 빠르니까 앞으로는 저걸 쓰면 되겠네. 라고 하면 안된다.
그저 재미로만 봐주길 바라는 실험이다.
'Unity > Study' 카테고리의 다른 글
| 바탕화면 방치형 게임 화면 방식 (1) | 2025.09.09 |
|---|---|
| 가비지 컬렉션 GC (1) | 2025.05.04 |
| WaitForSeconds 미리 캐싱 (0) | 2025.05.01 |
| Unity Fake Null 관련 (0) | 2025.05.01 |