Primero verifique si las soluciones existentes como libmemcache se ajustan a sus necesidades.
Si no ...
Los mapas hash parecen ser la respuesta definitiva a sus necesidades. Proporciona o (1) búsqueda basada en las claves. La mayoría de las bibliotecas STL proporcionan algún tipo de hash en estos días. Así que usa el que te proporciona tu plataforma.
Una vez que termine esa parte, debe probar la solución para ver si el algoritmo de hash predeterminado es lo suficientemente bueno en cuanto a rendimiento para sus necesidades.
Si no es así, debería explorar algunos buenos algoritmos de hash rápido que se encuentran en la red.
- buen número primo multiplicar algo
- http://www.azillionmonkeys.com/qed/hash.html
- http://burtleburtle.net/bob/
- http://code.google.com/p/google-sparsehash/
Si esto no es lo suficientemente bueno, puede lanzar un módulo hash por su cuenta, que solucione el problema que vio con los contenedores STL que ha probado y uno de los algoritmos hash anteriores. Asegúrese de publicar los resultados en algún lugar.
Ah, y es interesante que tenga múltiples mapas ... quizás pueda simplificar al tener su clave como un número de 64 bits con los bits altos utilizados para distinguir a qué mapa pertenece y agregar todos los pares de valores de clave a un hash gigante. He visto hashes que tienen cientos de miles de símbolos que funcionan perfectamente bien en el algoritmo básico de hash de números primos bastante bien.
Puede comprobar cómo funciona esa solución en comparación con cientos de mapas ... creo que podría ser mejor desde el punto de vista del perfil de la memoria ... por favor publique los resultados en algún lugar si puede hacer este ejercicio
Creo que más que el algoritmo hash, podría ser la adición / eliminación constante de memoria (¿se puede evitar?) Y el perfil de uso de caché de la CPU lo que podría ser más crucial para el rendimiento de su aplicación.
buena suerte