【发布时间】:2015-12-21 00:59:35
【问题描述】:
我正在用 Java 编程,有关上下文,请参阅以下问题:Markov Model descision process in Java
我有两个选择:
byte[MAX][4] mypatterns;
或 ArrayList 我的模式
我可以使用 Java ArrayList 并在创建新数组时追加它们,或者通过计算所有可能的数据组合来使用静态数组,然后循环查看哪些索引是“打开或关闭”。
基本上,我想知道是否应该分配一个可能包含未初始化值的大块,或者使用动态数组。
我以 fps 运行,因此每帧循环 200 个元素可能会非常慢,尤其是因为我将有多个此循环的实例。
根据理论和我所听到的,动态数组非常低效
我的问题是:循环遍历一个包含 200 个元素的数组会比将对象附加到动态数组更快吗?
编辑>>>
更多信息:
- 我会知道数组的最大长度,如果它是静态的。
- 数组中的项目会经常更改,但它们的大小是恒定的,因此我可以轻松更改它们。
- 静态分配它就像一个内存池
- 其他实例的初始化数据可能比其他实例多或少
【问题讨论】:
-
动态数组是指
List,比如ArrayList?与普通数组相比,ArrayList的效率非常低,是什么理论以及您在哪里听说的?不是。 -
是的,我只是在编辑它。
-
ArrayList 我想可能不是低效的,但我听说静态数组要快很多倍。不知道这是不是真的,但我是这么理解的。
-
虽然通常 ArrayList 是不可避免的,但在这种情况下我实际上可以选择,这就是我问这个问题的原因。
-
使用
ArrayList而不是普通数组不太可能导致您遇到的任何性能问题。不要为此使您的代码复杂化,除非 Profiler 向您显示ArrayList导致性能下降。
标签: java performance dynamic-memory-allocation dynamic-arrays memory-pool