java.util.Map 和 java.util.Set 的优化实现?

2022-09-03 17:15:14

我正在编写一个应用程序,其中内存和较小程度的速度至关重要。我从分析中发现,我花了大量时间在Map和Set操作上。虽然我正在寻找减少调用这些方法的方法,但我想知道是否有人编写或遇到过显着改善访问时间或内存开销的实现?或者至少,在给定一些假设的情况下,这可以改善这些事情?

从JDK源代码来看,我不敢相信它不能做得更快或更精简。

我知道Commons Collections,但我不相信它有任何实现的目标是更快或更精简。谷歌收藏也是如此。

更新:应该注意我不需要线程安全。


答案 1

通常,这些方法非常快。您应该检查几件事:您的哈希代码是否已实现?它们是否足够统一?否则,您将获得垃圾性能。

http://trove4j.sourceforge.net/< - 这更快一些,节省了一些内存。我在50,000个更新上节省了几个月

您确定正确使用地图/集了吗?即,不要尝试迭代所有值或类似的东西。另外,例如,不要先做一个包含,然后再删除。只需检查删除。

还要检查您是否使用的是双倍与双倍。我注意到在数以万计的检查中,性能提高了几个毫秒。

您是否还正确/适当地设置了初始容量?


答案 2

你看过Trove4J吗?从网站:

Trove旨在提供java.util.Collections API的快速,轻量级实现。

此处提供的基准测试。


推荐