설계/기술
2024. 3. 13.
배열을 최적화하는 방법
배열을 사용하여 여러 데이터들을 정렬하다보면 문득 배열도 최적화할 수 있지 않을까를 생각해보게 된다. C#에서 배열은 unsafe context를 사용하여 선언하지 않는 이상 무조건 heap 에 할당된다. 이러한 특이사항은 재밌게도 클래스내 필드, 그리고 함수 내에서도 전부 동일한데, fixed keyword를 사용하지 않으면 배열의 고정 메모리 주소를 받아올 수 없고, 배열이 담긴 레퍼런스를 반환한다. 그리고 생성되고 레퍼런스되지않는 배열은 GC가 수집해가는데, 배열이 매번 반복적으로 필요한 상황에서 지속적인 배열 생성은 꽤나 큰 부담으로 작용될 수 있을 것이다. ArrayPool 이런 상황에서 ArrayPool 은 꽤나 매력적인 선택으로 다가올 수 있다. 사용을 다한 배열을 반환하고, 다른 사용자가 ..