Сообщение от 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 (!!!)