性能方面,番石榴图书馆有多好?
我已经浏览了Google Guava库,并在其中创建了许多优秀,可用的数据结构。
如果有其他人使用过它,那么你可以提供有关它与大数据集一起使用时的表现的反馈吗? 基本上我正在为其运营寻找BigO表示法。
提前致谢
番石榴贡献者在这里。
嗯,有什么可说的? 所有基于散列(和基于枚举)的集合都在恒定时间内具有单项操作,正如您所期望的那样。 ( HashMultiset
, LinkedHashMultiset
, ConcurrentHashMultiset
, HashBiMap
, HashBasedTable
, ImmutableSet
, ImmutableMap
, EnumMultiset
, EnumBiMap
等都属于该类别。)所有基于树的/已排序的集合都具有单条输入操作的对数时间,包括TreeMultiset
, ImmutableSortedMap
,和ImmutableSortedSet
。
在multimaps中,文档基本上告诉你Map
和value-collection实现,你可以从中找出它。 HashMultimap
基本上是HashMap
到HashSet
的, LinkedHashMultimap
是LinkedHashMap
到LinkedHashSet
的, ArrayListMultimap
是HashMap
到ArrayList
的, LinkedListMultimap
是LinkedHashMap
到LinkedList
的(性能方面,如果不是技术上真的), TreeMultimap
是TreeMap
到TreeSet
的, ImmutableSetMultimap
是ImmutableMap
的ImmutableSet
, ImmutableListMultimap
是ImmutableMap
的ImmutableList
。
唯一不可能不言而喻的可能是SortedMultiset
实现在O(log n)
时间内提供了subMultiset().size()
操作,这是JDK TreeMap
不能做到的。
集合的所有视图(我们都喜欢很多视图)会在不变的时间内返回并具有您期望的渐近线。
你有什么更具体的关注吗?
(一般来说,Guava基本上是Google在生产中使用的核心库,我想这是非常有力的证据表明公用事业在重型环境中表现令人满意。另外,Guava正在不断改进,你可以获得这些改进基本上是免费的。)