Я программирую что-то на Java, для контекста см. этот вопрос: Процесс принятия решения Марковской модели в Java
У меня есть два варианта:
byte[MAX][4] mypatterns;
или ArrayList мои шаблоны
Я могу использовать Java ArrayList и добавлять новые массивы всякий раз, когда я их создаю, или использовать статический массив, вычисляя все возможные комбинации данных, а затем просматривая, чтобы увидеть, какие индексы «включены» или «выключены».
По сути, мне интересно, следует ли мне выделить большой блок, который может содержать неинициализированные значения, или использовать динамический массив.
Я работаю в кадрах в секунду, поэтому цикл по 200 элементам в каждом кадре может быть очень медленным, особенно потому, что у меня будет несколько экземпляров этого цикла.
Основываясь на теории и на том, что я слышал, динамические массивы очень неэффективны.
Мой вопрос: будет ли перебор массива, скажем, из 200 элементов, быстрее, чем добавление объекта в динамический массив?
Изменить>>>
Дополнительная информация:
- Я узнаю максимальную длину массива, если он статический.
- Элементы в массиве будут часто меняться, но их размеры постоянны, поэтому я могу легко их изменить.
- Выделение его статически будет подобием пула памяти
- В других экземплярах может быть инициализировано больше или меньше данных, чем в других.
List
, напримерArrayList
? Какую теорию и где вы слышали, чтоArrayList
очень неэффективен по сравнению с простым массивом? Нет, это не так. - person Andreas   schedule 21.12.2015ArrayList
вместо простого массива. Не усложняйте свой код для этого, если только профилировщик не покажет вам, чтоArrayList
вызывает снижение производительности. - person Andreas   schedule 21.12.2015ArrayDeque
. Это очень эффективно для этой цели. - person Andreas   schedule 21.12.2015Stack
, он говорит: Более полный и согласованный набор операций стека LIFO предоставляется интерфейсом Deque и его реализациями, которые следует использовать вместо этого класса. - person azurefrog   schedule 21.12.2015