2014-10-31 2 views
1

C#의 사전에 대한 일반적인 질문이 있습니다. 텍스트 파일을 읽고 키와 값으로 나누어 사전에 저장한다고 가정 해 보겠습니다. 모두를 하나의 사전에 넣거나 작은 사전으로 나누는 것이 더 유용할까요? 작은 텍스트 파일에는 큰 차이가 없지만 일부 파일은 100,000 개가 넘습니다. 무엇을 권하고 싶습니까?여러 사전 또는 하나의 거대한 하나를 사용하십시오.

+1

Eric에 동의합니다 ... 간단하고 쉬운 방법으로 먼저 수행 한 다음 목표에 맞지 않을 경우 필요에 따라 최적화/수정하십시오. 즉, .NET 범용 사전은 쉽게 100,000 개의 요소를 처리 할 수 ​​있으므로 명시된 최악의 시나리오에는 아무런 문제가 없을 것으로 예상됩니다. –

+1

.NET 프레임 워크가 4.5 미만인 경우 - 단일 개체에 대해 2Gb 메모리 제한에주의하십시오. 나는. "거대한"사전은이 경우 2GB를 초과 할 수 없습니다. –

+0

답변 주셔서 감사합니다 :) –

답변

6

첫 번째 규칙은 최적화를 시도하기 전에 항상 벤치마킹입니다. 즉, 어떤 사람들은 당신을 위해 벤치마킹을했을 것입니다. 기사에서 그 results here

을 확인

(키의 절반 번호) 작은 사전이 훨씬 더 빨랐다 (그냥 케이스에 그물에서 사라집니다). 이 경우 입력의 두 사전의 동작은 모두 과 동일합니다. 즉, 사전 에 불필요한 키가 있으면 속도가 느려집니다.

내 관점은 별도의 목적으로 별도의 사전을 사용해야한다는 것입니다. 두 세트의 키가있는 경우 동일한 사전 인 에 키를 저장하지 마십시오. 그들을 나눌 수 있다면, 당신은 검색 성능을 향상시킬 수 있습니다.

제공 :

전체 사전 : dotnetperls.com 기사에서 또한

791 MS
절반 크기의 사전 : 아마도 591 밀리 [빠른]

당신은 훨씬 적은 코드와 200ms 더 살 수 있습니다, 그것은 당신의 어플리케이션에 달려 있습니다.

+0

고마워요, 그게 내가 찾은 정보입니다 –

+0

제가 확인하실 수 있습니다. 1 사전에 260 만 개의 키가 있습니다. 조회 당 거의 두 번째 실행 중이었고, 100 개의 사전으로 부끄러워했습니다. 약 0.5 초. – ChadJPetersen

관련 문제