C#에서 List<T>의 성능을 최적화하려면, List<T>의 Capacity와 관련된 몇 가지 중요한 고려사항을 이해하고 활용하는 것이 중요합니다. List<T>는 동적으로 크기를 조정하는 컬렉션이지만, 때때로 성능을 개선하려면 초기 용량을 설정하거나 필요한 경우 용량을 미리 늘려야 합니다.
1. 초기 Capacity 설정
List<T>는 기본적으로 4개의 요소를 가지는 초기 용량을 설정합니다. 그러나 많은 요소를 추가할 경우, 내부 배열이 계속해서 크기를 두 배로 늘려야 하므로 성능 저하가 발생할 수 있습니다. 따라서 예상되는 요소의 수를 미리 알고 있다면, List<T>를 생성할 때 초기 Capacity를 설정하는 것이 좋습니다.
1
2
|
int estimatedSize = 1000;
List<int> list = new List<int>(estimatedSize);
|
cs |
2. Capacity 수동 조정
List<T>의 Capacity를 수동으로 늘리거나 줄여서 성능을 최적화할 수 있습니다. 예를 들어, 많은 요소를 추가한 후 불필요한 여유 공간을 줄이거나, 리스트의 크기가 커질 때마다 성능 저하를 방지하기 위해 미리 용량을 늘리는 방법이 있습니다.
1
2
3
4
|
List<int> list = new List<int>();
// 예상보다 많은 요소가 추가될 경우 용량을 수동으로 늘림
list.Capacity = 10000;
|
cs |
만약 요소를 제거하고 나서 여유 용량이 많아진다면, TrimExcess 메서드를 사용해 여유 공간을 줄일 수 있습니다.
1
|
list.TrimExcess();
|
cs |
3. AddRange 대신 Add
List<T>에 많은 요소를 추가할 때 AddRange를 사용하는 것이 더 효율적일 수 있습니다. AddRange는 내부적으로 요소들을 한 번에 추가하므로, 여러 번 Add를 호출하는 것보다 성능이 좋습니다.
1
2
|
List<int> list = new List<int>();
list.AddRange(new int[] { 1, 2, 3, 4 });
|
cs |
4. 큰 리스트에서 RemoveAt 사용 최적화
RemoveAt 메서드는 리스트에서 요소를 제거할 때 뒤에 있는 모든 요소를 이동시키므로, 성능에 영향을 미칠 수 있습니다. 리스트에서 요소를 많이 제거해야 하는 경우, 다른 컬렉션을 사용하거나 List<T>에서 제거할 요소들의 인덱스를 한 번에 처리하는 방법을 고려할 수 있습니다.
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 폼사이즈 수정안될때 (0) | 2024.01.06 |
---|---|
[C#] Sleep을 이용하여 CPU부하줄이기, Sleep(0)의미 (0) | 2023.07.18 |
[c#] postgresql 연동 (0) | 2023.06.10 |
[C#] 네이버센스 SMS문자보내기 (0) | 2023.02.14 |
[C#] 설치파일 만들기 (0) | 2023.01.16 |