LINQ : LINQ to Objects 가 성능최적화를 수행하는가? CSharp


LINQ to Objects 를 보면 대부분 Enumerable<T>.XXXX 이므로, 그냥 foreach 구문을 수행하는 것처럼 보입니다만, 
내부 코드는 상당히 복잡합니다. 즉 상황에 맞게 최적화된 코드가 수행되도록 만들어졌다는 뜻입니다.

Reflector 를 통해 Enumerable<T> 를 보면 인자로 제공되는 sequence 가 IEnumerable<T> 이지만, 실제 IList<T> 이거나 ICollection<T> 라면, 그에 맞게 알맞은 메소드를 실행합니다. 
이도 저도 아니고 딱 IEnumerable<T> 이라면 별 수 없이 foreach를 수행하는 수 밖에 없죠^^

C# FAQ에 LINQ의 성능최적화 관련 내용이 있네요. 여기를 참조하세요.