2012-06-10 29 views
11

İçinde iyi, kullanışlı veri yapılarının Google Guava kütüphane ve kurar sürü geçirdik.Performans açısından, Guava kütüphanesi ne kadar iyi?

başkasının büyük veri setleri ile kullanıldığında nasıl bir performans hakkında geri bildirim sağlayabilir sonra kullandıysa? Temelde, işlemleri için BigO notasyonu arıyorum.

Şimdiden teşekkürler

+2

Hangi çalışma performansını özellikle arıyorsunuz? –

+3

Guava kütüphanesi geniştir. Özellikle hangi operasyonlara bakıyorsunuz? – Perception

+1

Yeni Koleksiyonlar (MultiSet, Multimap, BiMap, Table) işleminin bir şeması olarak sunmak harika olurdu. Java koleksiyonunda olduğu gibi [BigO notasyonu] (http://simplenotions.wordpress.com/2009/05/13/java-standard-data-structures-big-o-notation/). –

cevap

35

Guava katkıları burada.

Aa, orada ne demeli? Tüm karma tabanlı (ve enum tabanlı) koleksiyonlar, beklediğiniz gibi, sürekli olarak tek giriş işlemlerine sahiptir. (HashMultiset, LinkedHashMultiset, ConcurrentHashMultiset, HashBiMap, HashBasedTable, ImmutableSet, ImmutableMap, EnumMultiset, EnumBiMap vb o sınıfa girer.) Tüm ağaç bazlı/sıralı koleksiyonları ImmutableSortedMap, TreeMultiset dahil olmak üzere kendi tek girişli işlemleri için logaritmik zaman var, ve ImmutableSortedSet.

Çoklu evraklar arasında, belgeler temel olarak Map ve değer toplama uygulamalarını anlatır ve siz onu buradan öğrenebilirsiniz. HashMultimapLinkedListMultimap bir LinkedHashMapLinkedList s (epeyce teknik doğru değilse,), TreeMultimap bir TreeMapTreeSet s olduğu, ArrayListMultimap bir HashMapArrayList saniyedir, LinkedHashMultimap bir LinkedHashMapLinkedHashSet s temelde, bir HashMapHashSet saniyedir , ImmutableSetMultimapImmutableListMultimap bir ImmutableMapImmutableList saniyedir, bir ImmutableMapImmutableSet saniyedir. aşikar olmayabilir

tek şey SortedMultiset uygulamaları bir JDK TreeMap<E, Integer> sadece yapamadı O(log n) sürede subMultiset().size() operasyonları, sağladığı muhtemelen.

Koleksiyonların tüm görünümleri (çok görüntülemeyi severiz) sabit zamanda geri dönüp beklediğiniz asimptotiklere sahip olur.

şey hakkında endişe daha spesifik var mı?

(Genel olarak, Guava temelde Google'ın üretimde kullandığı temel kütüphanelerdir, ki bu, hizmetlerin ağır iş ortamlarında tatmin edici performans gösterdiğine dair oldukça güçlü bir kanıt olduğunu düşünmek istiyorum. Ayrıca, Guava sürekli olarak geliştiriliyor ve Bu geliştirmeleri temelde ücretsiz olarak alabilirsiniz.)

+1

Sumit, bkz. [Ölümsüz koleksiyonlar] (http://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained#Where?) Ve [Yeni koleksiyon türleri] (http://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained) hangi türlerin daha iyi desteklendiğini açıklayan tablolar için. –

+0

Etkileyici bir cevap. –

+1

Meh. Demek istediğim ... bunların hiçbiri _surprising._ olmalıdır. Kesinlikle, bu şeyler hakkında sürprizlerin olmadığından emin olmak için Guava'nın önceliklerinden biri ... –

İlgili konular