몇 가지 빠른 벤치마킹 후 컬렉션이 IList
인 것으로 생각되면 IEnumerable.Last()
(LINQ)에 대한 호출이 최적화되었는지 여부를 확인하기 위해 .NET Core 소스를 살펴 보았습니다. 그러나 It turns out that yes, the input is specifically checked for IList
, 그 전에도 입력이 IPartition
을 구현하는지 확인합니다. IPartition
is defined here,하지만 나는 그것이 무엇을 해야하는지 전혀 이해하지 못합니다..NET 코어에서 IPartition은 무엇을합니까?
무엇 IPartition
의 목적은 어떻게 가능성이 IList
의 보통 일정 시간의 색인보다 더 빨리 (그렇지 않은 경우 또는, 왜 입력이 IList
보다 일찍 IPartition
에 대한 체크) 될 수 있을까?
데이터의 하위 집합을 만들기 위해 'Take'와 같은 메소드에서 사용 된 것으로 보입니다. 'IQueryable' 등을 사용할 때 데이터가 완전히로드되기 전에 많은 linq 메소드가 호출 될 수 있다는 것을 명심하십시오. 'IPartition'을 검사하면 부적절한 최적화가 가능할 수 있습니다. –