Как удобнее всего тестировать скорость?
Решил сравнить, что быстрее работает: цикл 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, время: 08:37. |