原始类型的ArrayList - fastutil vs eclipse-collections vs hppc

问题描述 投票:0回答:1

我有一个基于

openjdk-11
的 springboot 服务在生产环境中运行,该服务处理大量(每小时约 50K)的密集向量(或浮点数组)。由于性能问题,我对我的服务进行了 GC 调优分析,发现由于装箱值,
List<Float>
消耗了过多的内存和 CPU。我尝试将其替换为 fastutil 的
FloatArrayList
,它通过将处理延迟时间、CPU 和内存负载、GC 时间等减少约 20% 来解决问题。然后,我开始从所有最新的 Java 内置集合开源替代方案中搜索“原始类型的 ArrayList”操作的实时生产基准比较,以获得最佳性能、CPU 和内存使用情况、GC 使用情况等。 希望向广泛使用这些集合库(fastutil、eclipse-collections、hppc 等)的专家了解

  1. 完全保留jdk内置集合并默认使用这些库中的任何一个来进行开发是个好主意吗?有什么大问题吗?
  2. 最新的jdk集合在性能上是否比这些库更好?
java collections java-11 fastutil eclipse-collections
1个回答
0
投票

Java Collections 框架 仅支持对象,而不支持基元。因此,对于数字,您只能使用包装类,例如

Float
类用于
float
原语。今天的情况就是这样,但是有一天可能会改变

对象比对象更慢,并且占用更多内存。如果您的首要任务是性能或内存,那么您应该寻找使用原语而不是对象的替代方案。

在 Stack Overflow 上寻求软件推荐显然是偏离主题的。因此,如果您在选择这样一个面向原始的框架时寻求建议,请尝试在姊妹网站SoftwareRecommendationsStackExchange上发帖。但是,您需要非常具体地确定判断推荐是否成功的标准。

© www.soinside.com 2019 - 2024. All rights reserved.