2012-06-10 8 views
11

Ich bin durch die Bibliothek gegangen und habe viele gute, brauchbare Datenstrukturen darin gefunden.Leistungsmäßig, wie gut ist die Guava-Bibliothek?

Wenn jemand anderes es benutzt hat, können Sie dann Feedback geben, wie es bei der Verwendung von riesigen Datensätzen funktioniert? Grundsätzlich suche ich nach BigO Notation für seine Operationen.

Vielen Dank im Voraus

+2

Welche Betriebsleistung suchen Sie speziell? –

+3

Die Guava-Bibliothek ist groß. Welche Operationen betrachten Sie besonders? – Perception

+1

Es wäre toll, als Diagramm neue Sammlungen (MultiSet, Multimap, BiMap, Tabelle) bereitzustellen. Wie in Java Sammlung [BigO Notation] (http://simplenotions.wordpress.com/2009/05/13/java-standard-data-structures-big-o-notation/). –

Antwort

35

Guava Mitwirkende hier.

Ähm, was gibt es zu sagen? Alle Hash-basierten (und Enum-basierten) Sammlungen haben die Single-Entry-Operationen in konstanter Zeit, genau wie Sie es erwarten. (HashMultiset, LinkedHashMultiset, ConcurrentHashMultiset, HashBiMap, HashBasedTable, ImmutableSet, ImmutableMap, EnumMultiset, EnumBiMap usw. fallen in diese Kategorie.) Alle Baum-basierte/sortierten Sammlungen haben logarithmische Zeit für ihre einströmige Operationen, einschließlich TreeMultiset, ImmutableSortedMap, und ImmutableSortedSet.

Unter Multimaps, die Dokumentation im Grunde teilt Ihnen die Map und die Wert-Sammlung Implementierungen, und Sie können es von dort herausfinden. HashMultimap ist im Grunde ein HashMap zu HashSet s, LinkedHashMultimap ein LinkedHashMap-LinkedHashSet s ist, ArrayListMultimap ein HashMap zu ArrayList s ist, LinkedListMultimap ein LinkedHashMap-LinkedList s (Performance-weise, wenn technisch nicht wahr), TreeMultimap ist ein TreeMap-TreeSet s ImmutableSetMultimap ist ein ImmutableMap bis ImmutableSet s, ImmutableListMultimap ist ein ImmutableMap bis ImmutableList s.

Das einzige, was nicht selbstverständlich sein könnte, ist wahrscheinlich, dass die SortedMultiset Implementierungen subMultiset().size() Operationen in O(log n) Zeit zur Verfügung stellen, die Sie nicht nur mit einem JDK TreeMap<E, Integer> tun könnten.

Alle Ansichten von Sammlungen (wir mögen Ansichten viel) Rückkehr in konstanter Zeit und haben die Asymptotik, die Sie erwarten würden.

Gibt es etwas Spezieller, worüber Sie besorgt waren?

(Im Allgemeinen ist Guava im Grunde die Kernbibliotheken, die Google in der Produktion verwendet, was ich glaube, ist ein ziemlich starker Beweis dafür, dass die Utilities in stark beanspruchten Umgebungen zufriedenstellend funktionieren. Darüber hinaus wird Guava ständig verbessert und Sie erhalten diese Verbesserungen grundsätzlich kostenlos.)

+1

Sumit, siehe [Immutable-Sammlungen] (http://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained#Where?) Und [Neue Sammlungsarten] (http://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained) für Tabellen, die besser erklären, welcher Typ von was unterstützt wird. –

+0

Beeindruckende Antwort. –

+1

Meh. Ich meine ... nichts davon sollte _surprising._ Gewiss, es ist eine von Guavas Prioritäten, um sicherzustellen, dass es keine Überraschungen über diese Dinge gibt ... –

Verwandte Themen