shakiriker
@shakiriker

Array.length performance in js?

вариант 1

let x = [1,2,3,4,5,6,7,8,9];
    
    for(let i = 0;i < x.length; i++ ){
        x[i]= ++x[i];
    }


вариант 2

let x = [1,2,3,4,5,6,7,8,9];
    
    for(let i = 0;i < x.length; i++ ){
        if(i === 4) x.push(10);
        x[i]= ++x[i];
    }


с точки зрения производительности, если есть смысл писать так?

для варианта 1. for (let i = 0, y = x.length; i < y; i++) или лучше так
const y = x.length;
for (let i = 0, ; i < y; i++).


для варианта 2 for (let i = 0, y = x.length; i < y; i++).

Имеет ли смысл передавать длину массива переменной в js?
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 4
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
Условие цикла проверяется каждую итерацию. Следовательно, если там будет переменная со статическим значением - это будет слегка быстрее. Но такого рода оптимизация является едва ли не лишней. Уверен, у вас будут просадки более серьёзные.
Ответ написан
Комментировать
Проверь, поделись
https://jsperf.com/
А еще есть вот такое мнение
https://medium.com/better-programming/stop-using-i...
Ответ написан
Комментировать
hzzzzl
@hzzzzl
function perf(fn) {
  const t1 = performance.now()
  for(let i = 0; i < 100000; i++) {
    fn()
  }
  console.log(performance.now() - t1 + ' ms')
}

ar = [...Array(10000).keys()]

function f1() {
  for (let i = 0, y = ar.length; i < y; i++) { ar[i] = ++ar[i] }
}

function f2() {
  for (let i = 0 ; i < ar.length; i++) { ar[i] = ++ar[i] }
}

perf(f1)

perf(f2)
Ответ написан
Комментировать
И вообще давно появились такие вещи как for...in и for...of)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы