주제
물리 범위 체크 시 OverlapBox와 OverlapBoxNonAlloc의 메모리 처리 방식 차이
핵심 차이점
| 항목 |
OverlapBox |
OverlapBoxNonAlloc |
| 반환 방식 |
새 배열 생성하여 반환 |
기존 배열에 결과 저장 |
| GC 할당 |
있음 (매번 배열 생성) |
없음 (사전 할당된 배열 사용) |
| 성능 |
느릴 수 있음 |
더 빠르고 안정적 |
| 사용 편의성 |
간편 |
미리 배열을 준비해야 함 |
정리
- Physics.OverlapBox()는 간편하지만 GC 할당이 발생 → 반복 사용 시 성능 저하 가능
- Physics.OverlapBoxNonAlloc()은 사전 할당된 배열을 사용 → GC 없이 빠르고 안정적인 처리 가능
- 반복 호출이 예상되는 경우엔 사전에 메모리 할당이 미리 필요하다는 번거로움이 있지만
- NonAlloc 방식으로 교체하는 것이 실전 퍼포먼스에 도움
느낀 점
- 물리 계산 로직 자체는 동일하지만,
최적화를 위해 GC 비용을 줄이기 위해서는 NonAlloc을 적극 활용하는 것이 좋다고 생각한다.
- 물론 메모리를 미리 할당하고 크기를 미리 정해줘야 하는등 번거로움과 수고로움은 있지만,
그런만큼 성능면에서 리턴이 확실하다고 생각한다.
- 특히 오브젝트 탐색 등 반복적인 범위 체크에는 OverlapBoxNonAlloc을 사용하면 최적화에 큰 도움이 될것이다.