색인 용 포인터를 버립니다.
디스크에있는 DAWG을 구성하는 것과 조금 비슷합니다. 그렇게 아주 멋지게 만든 이유는 파일을 읽지 않고 직접 mmap을로드 할 수 있기 때문입니다. 해시 공간을 관리 할 경우, 나는 이런 식으로 뭔가를 할 것이라고 생각, 2 16 2 24 개 항목을 말 :
- 무료 인덱스의 목록을 유지합니다. 테이블이 비어 있으면 각 체인 인덱스는 다음 인덱스를 가리 킵니다.
- 체인이 필요할 때 테이블의 여유 공간을 사용하십시오.당신이 불법 거주자 (다른 곳에서 오버 플로우)에 의해 점령 것 인덱스에 뭔가를 넣어해야하는 경우
- :
- 기록 인덱스
- 스왑 (의가 N을 부르 자) 새 요소 및 불법 거주자
- 새로운 자유 지수 (F)에 불법 점거자를 놓는다. 당신이 완전 무료 인덱스 부족하면
- 가 불법 거주자의 해시 인덱스에 체인을 따라 F.
- 와 N을 대체하기 위해, 당신은 아마 더 큰 테이블이 필요하지만, 당신은시, mremap를 사용하여 조금 더 대처할 수 테이블 뒤에 여분의 방을 만들 수 있습니다.
이렇게하면 수정할 필요없이 직접 테이블을 mmap하고 사용할 수 있습니다. (OS 캐시에서라면 무서운 속도가 빠릅니다!)하지만 포인터 대신 인덱스로 작업해야합니다. syscall-round-trip-time에서 메가 바이트를 사용할 수 있다는 것은 매우 유감 스럽지만 페이징 때문에 실제 메모리보다 메가 바이트를 적게 차지합니다.
디스크에서 조회를 수행 하시겠습니까, 아니면 해시 테이블을 유지해야합니까? – Hank
행크, 룩업은 메모리에로드 된 HT로 수행됩니다. 그래, 해시 테이블을 유지하면된다. – Girish
자세한 내용 - 언어, 시스템 등을 입력하십시오. –