性能方面,番石榴图书馆有多好?[已关闭]

我浏览了Google Guava库,并在其中发现了许多好的,可用的数据结构。

如果还有其他人使用它,那么您能否提供有关它在与大型数据集一起使用时的性能的反馈?基本上,我正在寻找BigO表示法用于其操作。

提前致谢


答案 1

番石榴贡献者在这里。

嗯,有什么可说的?所有基于哈希(和基于枚举)的集合都具有恒定时间的单条目操作,完全符合您的预期。(、、、、、、、、等都属于这一类。所有基于树/排序的集合都有其单条目操作的对数时间,包括 、 和 。HashMultisetLinkedHashMultisetConcurrentHashMultisetHashBiMapHashBasedTableImmutableSetImmutableMapEnumMultisetEnumBiMapTreeMultisetImmutableSortedMapImmutableSortedSet

在多映射中,文档基本上会告诉您值集合实现,您可以从那里找到它。 基本上是 a to s,是 a to s,是 a to s,是 a to s(性能方面,如果技术上不正确),是 a to s,是 a to s,是 a to s,是 a to s。MapHashMultimapHashMapHashSetLinkedHashMultimapLinkedHashMapLinkedHashSetArrayListMultimapHashMapArrayListLinkedListMultimapLinkedHashMapLinkedListTreeMultimapTreeMapTreeSetImmutableSetMultimapImmutableMapImmutableSetImmutableListMultimapImmutableMapImmutableList

唯一可能不言自明的是,这些实现可能及时提供了操作,而仅用JDK是无法做到的。SortedMultisetsubMultiset().size()O(log n)TreeMap<E, Integer>

集合的所有视图(我们非常喜欢视图)都以恒定的时间返回,并具有您期望的渐近值。

你还有什么更具体的问题吗?

(总的来说,Guava基本上是Google在生产中使用的核心库,我认为这是非常有力的证据,证明实用程序在重型环境中的表现令人满意。此外,番石榴正在不断改进,你基本上可以免费获得这些改进。


答案 2

推荐