Подтвердить что ты не робот

Массив против ArrayList в производительности

Какая из них лучше в производительности между массивом типа Object и ArrayList типа Object?

Предположим, что у нас есть массив объектов Animal: Animal animal[] и arraylist: ArrayList list<Animal>

Теперь я делаю animal[10] и list.get(10) который должен быть быстрее и почему?

4b9b3361

Ответ 1

Весьма очевидно, что массив [10] быстрее, чем array.get(10), поскольку более поздний из них выполняет один и тот же вызов, но добавляет накладные расходы для вызова функции плюс дополнительные проверки.

Однако современные JIT оптимизируют это до некоторой степени, что вам редко приходится беспокоиться об этом, если у вас нет приложения с очень высокой критичностью, и это было измерено как ваше узкое место.

Ответ 2

Из здесь:

ArrayList внутренне поддерживается Array в Java, любая операция изменения размера в ArrayList будет замедлять производительность, поскольку она предполагает создание новых Массив и копирование содержимого из старого массива в новый массив.


С точки зрения производительности Array и ArrayList производительность с точки зрения постоянного времени для добавления или получения элемента, если вы знаете индекс. Хотя автоматическое изменение размера ArrayList может замедлить вставка бит Оба массива и ArrayList являются основной концепцией Java и любой серьезный Java-программист должен быть знаком с этими различиями между Array и ArrayList или более общим массивом и списком.

Ответ 3

При принятии решения использовать Array или ArrayList ваш первый инстинкт действительно не должен беспокоить производительность, хотя они выполняют разные действия. Вы сначала должны заботиться о том, знаете ли вы размер массива перед рукой. Если вы этого не сделаете, вы, естественно, пойдете с массивом, просто для функциональности.

Ответ 4

Я согласен с кем-то недавно удаленным сообщением о том, что различия в производительности настолько малы, что, за очень немногими исключениями (он погладил, что не сказал никогда), вы не должны принимать решение на основе этого.

В вашем примере, где элементы являются объектами, разница в производительности должна быть минимальной.

Если вы имеете дело с большим количеством примитивов, массив будет предлагать значительно лучшую производительность как в памяти, так и во времени.

Ответ 5

Массивы лучше работают. ArrayList предоставляет дополнительные функции, такие как "удалить" за счет производительности.