2012-05-08 24 views
7

Bất kỳ ai có thể giải thích cho tôi sự khác biệt giữa FSDirectory và MMapDirectory là gì? Tôi muốn làm ấm bộ nhớ cache của mình. Tôi đọc rằng điều này có thể hữu ích nhưng không thể tìm thấy cách này sẽ hữu ích trong việc làm ấm bộ nhớ cache. Giải thích cho tôi nếu bạn có bất kỳ ý tưởng nào. Ngay cả con trỏ cũng được chào đón.sự khác biệt giữa FSDirectory và MMap Directory?

Tài liệu Lucene nói rằng MMap sử dụng bộ nhớ ảo để tăng tốc độ tra cứu các chỉ mục.

như thế nào speedp lên đạt được và những gì sẽ xảy ra nếu chỉ số của tôi là lớn để họ sẽ không phù hợp trong bộ nhớ ảo của tôi>

+0

Có phần đầu tiên :) Vì các chỉ mục khả dụng trong bộ nhớ ảo, việc tìm kiếm sẽ nhanh hơn. Giúp tôi tìm ra phần thứ hai của câu hỏi – ganesshkumar

Trả lời

7

MMapDirectory là một trong những lớp con cụ thể của lớp trừu tượng FSDirectory . Nó sử dụng các tệp ánh xạ bộ nhớ để truy cập thông tin trong chỉ mục.

Các tùy chọn khác là SimpleFSDirectoryNIOFSDirectory, sử dụng các phương pháp khác nhau. Bạn nên xem số documentation for FSDirectory để có giải thích ngắn gọn về cả ba. Như bạn sẽ thấy ở đó, FSDirectory.open(File) cố gắng chọn triển khai tốt nhất cho môi trường của bạn.

Theo kinh nghiệm của riêng mình, tôi chưa thấy có sự khác biệt đáng kể về hiệu suất giữa NIOFSDirectoryMMapFSDirectory, nhưng bạn nên thực hiện một số thử nghiệm hiệu suất bằng cách sử dụng thiết lập phần cứng và dữ liệu của riêng bạn.

Trong trường hợp bạn kết thúc bằng cách sử dụng MMapFSDirectory, kích thước bộ nhớ và chỉ mục ảo chỉ có thể là sự cố trên máy 32 bit (unless your indexes are larger than 2^48 bit = 32TB).

+0

Tôi đã làm với dự án này và tác động của MMapDirectory là đáng kể. Bạn sẽ lưu ý sự khác biệt nếu kích thước tập tin là rất lớn. Tôi đang tải một tệp không phù hợp với bộ nhớ. – ganesshkumar

1

Nếu các chỉ mục của bạn không phù hợp với bộ nhớ ảo, bạn có thể sử dụng FSDirectory tốt hơn. Vấn đề là sử dụng MMapDirectory khi nó không phù hợp với bộ nhớ ảo tương đương với việc sử dụng FSDirectory và sử dụng thuật toán lưu bộ nhớ đệm của hệ điều hành (thuật toán bộ nhớ đệm của hệ điều hành có thể tốt hơn những gì bạn có thể viết tay). ('Tương đương' vì trong cả hai trường hợp, chỉ một phần của chỉ mục sẽ ở trong bộ nhớ vật lý cùng một lúc.)

Nhưng như 'martin' đã nói ở trên, bạn cần thực hiện một số thử nghiệm hiệu suất của riêng bạn.

Các vấn đề liên quan