일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Design
- A*
- Unity
- 문제풀이
- 성능
- 인공지능
- 개발
- 길 찾기
- 프로그래밍
- 팩토리
- 강의
- 디자인
- 게임
- LeetCode
- Algorithm
- 디자인 패턴
- 유니티
- pattern
- desgin
- C++
- 알고리즘
- AI
- JPS
- GetComponet
- 2번
- 디자인패턴
- ML Agent
- 머신러닝
- 패턴
- Factory
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