最高效的Java原始类型集合库

38

什么是最好的Java原始类型集合库?(内存和时间效率最高)

我发现Trove和FastUtil是使用最多的两个库,但是并没有找到太多它们之间(或者和其他库之间)的比较。

是否有可用的比较结果?


1
如果没有的话,我会提供翻译。 :) 但我也想知道除了Trove和FastUtil之外是否还有其他值得进行基准测试的东西。 - Sarmun
你应该将java.util集合作为参考点,并在有相应等效物的情况下,加入Apache commons collections和Google commons collections / guava。解决问题的关键是:1)将类似功能与类似功能进行比较,2)测量内存使用情况,以及3)避免通常会导致Java“微基准测试”产生虚假结果的陷阱。 - Stephen C
2
任何非原始集合的内存使用都会使它在我的情况下无用。而且无论如何,它们肯定都更慢,所以它们不符合要求。我不需要任何额外的功能,只需要高效的映射/集合/列表等。 - Sarmun
有人已经问过了什么是最高效的Java集合库? 你可能想从那里开始查找。Matt - matt burns
我看到了,但这是一个更一般和不明确的问题。 - Sarmun
1
@Stephen C 可能是因为进行这样的微基准测试非常困难。您必须构建库,学习如何使用它们并收集测量数据。大多数人都会在微基准测试中犯错。 - maaartinus
3个回答

16

1
链接已损坏...无法在Chrome/IE中打开。 - Edge
1
另一个比较:http://java.dzone.com/articles/time-memory-tradeoff-example - leventov

5
我不知道是否有任何优秀的仅基于原始类型的框架基准。这个将是很好的看到,以及与非原始版本进行比较(只是为了展示在某些强硬情况下Java泛型与自动装箱的失败)。
有一个 来自Trove本身的基准测试,我认为最直接的方法是将其移植到其他几个库中。
此外 - 不确定您是否看到过 - Cern's Colt库在Trove出现之前就拥有原始列表和矩阵。

Colt链接似乎已经失效。 - killjoy

5
我最近开源了Banana,它是另一个基于Java的原始集合库。 与其他库不同之处在于,Banana拥有自己的内存管理,这基本上允许它实现任何动态数据结构而不创建许多对象。 Banana也比许多其他库要小得多,目前的jar文件大约为60k。
它已经支持LinkedList,我认为没有其他原始集合库提供此功能,我计划很快添加一个Set和Tree。 https://github.com/omry/banana

你好,这个库很棒。你已经完成了Set吗? - Bertie
不是,但如果你想试一试,我可以帮助你。也许几周后我甚至可以花些时间在上面。 - Omry Yadan
非常感谢您的慷慨,但我并不急于获得这个Set支持。我没有注意到这是针对原始集合的,因为我正在寻找任意对象集合。 - Bertie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接