Сравнение производительности Array.push и Array.concat
Ши Лин сравнила производительноcть методов .push
и .concat
у массивов — "Javascript Array.push is 945x faster than Array.concat".
Ши разрабатывает фреймворк для автоматического тестирования. У одного пользователя фреймворка скорость выполнения тестов снизилась в несколько раз. Выяснилось, что для работы с DOM-деревом фреймворк собирал все элементы страницы в одномерный массив с помощью .concat
. Так как каждый вызов .concat
создаёт новый массив, это негативно сказывалось на производительности прогона тестов.
В статье есть несколько бенчмарков, которые показывают, что объединение массивов с помощью .push(...arr)
на два порядка быстрее .concat(arr)
.
Добавлю свои пять копеек. Заменять .concat(arr)
на .push(...arr)
стоит только там, где есть проблема, так как на очень больших массивах .push(...arr)
выкинет ошибку переполнения стека.
https://dev.to/uilicious/javascript-array-push-is-945x-faster-than-array-concat-1oki