java - 性能方面,Guava 库有多好?

标签 java performance data-structures big-o guava

<分区>

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

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

提前致谢

最佳答案

这里是 Guava 贡献者。

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

在 multimaps 中,文档基本上告诉你 Map和值收集实现,你可以从那里弄清楚。 HashMultimap基本上是一个 HashMapHashSet小号,LinkedHashMultimapLinkedHashMapLinkedHashSet小号,ArrayListMultimapHashMapArrayList小号,LinkedListMultimapLinkedHashMapLinkedList s(性能方面,如果技术上不正确),TreeMultimapTreeMapTreeSet小号,ImmutableSetMultimap是一个 ImmutableMapImmutableSet小号,ImmutableListMultimap是一个 ImmutableMapImmutableList

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

集合的所有 View (我们非常喜欢 View )都会在常数时间内返回并具有您期望的渐近线。

您还有什么更具体的顾虑吗?

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

关于java - 性能方面,Guava 库有多好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968958/

相关文章:

algorithm - 为什么路径压缩不会改变 UnionFind 中的排名?

javascript - JavaScript 中的不可变哈希和数组实现?

java - 将逗号分隔的字符串转换为点分隔的正则表达式模式

java - TestNG + Mockito + PowerMock 始终显示 "ClassNotPreparedException"

c - printf %s 和 for loop %c 哪个更快

performance - JMeter 理解升级

java - 请求映射和静态字段

java - 刽子手错误的猜测无法正确打印

java - 点集合之间的快速插值

algorithm - 按频率降序列出以固定前缀开头的 `k` 个单词