2012-09-14 3 views
4

SortedDictionaries를 사용하여 대기열을 시뮬레이트하고 (일부 요구 사항으로 인해) 정렬 된 사전에 Last()를 호출하여 항목을 가져옵니다. 내가 dequeue해야합니다.SortedDictionary의 First() vs Last() 성능

저는 사용자 정의 비교기를 사용하고 First()를 호출하거나 Last()를 계속 호출하는 성능에 대해 궁금합니다.

.NET 3.5 어셈블리를 디 컴파일 한 후 SortedDictionary 클래스에 Count 속성이 포함되어 있으므로 프레임 워크가 First를 호출 할 때 위치 0에서 항목을 반환하고 [count -1] 라스트가 호출되면, 맞습니까?

+0

@Oded : 이는 확장 방법입니다. 상호 작용은 사소한 것입니다. – SLaks

+0

슬랙을 방해하지 않으려 고합니까? – GR7

+0

@SLaks - 그들은 LINQ라고 생각하지 않았습니다. 감사. – Oded

답변

6

SortedDictionary 이후 제

(A this[int] 인덱서를 가지고있는) IList<TValue>를 구현하지 않습니다, Last()는 모든 일을 반복하지만 선택의 여지가 없습니다.

+0

괜찮습니까? 그렇다면 First()를 호출하면 Last를 호출하는 것보다 훨씬 효율적일 것입니다. 그래서 필자가 비교 자의 작업을 수행하여 dequeue해야하는 첫 번째 항목이 콜렉션의 처음에 삽입되고 First()를 호출하면 알맞은 이득이 될 것인가? – GR7

+0

예; 그것은 차이를 만들어야합니다. – SLaks

+0

끝내 주셔서 감사합니다. – GR7

4

마지막 메서드는 Enumerable 클래스의 확장 메서드입니다. 마지막으로 구현 한 후 IEnumerable (사용자의 SortedDictionary)을 IList<T> 번으로 캐스팅하려고합니다. 가능한 경우 Count 속성을 사용하여 마지막 요소에 직접 액세스합니다. 그렇지 않으면 마지막 요소에 도달하기 위해 모든 요소를 ​​반복해야합니다. SortedDictionaryIList<T>을 구현하지 않으므로 마지막 요소는 모든 요소를 ​​반복합니다.