Показать сообщение отдельно
  #6 (permalink)  
Старый 21.10.2020, 17:42
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от jaroslav.tavgen
А будет ли такой тест корректным? Ведь задача узнать, как будет быстрее: [1,2,3].forEach(...) или for(let i = 0; i < 3; i++){...}
Нет.
В forEach идет обращение к массиву.
А в for у вас нет обращения к массиву.
Корректнее было бы так

let time = 10000000;
let arr = Array.from({length:time}, (_, i)=> i)

let test1 = () =>{
  let s = 0;
  let t1 = performance.now();
  for(let i = 0; i < time; i++){
    s += arr[i]
  }
  console.log(`${s} Time: ${(performance.now()-t1)/1000} seconds`); 
}

let test2 = () =>{
  let s = 0;
  let t1 = performance.now();
  arr.forEach( x => s += x);
  console.log(`${s} Time: ${(performance.now()-t1)/1000} seconds`); 
}
console.clear();
test1();
test2();


У меня результаты в Хроме
49999995000000 Time: 0.020264999999199063 seconds
49999995000000 Time: 0.24552500000572763 seconds

Но Firefox рвет его, как Тузик грелку

49999995000000 Time: 0.016 seconds
49999995000000 Time: 0.05 seconds (!!!)

Последний раз редактировалось voraa, 21.10.2020 в 17:53.
Ответить с цитированием