Оптимизация работы c массивами в JavaScript
На днях пришлось оптимизировать большой кусок JavaScript кода со множеством массивов и строк. Решил выложить свои наблюдения по скорости работы.
Задача: нам нужно перебрать массив из N элементов (для наглядности нагрузки из 500000), для его создания использовал код:
var arr = Array.apply(null, Array(500000)).map(function (_, i) {return i;});
Пример 1: скорости работы, самый неоптимизированый.
var newArr = []; for (var i=0; i<arr.length; i++) { newArr[newArr.length] = arr[i]; }
Консоль выдала скорость обработки: time1: 411.17ms
Пример 2: оптимизировано добавление элемента в массив назначения
var newArr = []; for (var i=0; i<arr.length; i++) { newArr.push(arr[i]); }
Консоль выдала скорость обработки: time2: 376.61ms
Пример 3: оптимизированый способ, оптимизируем сам цыкл
var newArr = [], arrLength = arr.length; for (var i=0; i<arrLength; i++) { newArr.push(arr[i]); }
Консоль выдала скорость обработки: time3: 352.75ms
Такими нехитрыми манипуляциями можно ускорить код ~ на 15%.
Если вы знаете еще более отпимальный вариант – предлагайте в комментариях! Буду очень благодарен!