【问题标题】:ArrayList<Integer>. Boxing perfomance?数组列表<整数>。拳击表演?
【发布时间】:2013-08-17 15:10:20
【问题描述】:

我正在编写一个可以处理大量数据的应用程序,我需要一个ArrayList&lt;Integer&gt; 功能。我想重写 ArrayList 类,以便使用 int 类型,而不是 Integer 类。这将提高性能多少?

【问题讨论】:

  • 它会有所改进,因为没有 GC 只有原生。
  • 不知道,但您可能可以相当快地重写该类并对其进行测试。 (很可能只是几个搜索、替换和删除泛型)
  • 这完全取决于您如何使用ArrayList。此外,已经有“原始”集合的实现,例如 fastutil。
  • 请在发帖前稍作努力。只需在 Google 上搜索“java 自动装箱性能”即可获得大量信息。

标签: java performance arraylist


【解决方案1】:

不要重新发明轮子。

很久以前就完成了:)

http://trove4j.sourceforge.net/javadocs/gnu/trove/list/array/TIntArrayList.html

效果很好。

benchmarks

【讨论】:

  • 没问题,我自己使用 Trove 也是出于同样的原因 - 需要将大量数据存储在内存中。
【解决方案2】:
ArrayList<int[]> arlist=new ArrayList<int[]>();
int ar1[]={1,2,3};
arlist.add(0,ar1);

这不靠谱吗?

【讨论】:

  • 不是真的 :-) 这在功能上不等同于整数列表。
【解决方案3】:

您不需要这样做。请参阅@dantuch 的回答。

我只想指出使用专门的“int 列表”类的问题

  • 该类不能与标准集合类和接口 API 兼容。如果您尝试使用需要 CollectionList 的其他 API,则无法使用专用类。

  • 您将无法在各种“原始列表”类型中使用多态性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    相关资源
    最近更新 更多