Re[15]: JS. Откуда такая разница в скорости?
От: rFLY  
Дата: 11.06.24 15:11
Оценка:
Здравствуйте, Pauel, Вы писали:

P>new BaseClass — выделение памяти, инициализация

P>BaseClass.Counter — лукап
P>++ — сравнимо с += в основном цикле
P>this.Value — еще один лукап

Ты не понял или не вникал в написанное. Создание объекта не просто приводит к замедлению, а меняет время выполнения (и только при использовании переменной для суммы) на противоположный. При вычислении суммы через свойство объекта о.sum различия во времени минимальны. Повторю укороченно, если код проигнорировал:

// без new BaseClass()
    let sum = 0;
    for (let i = 0; i < 100_000_000; i++)
        sum += i;
// и
    let o = {sum: 0};
    for (let i = 0; i < 100_000_000; i++)
        o.sum += i;

// против следующего, но с добавлением new BaseClass()
    let sum = 0;
    for (let i = 0; i < 100_000_000; i++) {
        new BaseClass();
        sum += i;
    }
// и
    let o = {sum: 0};
    for (let i = 0; i < 100_000_000; i++) {
        new BaseClass();
        o.sum += i;
    }
}


вычисление переменной let sum c new BaseClass становится дороже чем аналогичное, но через o.sum, а без new BaseClass() наоборот.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.