List vs Array 접근 패턴 분석과 Dictionary 해시 조회로 C# 자료구조 선택결
C#에서 메모리 관리를 고려할 때 자료구조 선택의 출발점은 접근 패턴이 무엇인가입니다. 인덱스로 자주 접근하고 크기가 고정이면 Array, 자주 추가·삭제가 필요하면 List<T>를 씁니다.
Unity 프로젝트에서 적 오브젝트 풀을 관리할 때 처음에는 List<T>를 썼는데, 자주 삽입·삭제하는 구조라 O(n) 탐색 비용이 누적되면서 프레임 드랍이 생겼습니다. Dictionary<string, Queue<GameObject>>로 바꾸어 해시 기반 O(1) 조회로 전환하니 성능이 눈에 띄게 개선됐습니다.
메모리 관점에서는 Boxing이 발생하는 상황도 주의합니다. IEnumerable 인터페이스를 통해 값 타입을 다룰 때 박싱이 발생하면 GC 부담이 늘어납니다. Generic 컬렉션을 사용하고, foreach 대신 for 루프로 인덱스 접근하는 방식이 GC 친화적이라는 것을 프로파일링을 통해 확인했습니다.