性能方面,番石榴图书馆有多好?

13 java performance big-o guava data-structures

我已经浏览了Google Guava库,并在其中创建了许多优秀,可用的数据结构.

如果其他人使用过它,那么你可以提供有关它与大数据集一起使用时的表现的反馈吗?基本上我正在为其运营寻找BigO表示法.

提前致谢

Lou*_*man 37

番石榴贡献者在这里.

嗯,有什么可说的?所有基于散列的(和基于枚举的)集合都具有恒定时间的单项操作,完全符合您的预期.(HashMultiset,LinkedHashMultiset,ConcurrentHashMultiset,HashBiMap,HashBasedTable,ImmutableSet,ImmutableMap,EnumMultiset,EnumBiMap,等等都属于这一类.)所有基于树/排序收藏有他们的单次入境的操作,包括对数时间TreeMultiset,ImmutableSortedMapImmutableSortedSet.

在multimaps中,文档基本上告诉你Map和值集合实现,你可以从那里弄清楚. HashMultimap基本上是一个HashMapHashSetS,LinkedHashMultimap是一个LinkedHashMapLinkedHashSetS,ArrayListMultimap是一个HashMapArrayListS,LinkedListMultimap是一个LinkedHashMapLinkedListS(性能明智的,如果不是技术上是真实的),TreeMultimap是一个TreeMapTreeSetS,ImmutableSetMultimap是一个ImmutableMapImmutableSetS,ImmutableListMultimap是一个ImmutableMapImmutableList秒.

唯一不可能不言而喻的可能是SortedMultiset实现提供subMultiset().size()O(log n)及时的操作,而JDK无法做到这一点TreeMap<E, Integer>.

集合的所有视图(我们都喜欢很多视图)会在不变的时间内返回并具有您期望的渐近线.

有没有更具体的你关注的?

(一般来说,Guava基本上是Google在生产中使用的核心库,我想这是非常有力的证据表明公用事业在重型环境中表现令人满意.另外,Guava正在不断改进,你会得到这些改进基本上是免费的.)