java - 性能:包含大量对象的列表 VS 包含较小列表的大量对象

标签 java performance arraylist history revert

我目前正在开发自己的应用程序(只是著名的“生命游戏”的另一个重制版),我想添加一个“恢复”按钮。我的游戏基本上由一个二维数组组成:Cell[][]... 所以:我的想法是创建一个 ArrayList,该数组将被添加到每次更新中......(限制为 50 个条目) 但后来我想,该列表中会有很多对象......所以:

在二维数组的每个单元格中使用一个包含自身历史记录的 ArrayList,还是使用一个包含整个游戏状态作为历史记录的巨大 ArrayList,性能会更好吗?

(我认为您不需要我的任何代码来回答这个问题,但如果您需要,我会发布它)

最佳答案

为什么不保存改变单元状态的事件,而不是存储单元状态?事件将简单地封装前一个状态信息和下一个状态,甚至可能封装一个可以反向执行的编码枚举。这已经显着减少了您需要存储的数据。

此外,如果您在 native 工作,或者在 Java 或 C# 等垃圾收集 VM 平台上工作,这也会有所不同。前者往往速度更快,并且在大型寻址存储方面更宽容,而如果存储大量对象,后者可能会开始疯狂垃圾。

但布丁的真正证据在于 eat/tinstatfc:不存在最快的代码 (c) Michael Abrash -> 即对您的代码进行基准测试并找出答案! (来告诉我们)

关于java - 性能:包含大量对象的列表 VS 包含较小列表的大量对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553309/

相关文章:

java - Java程序中导入CSV数据到mysql表

ruby-on-rails - 如何提高单页应用的性能?

sql - 将小数据写入文件并从中读取或查询数据库

java - 哈希表中的冲突解决

java - 是什么让这个 Clojure 函数变慢了?

java - 如何让 Guava 的 Splitter.split 不返回不可修改的 map

java - Vaadin 未找到前缀 jetty 的插件

python - 在 Python 3.4 中切片真的更慢吗?

java - 如何为 ArrayList 中的所有对象调用一个方法?

java - 用于按浮点参数对对象数组列表进行排序的比较器