Estoy buscando una buena implementación del mapa hash. Específicamente, uno que es bueno para crear una gran cantidad de mapas, la mayoría de ellos pequeños. Entonces la memoria es un problema. Debe ser seguro para la ejecución de subprocesos (aunque perder el put impar puede ser un compromiso aceptable a cambio de un mejor rendimiento), y rápido tanto para get como para put. Y también me gustaría la luna en un palo, por favor, con un orden lateral de justicia.Java: mapas multiproceso: ¿cómo se comparan las implementaciones?
Las opciones que conozco son:
HashMap. Desastrosamente desenroscar seguro.
ConcurrentHashMap. Mi primera opción, pero esto tiene una gran huella de memoria, unos 2k por instancia.
Collections.sychronizedMap (HashMap). Eso está funcionando bien para mí, pero estoy seguro de que debe haber alternativas más rápidas.
Trove o Colt: creo que ninguno de estos es seguro para subprocesos, pero quizás el código podría adaptarse para ser seguro para subprocesos.
¿Alguna que otros? ¿Algún consejo sobre qué es mejor qué cuándo? ¿Algún algoritmo nuevo de hash realmente bueno con el que Java pueda usar una implementación?
Gracias de antemano por su contribución!
No olvides la antigua HashTable. Obsoleto, pero aún se encuentra alrededor del código heredado de Java. – Uri
@Uri: es Hashtable con la t minúscula. Hablando de herencia ... – BalusC
También puede administrar hasta cierto punto la huella de ConcurrentHashMap ajustando el argumento del constructor concurrencyLevel. – Affe