【发布时间】:2010-11-14 01:12:37
【问题描述】:
我有一个程序,我需要在尽可能短的时间内(以毫秒为单位)对类似列表的对象进行 100,000 到 1,000,000 次随机访问读取,以用于类似元胞自动机的程序。我认为我正在使用的更新算法已经过优化(有效地跟踪活动单元等)。列表确实需要更改大小,但性能并不那么重要。所以我想知道使用 Arrays 而不是 ArrayLists 的性能是否足以在如此短的时间内处理如此多的读取时产生影响。目前,我正在使用 ArrayLists。
编辑: 我忘了说:我只是存储整数,所以另一个因素是使用整数包装类(在 ArrayLists 的情况下)与 ints(在数组的情况下)。有谁知道使用 ArrayList 是否实际上需要 3 个指针查找(一个用于 ArrayList,一个用于底层数组,一个用于 Integer->int),因为数组只需要 1 个(数组地址+特定的偏移量)诠释)? HotSpot 会优化额外的查找吗?这些额外的查找有多大意义?
编辑2: 另外,我忘了提到我还需要进行随机访问写入(写入,而不是插入)。
【问题讨论】:
-
在 Java 中设计有意义的微基准非常困难。许多博客文章和论文“Statistically Rigorous Java Performance Evaluation”中已经描述了这些问题——如果你还没有,如果它真的很重要,你可能想四处搜索并阅读它。
标签: java performance arrays arraylist