2011-08-20 5 views
0

이 질문은 다른 형식으로 요청을받은 수 있지만, 사람이 가장 적합한 제안 할 수 있습니다 나의 현재의 요구 사항 ... ASP.Net에서사전/SortedList/SortedDictionary를 사용하여 asp.net 사용자 정의 리소스 공급자?

을 위해 전 지역 & 글로벌 자원 내 자신의 구현을 가지고, 내가 저장있어 키 값 쌍을 정적 사전 객체에 포함 시키면 완전히 최대 10,000 개의 값 (모든 페이지)이있을 수 있습니다. asp.net 응용 프로그램이 페이지를로드 할 때 정적 사전 개체에 값을 저장합니다. 리소스 파일에서 값을 읽는 대신 페이지를 다시 방문하면 정적 사전 개체에서 제공됩니다.

내 질문은 성능 이유 사전에 대한 것은 최고 또는 난 당신이 정렬이 필요하지 않은 경우 그래서, 당신은 단지에서 한 페이지를 찾고, 오버 헤드 SortedList/SortedDictionary

+0

왜 분류가 필요합니까? 키를 통해 항상 값에 액세스하면 SortedList **에서 생성, 삽입 및 삭제시 모든 인덱스를 재정렬해야하므로 이점은 없지만 성능은 떨어집니다. 유일한 이점은 키나 인덱스를 통해 액세스 할 수 있고 DictionaryEntries를 열거 할 때 키별로 올바른 정렬 순서를 얻을 수 있다는 것입니다. –

+0

정렬이 필요하지 않습니다. 레코드가 정렬 된 순서로 저장되어 있으면 단일 값을 가져 오는 것이 더 빠를 것이라고 생각했습니다. 내부에서 사용하는 알고리즘에 대해 잘 모르겠습니다. – user841683

+1

사전 유형에 저장된 위치는 중요하지 않습니다. 키를 통해 직접 액세스 할 수 있으며 주소와 같습니다. 사전에 머물러 라. 알고리즘에 대한 자세한 정보가 필요하면 [이 SO 응답] (http://stackoverflow.com/questions/1427147/sortedlist-sorteddictionary-and-dictionary/1427158#1427158)을보십시오. –

답변

1

정렬에 추가합니다 가야한다 사전에 키를 기반으로한다면, 나는 사전을 고수 할 것이다.

시나리오에서 조회 속도가 가장 중요한 관심사라고 가정합니다.

SortedDictionary는 아이템이 추가/삭제 될 때마다 콜렉션을 유지하는 바이너리 트리 인 red-black 트리를 사용합니다. 따라서 값 범위를 찾고있는 경우 컬렉션의 한 항목이 다른 항목과 관련된 위치가 중요한 경우 SortedDictionary가 적합합니다. 키 대신에 배열과 같은 인덱스를 사용하여 컬렉션에 액세스해야하는 경우 SortedList가 적합합니다.

사전은 해시 테이블을 사용하여 조회에 사용하는 키를 해시하고 저장하므로 임의의 단일 항목을 매우 빠르게 찾습니다. 이것은 귀하의 시나리오와 일치합니다.

SortedDictionary는 추가/조회를 위해 O (log n) 순서로 작동하며, Dictionary는 추가/조회를 위해 O (1)에서 작동합니다.

a comparison of the System.Collections.Generic collections을 참조하십시오.

+0

정렬/추가/삭제 중 또는 검색 중 정렬이 수행됩니까? – user841683

+1

정렬은 추가/삽입/삭제에서 수행되지만 백업 저장소는 다른 작업에 적합한 다른 메커니즘입니다. 나는 내 대답을 세부 사항으로 업데이트 할 것이다. – nekno

관련 문제