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

时间:2012-06-10 13:07:59

标签: java performance data-structures big-o guava

我已经浏览了Google Guava库,并在其中找到了许多好的,可用的数据结构。

如果有其他人使用过它,那么您是否可以提供有关与大型数据集一起使用时的执行情况的反馈?基本上我正在为其操作寻找BigO表示法。

提前致谢

1 个答案:

答案 0 :(得分:37)

番石榴贡献者。

嗯,有什么可说的?所有基于散列的(和基于枚举的)集合都具有恒定时间的单项操作,完全符合您的预期。 (HashMultisetLinkedHashMultisetConcurrentHashMultisetHashBiMapHashBasedTableImmutableSetImmutableMapEnumMultiset,{ {1}}等等都属于该类别。)所有基于树的/已排序的集合都具有对齐单一条目操作的对数时间,包括EnumBiMapTreeMultisetImmutableSortedMap

在multimaps中,文档基本上会告诉你ImmutableSortedSet和值集合实现,你可以从中找到它。 Map基本上是HashMultimapHashMapHashSetLinkedHashMultimapLinkedHashMapLinkedHashSet是{{} 1}}到ArrayListMultimap s,HashMapArrayListLinkedListMultimap s(性能方面,如果技术上不合适),LinkedHashMap是{{} 1}}到LinkedList s,TreeMultimapTreeMapTreeSetImmutableSetMultimapImmutableMapImmutableSet s

唯一可能不是不证自明的事情可能是ImmutableListMultimap实现在ImmutableMap时间内提供ImmutableList次操作,这是JDK {{{{{{ 1}}。

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

你有什么更具体的关注吗?

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