Trước tiên, hãy kiểm tra xem các giải pháp hiện có như libmemcache có phù hợp với nhu cầu của bạn không.
Nếu không ...
Bản đồ băm dường như là câu trả lời chắc chắn cho yêu cầu của bạn. Nó cung cấp o (1) tra cứu dựa trên các phím. Ngày nay, hầu hết các thư viện STL đều cung cấp một số loại băm. Vì vậy, hãy sử dụng cái được cung cấp bởi nền tảng của bạn.
Khi phần đó được thực hiện, bạn phải kiểm tra giải pháp để xem liệu thuật toán băm mặc định có đủ hiệu suất tốt cho nhu cầu của bạn hay không.
Nếu không, bạn nên khám phá một số thuật toán băm nhanh tốt được tìm thấy trên mạng
- số nguyên tố cũ tốt nhân lên
- http://www.azillionmonkeys.com/qed/hash.html
- http://burtleburtle.net/bob/
- http://code.google.com/p/google-sparsehash/
Nếu điều này chưa đủ tốt, bạn có thể tự mình cuộn một mô-đun băm để khắc phục sự cố mà bạn đã gặp với các vùng chứa STL mà bạn đã thử nghiệm và một trong các thuật toán băm ở trên. Hãy chắc chắn để đăng kết quả ở đâu đó.
Ồ và điều thú vị là bạn có nhiều bản đồ ... có lẽ bạn có thể đơn giản hóa bằng cách đặt khóa của mình dưới dạng num 64 bit với các bit cao được sử dụng để phân biệt bản đồ đó thuộc về bản đồ nào và thêm tất cả các cặp giá trị khóa vào một hàm băm khổng lồ. Tôi đã thấy các hàm băm có hàng trăm nghìn ký hiệu hoạt động hoàn toàn tốt trên thuật toán băm số nguyên tố cơ bản khá tốt.
Bạn có thể kiểm tra xem giải pháp đó hoạt động như thế nào so với hàng trăm bản đồ .. tôi nghĩ điều đó có thể tốt hơn từ quan điểm lập hồ sơ bộ nhớ ... vui lòng đăng kết quả ở đâu đó nếu bạn thực hiện bài tập này
Tôi tin rằng ngoài thuật toán băm, nó có thể là việc thêm / xóa liên tục bộ nhớ (có thể tránh được không?) Và hồ sơ sử dụng bộ nhớ cache cpu có thể quan trọng hơn đối với hiệu suất của ứng dụng của bạn
chúc may mắn