Приветствую!
Ради эксперимента написал две функции, которые выполняют одно и то же действие (наполняют массив указанного размера), но делают это по-разному. Отличие видно в коде.
П.с. на названия "старый" и "новый" не обращайте внимания, сделал исключительно для удобства.
const fillList = (size) => {
const list = new Array(size);
for (let i = 0; i < size; i++) {
list[i] = i;
}
return list;
};
const fillListOld = (size) => {
const list = [];
for (let i = 0; i < size; i++) {
list.push(i);
}
return list;
};
const timer = (size) => {
console.log(`Наполняем старым способом`);
const date = new Date();
fillListOld(size);
const date2 = new Date();
console.log(`Наполнили за ${date2.getTime() - date.getTime()}`);
console.log(`Наполняем новым способом`);
const date3 = new Date();
fillList(size);
const date4 = new Date();
console.log(`Наполнили за ${date4.getTime() - date3.getTime()}`);
};
const size = 100000000;
timer(size);
timer(size);
timer(size);
Результат отработки:
Наполняем старым способом
Наполнили за 1079
Наполняем новым способом
Наполнили за 2698
Наполняем старым способом
Наполнили за 811
Наполняем новым способом
Наполнили за 2620
Наполняем старым способом
Наполнили за 890
Наполняем новым способом
Наполнили за 2659
Собственно, у меня два вопроса:
1. Почему время наполнения массива старым способом почти в 3 раза меньше, чем новым?
2. Почему при повторном запуске время наполнения старым способом уменьшилось на 200мс, а у нового вообще не произошло изменений? (полагаю, это связано с оптимизацией движком, но хочется больше деталей)
Запускал на nodejs 21.6.1