2012-06-10 11 views
11

Przeszedłem przez bibliotekę Google Guava i znalazłem w niej wiele dobrych, użytecznych struktur danych.Wydajność, jak dobra jest biblioteka Guava?

Jeśli ktoś jeszcze go użył, to czy możesz przekazać opinię o tym, jak to się stało, gdy jest używany z ogromnymi zbiorami danych? Zasadniczo szukam zapisu BigO dla jego operacji.

Z góry dziękuję

+2

Których parametrów pracy szczególnie potrzebujesz? –

+3

Biblioteka Guawy jest duża. Na które operacje w szczególności patrzysz? – Perception

+1

Wspaniale byłoby udostępnić jako tabelę nowych operacji kolekcjonowania (MultiSet, Multimap, BiMap, Table). Podobnie jak w kolekcji java [notacja BigO] (http://simplenotions.wordpress.com/2009/05/13/java-standard-data-structures-big-o-notation/). –

Odpowiedz

35

Współtwórca Guava tutaj.

Um, co tam jest do powiedzenia? Wszystkie zbiory oparte na hash (i oparte na enum) mają operacje pojedynczego wpisu w stałym czasie, dokładnie tak, jak można się spodziewać. (HashMultiset, LinkedHashMultiset, ConcurrentHashMultiset, HashBiMap, HashBasedTable, ImmutableSet, ImmutableMap, EnumMultiset, EnumBiMap itd wszystkie należą do tej kategorii). Wszystkie kolekcje oparty na drzewie/sortowych mieć logarytmiczną czas ich działania pojedynczego wejścia, w tym TreeMultiset, ImmutableSortedMap, i ImmutableSortedSet.

Wśród multimap, no cóż, dokumentacja w zasadzie mówi ci o Map i implementacjach kolekcji wartości, i możesz to zrozumieć. HashMultimap jest w zasadzie HashMap do HashSet s, LinkedHashMultimap JEST LinkedHashMap do LinkedHashSet s, ArrayListMultimap JEST HashMap do ArrayList s, LinkedListMultimap JEST LinkedHashMap do LinkedList s (wydajność mądry, jeśli nie jest technicznie prawdziwe), TreeMultimap JEST TreeMap do TreeSet s , ImmutableSetMultimap jest s. ImmutableMap do s, .

Jedyną rzeczą, która może nie być oczywiste jest chyba, że ​​implementacje SortedMultiset zapewnić subMultiset().size() operacje w O(log n) czasie których nie można było zrobić tylko z JDK TreeMap<E, Integer>.

Wszystkie widoki kolekcji (bardzo lubimy widoki) zwracają się w stałym czasie i mają asymptotykę, jakiej można się spodziewać.

Czy jest coś bardziej konkretnego, o co się martwisz?

(Ogólnie rzecz biorąc, Guava jest zasadniczo podstawową biblioteką używaną przez Google w produkcji, co, jak sądzę, jest bardzo mocnym dowodem na to, że narzędzia działają w zadowalającym środowisku, a Guava jest stale ulepszany, te ulepszenia są dostępne za darmo).

+1

Sumit, patrz [Niezmienne kolekcje] (http://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained#Where?) I [Nowe typy kolekcji] (http://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained) dla tabel lepiej wyjaśniających, który typ jest wspierany przez co. –

+0

Imponująca odpowiedź. –

+1

Meh. To znaczy ... nic z tego nie powinno dziwić. Z pewnością jednym z priorytetów Guava jest upewnienie się, że nie ma żadnych niespodzianek w tych sprawach ... –

Powiązane problemy