Добрый день!
Из-за моей ошибки возникла ситуация, которую очень хотелось бы понять.
Время на цикл (50 тыс итераций) перебора и обращение к свойствам экземпляров одного класса существенно отличается от времени перебора экземпляров разных классов. 2 мс против 40мс.
Возможно у кого нибудь будут мысли о причинах такого поведения.
Код:
let length = 50000;
let list_of_one = [];
let main_class = getClass();
for(let i = 0; i<length;i++){
list_of_one.push(new main_class())
}
let list_of_many = [];
for(let i = 0; i<length;i++){
let main_class = getClass()
list_of_many.push(new main_class())
}
performanceTest(list_of_one) // результат ~2ms
performanceTest(list_of_many) // результат ~40ms
function performanceTest(list){
console.time('time')
let c = list.length
for(let i = 0; i<c;i++){
list[i].buffer_data_calc.color[3] = i
}
console.timeEnd('time')
}
function getClass(){
class Main {
id=23;
type= 1;
buffer_data_calc={color:[1,2,3,4,5]};
init(){
}
}
return Main
}
p.s было замечено что уже на поиск свойства buffer_data_calc уходит большая времени...
JS Fiddle
От
Сергей Соколов -
кейс на jsPerf