2010-07-22 16 views
31

Quelle est la meilleure bibliothèque de collections de primitives Java? (Plus de mémoire et efficace du temps)Bibliothèque de collections de primitives Java la plus efficace

J'ai trouvé pour être les plus utilisés Trove et FastUtil, mais ne l'ai pas trouvé beaucoup de comparaison entre eux (ou entre autres)

Y at-il une comparaison disponible?

+1

Je le ferai s'il n'y en a pas. :) Mais je veux aussi savoir s'il y a d'autres que Trove et FastUtil qui valent la peine d'être comparés. – Sarmun

+0

vous devriez probablement inclure des collections 'java.util' comme point de référence, ainsi que des collections de communes Apache et des collections communes de Google/goyave où il y a des équivalents. Les problèmes vont être 1) comparer des fonctionnalités similaires avec des fonctionnalités similaires, 2) mesurer l'utilisation de la mémoire et 3) éviter les pièges standard qui provoquent généralement des «micro-benchmarks» Java pour donner des résultats bidon. –

+2

L'utilisation de la mémoire de toute collection non-primitive la rend inutile dans mon cas. Et dans tous les cas, ils sont certainement tous plus lents aussi, donc ils ne correspondent pas à la demande. Je n'ai besoin d'aucune fonctionnalité supplémentaire, juste une carte/ensemble/liste efficace simple etc. – Sarmun

Répondre

5

Je ne suis pas au courant d'un bon cas-test d'infrastructure primitive. Celui-ci serait agréable à voir, ainsi que de comparer avec des versions non-primitives (juste pour montrer comment les génériques Java avec autoboxing épique aspirent dans certains cas extrêmes).

Il ya un benchmark from the Trove itself, je pense que le moyen le plus simple est de le porter sur deux autres bibliothèques. De plus - pas sûr que vous avez vu celui-là - la bibliothèque Cern's Colt avait des listes de primitives et des matrices avant même l'apparition de l'AFAICR.

13

This comparision entre java collection, trove et colt pourrait être utile.

+1

le lien est rompu ..unable pour ouvrir en chrome/ – Edge

+1

Une autre comparaison http://java.dzone.com/articles/time-memory-tradeoff-example – leventov

4

J'ai récemment ouvert Banana source, qui est une autre bibliothèque de collections de primitives java. La différence par rapport aux autres bibliothèques est que Banana a sa propre gestion de la mémoire, ce qui lui permet d'implémenter n'importe quelle structure de données dynamique sans créer beaucoup d'objets. Banana est également beaucoup plus petit que la plupart des autres bibliothèques, jar est d'environ 60k en ce moment.

Il supporte déjà une LinkedList, ce que je ne pense pas que d'autres bibliothèques de collections primitives fournissent, et je prévois d'ajouter bientôt un Set et un Tree.

https://github.com/omry/banana

+0

Salut, bibliothèque incroyable. As-tu déjà fait le set? – bertie

+0

Non, mais si vous voulez donner un coup de couteau, je peux vous aider. peut-être même passer du temps dessus dans quelques semaines. –

+0

Merci beaucoup pour votre générosité, mais je ne suis pas pressé pour ce support Set. Je n'ai pas remarqué que c'était pour les collections primitives, car je cherchais des collections d'objets arbitraires. – bertie