Je suis à la recherche d'une bonne implémentation de la carte de hachage. Plus précisément, c'est un bon outil pour créer un grand nombre de cartes, la plupart petites. Donc, la mémoire est un problème. Il devrait être sûr pour les threads (bien que perdre le set impair soit un bon compromis en échange d'une meilleure performance), et rapide pour les deux get et put. Et j'aimerais aussi la lune sur un bâton, s'il vous plaît, avec un ordre de justice.Java: cartes multithread: comment les implémentations se comparent-elles?
Les options que je connais sont:
HashMap. Désastreusement un thread-safe.
ConcurrentHashMap. Mon premier choix, mais cela a une empreinte mémoire lourde - environ 2k par instance.
Collections.sychronizedMap (HashMap). Cela fonctionne bien pour moi, mais je suis sûr qu'il doit y avoir des alternatives plus rapides.
Trove ou Colt - Je pense que ni l'un ni l'autre n'est thread-safe, mais peut-être que le code pourrait être adapté pour être thread-safe.
D'autres? Un conseil sur ce qui bat quoi quand? De très bons nouveaux algorithmes de carte de hachage que Java pourrait utiliser une implémentation?
Merci d'avance pour votre contribution!
Ne pas oublier l'ancienne HashTable. Déconseillé, mais toujours trouvé autour du code Java hérité. – Uri
@Uri: c'est Hashtable avec les minuscules t :) Parler de l'héritage – BalusC
Vous pouvez également gérer dans une certaine mesure l'empreinte de ConcurrentHashMap en ajustant l'argument constructeur concurrencyLevel. – Affe