【问题标题】:Performance-wise, how good is the Guava library? [closed]在性能方面,Guava 库有多好? [关闭]
【发布时间】:2012-06-10 13:07:58
【问题描述】:

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

如果其他人使用过它,那么您能否就它在处理大量数据集时的表现提供反馈?基本上我正在为其操作寻找 BigO 符号。

提前致谢

【问题讨论】:

  • 您具体看中哪种运算性能?
  • Guava 库很大。您特别关注哪些操作?
  • 如果能以图表的形式提供新的集合(MultiSet、Multimap、BiMap、Table)操作,那就太好了。就像在 java 集合中一样 BigO notation.

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


【解决方案1】:

Guava 贡献者在这里。

嗯,有什么好说的?所有基于散列(和基于枚举)的集合在恒定时间内都具有单项操作,正如您所期望的那样。 (HashMultisetLinkedHashMultisetConcurrentHashMultisetHashBiMapHashBasedTableImmutableSetImmutableMapEnumMultisetEnumBiMap 等都属于该类别。)所有基于树的/sorted 集合的单项操作有对数时间,包括TreeMultisetImmutableSortedMapImmutableSortedSet

在多映射中,文档基本上告诉您Map 和值收集实现,您可以从那里弄清楚。 HashMultimap 基本上是 HashMapHashSets,LinkedHashMultimapLinkedHashMapLinkedHashSets,ArrayListMultimapHashMapArrayLists,LinkedListMultimap 是@ 到 LinkedLists(性能方面,如果技术上不正确),TreeMultimapTreeMapTreeSets,ImmutableSetMultimapImmutableMapImmutableSets,ImmutableListMultimapImmutableMapImmutableLists。

唯一不言自明的可能是SortedMultiset 实现在O(log n) 时间提供subMultiset().size() 操作,而仅使用JDK TreeMap<E, Integer> 是无法做到的。

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

您有什么更具体的担忧吗?

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

【讨论】:

  • Sumit,请参阅 Immutable collectionsNew collection types 以获得更好地解释哪种类型由什么支持的表格。
  • 嗯。我的意思是……这一切都不应该令人惊讶。当然,确保这些事情没有意外是 Guava 的首要任务之一……
猜你喜欢
  • 2012-05-30
  • 2013-05-14
  • 2020-12-19
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 2017-04-08
  • 2013-08-13
  • 1970-01-01
相关资源
最近更新 更多