일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 강의
- pattern
- 프로그래밍
- C++
- GetComponet
- 인공지능
- 디자인패턴
- A*
- 성능
- 2번
- 알고리즘
- 디자인
- desgin
- 문제풀이
- 게임
- AI
- JPS
- 디자인 패턴
- Unity
- 팩토리
- Design
- 머신러닝
- 유니티
- 길 찾기
- Factory
- LeetCode
- ML Agent
- 개발
- Algorithm
- 패턴
Archives
- Today
- Total
Game Development
Unity 자식 클래스 참조 성능 비교 본문
자식 클래스 참조 성능 비교
상속받는 클래스 자식을 참조하는 방법 중 GetComponet와 as를 통하여 자식을 참조 할 수 있습니다.
여기서 GetComponet 와 as의 성능을 비교해 보도록 하겠습니다.
테스트
두 방식을 통한 속도의 차이를 알아보는 테스트 입니다. 천 만번 아래의 코드를 실행 했을 경우 서로의 속도를 비교해 보도록 하겠습니다.
GetComponet를 통한 방식
[SerializeField] TestParent test;
int count = 10000000;
private void Awake() {
TestChild test2;
sw.Start();
for ( int i = 0; i < count; i++ )
{
test2 = test.GetComponent< TestChild >();
}
sw.Stop();
UnityEngine.Debug.Log(sw.ElapsedMilliseconds.ToString());
}
as 를 통한 방식
[SerializeField] TestParent test;
int count = 10000000;
private void Awake() {
TestChild test2;
sw.Start();
for ( int i = 0; i < count; i++ )
{
test2 = test as TestChild;
}
sw.Stop();
UnityEngine.Debug.Log(sw.ElapsedMilliseconds.ToString());
}
GetComponet | as |
1382 ms | 2 ms |
결과
사실 당연한 결과이다 GetComponet는 오브젝트의 있는 모든 컨퍼넌트를 검사해야 하지만 as는 해당 스크립트만 검사하면 되기에 속도차이가 나는것이 당연하다. 다들 자식 참조하는건 as를 사용합시다.
'Unity > Performance' 카테고리의 다른 글
C# Generic Enum Type을 효율적으로 Int로 변환시켜보자 (0) | 2022.10.05 |
---|---|
Unity Dictionary ContainsKey 와 TryGetValue 비교 (0) | 2021.07.01 |
Unity GetComponent 위치에 따른 비용 비교 (0) | 2021.07.01 |
Unity Update 호출할 때, 사용되는 비용! (0) | 2021.06.26 |
Unity 반복문 성능 비교 (0) | 2021.06.25 |
Comments