C#
IEnumerable 리스트를 Linq를 사용 안 하고 빠르게 List로 변환하는 방법
이쥬우
2022. 11. 30. 11:43
728x90
행이 몇만개 되는 IEnumerable 리스트를 List로 변환해야 한 적이 있었다.
처음에는 Linq의 ToList 메소드를 그대로 사용했더니 정말 오래걸렸다,,
그래서 Linq의 ToList 메소드를 사용 안 하고 List로 변환하는 다른 방안을 찾기 시작했다,,
찾은 결과 임의의 ConcurrentBag 리스트를 이용하니 속도가 빨라진 것을 체감할 수 있었다. 아래는 테스트 코드~.~
var concurrentBagList = new ConcurrentBag<Code>();
Parallel.ForEach(totalCodes,
new ParallelOptions { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((System.Environment.ProcessorCount * 0.75) * 2.0)) },
code =>
concurrentBagList.Add(code)
);
var resultList = concurrentBagList.ToList();
위와 같이 처리하니 속도가 빨라졌다.
Linq를 너무 믿으면 안 되겠다는 교훈을 얻었다ㅠ
728x90