gpt4 book ai didi

java - 哪个更快 : Array list or looping through all data combinations?

转载 作者:行者123 更新时间:2023-11-29 04:54:06 25 4
gpt4 key购买 nike

我正在用 Java 编写一些程序,有关上下文,请参阅此问题:Markov Model descision process in Java

我有两个选择:

byte[MAX][4] mypatterns;

或者 ArrayList 我的模式

我可以使用 Java ArrayList 并在创建新数组时追加它们,或者通过计算所有可能的数据组合来使用静态数组,然后循环查看哪些索引“打开或关闭”。

本质上,我想知道我是应该分配一个可能包含未初始化值的大块,还是应该使用动态数组。

我以 fps 运行,因此每帧循环 200 个元素可能会非常慢,尤其是因为我将有多个此循环实例。

根据理论和我所听到的,动态数组非常低效

我的问题是:遍历一个包含 200 个元素的数组是否比将对象附加到动态数组更快?

编辑>>>

更多信息:

  • 我会知道数组的最大长度,如果它是静态的。
  • 数组中的项目会经常变化,但它们的大小是恒定的,因此我可以很容易地改变它们。
  • 静态分配它类似于内存池
  • 其他实例可能比其他实例有更多或更少的数据初始化

最佳答案

You right really, I should use a profiler first, but I'm also just curious about the question 'in theory'.

“理论”太复杂了。有太多的选择(不同的实现方式)需要分析。最重要的是,每个备选方案的实际性能将取决于硬件、JIT 编译器、数据结构的维度,以及您的(真实)应用程序中对(真实)输入的访问和更新模式。

很有可能这真的无关紧要

简而言之,没有人能给你一个理论上有充分根据的答案。我们能给出的最好的建议是基于对性能的直觉和/或基于软件工程常识的建议:

  • 越简单的代码越容易编写和维护,

  • 编译器是比人类更一致的1优化器,

  • 花在优化不需要优化的代码上的时间是浪费时间。


1 - 当然是在大型代码库上。如果有足够的时间和耐心,人类可以在某些问题上做得更好,但这在大型代码库上是不可持续的,并且它没有考虑以下事实:1) 编译器总是在改进,2) 优化代码可以依赖于人类无法考虑的事情,并且 3) 编译器不会感到疲倦和出错。

关于java - 哪个更快 : Array list or looping through all data combinations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34387640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com