最高效的 Java 原始集合库 [关闭]

Posted

技术标签:

【中文标题】最高效的 Java 原始集合库 [关闭]【英文标题】:Most efficient Java primitive collections library [closed] 【发布时间】:2011-03-19 11:14:40 【问题描述】:

最好的 Java 原始集合库是什么? (最节省内存和时间)

我发现 Trove 和 FastUtil 是最常用的,但没有发现它们之间(或其他)之间的太多比较

有什么可比较的吗?

【问题讨论】:

如果没有的话我会的。 :) 但我也想知道除了 Trove 和 FastUtil 之外是否还有其他值得进行基准测试的工具。 您可能应该将 java.util 集合作为参考点,以及 Apache commons 集合和 Google commons collections / guava 等价物。问题将是 1) 将相似功能与相似功能进行比较,2) 测量内存使用情况,以及 3) 避免标准陷阱,这些陷阱通常会导致 Java“微基准”给出虚假结果。 任何非原始集合的内存使用在我的情况下都是无用的。无论如何,它们当然也都比较慢,所以它们不符合要求。我不需要任何额外的功能,只需要简单高效的地图/设置/列表等。 有人已经问过What is the most efficient java collections library? 您可能想从那里开始寻找。马特 @Stephen C 可能是因为做这样的微基准测试非常困难。您必须构建库、学习如何使用它们并收集测量值。大多数人的微基准测试都非常错误。 【参考方案1】:

This comparision 在 Java 标准集合之间,Trove 和 Colt 可能会有所帮助。

【讨论】:

链接已损坏..无法在 chrome/ie 中打开 另一个比较java.dzone.com/articles/time-memory-tradeoff-example【参考方案2】:

我最近开源了 Banana,这是另一个原语集合 java 库。 与其他库的不同之处在于 Banana 拥有自己的内存管理,这基本上允许它实现任何动态数据结构而无需创建许多对象。 Banana 也比许多其他库小得多,目前 jar 大约 60k。

它已经支持 LinkedList,我认为任何其他原始集合库都没有提供,我计划很快添加一个 Set 和一个 Tree。

https://github.com/omry/banana

【讨论】:

你好,很棒的图书馆。你完成了 Set 了吗? 不,但如果你想试一试,我可以帮你。甚至可能在几周内花一些时间。 非常感谢您的慷慨,但我并不急于提供此 Set 支持。我没有注意到这是针对原始集合的,因为我正在寻找任意对象集合。【参考方案3】:

我不知道有什么好的纯原始框架基准。很高兴看到这个,并与非原始版本进行比较(只是为了展示带有自动装箱功能的 Java 泛型在某些核心案例中是多么糟糕)。

有一个基准from the Trove itself,我认为最直接的方法是将它移植到其他几个库。

另外 - 不确定你是否见过 - Cern's Colt 库甚至在 AFAICR 出现之前就有原始列表和矩阵。

【讨论】:

Colt 链接似乎已失效。

以上是关于最高效的 Java 原始集合库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

高效 告别996,开启java高效编程之门 5-1Guava开场

高效 告别996,开启java高效编程之门 5-1Guava开场

集合操作最简单的高效并行处理

常用高效 Java 工具类总结

查询三个集合、对它们进行排序和限制的最高效方法?

高效 告别996,开启java高效编程之门 4-3传统方式关闭流资源