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