Как удобнее всего тестировать скорость?
Решил сравнить, что быстрее работает: цикл for или forEach.
Написал такой тест:
let time = 10000000;
let test1 = () =>{
let a1 = 0;
let t1 = performance.now();
for(let i = 0; i < time; i++){
a1++;
}
console.log(`Time: ${(performance.now()-t1)/1000} seconds`); // Time: 0.036104999999981374 seconds
}
let test2 = () =>{
let a1 = 0;
let t1 = performance.now();
Array.from({length:time}, _=>0).forEach(_=>a1++);
console.log(`Time: ${(performance.now()-t1)/1000} seconds`); // Time: 1.7714999999997671 seconds
}
console.clear();
test1();
test2();
Получается цикл for быстрее, чем forEach. Вопрос: мой способ тестирования правильный или нет? |
Цитата:
|
Цитата:
|
Цитата:
https://javascript.ru/forum/misc/324...v-voprosy.html |
Цитата:
|
Цитата:
В 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 (!!!) |
| Часовой пояс GMT +3, время: 10:55. |