Pull to refresh

Comments 9

Если я правильно понял статью то вот этот код
function Point(x, y) {
    this.x = x;
    this.y = y;
}
var p1 = new Point(1, 2);

инициирует создание трех скрытых классов
В то время как такой код:
var p1 = {x: 1, y:2 };

этого не сделает — будет только 1 скрытый класс.
Можно ли как-то в первом случае избежать создания лишних скрытых классов?
Насколько известно, даже классы ES6 при трансформации всякими бабелями превращаются в то, что вы привели в качестве первого примера.
Пример.
Так что скорее всего, никак. А нужно ли?

Вполне возможно, что там есть оптимизации, которые не создают скрытый класс до того, Как закончится выполнение конструктора (или замыкание контекста в нем)


Даже если такого пока нету — Не стоит делать изменения в коде, рассчитанные на текущую версию одного из популярных браузеров — оптимизация может внезапно быть добавлена в следующей версии, а ваш хак перестать работать. Или быть изначально практически ненужным.

Можно даже высказать следующую еретическую мысль: чем больше разработчиков используют удобный для написания, но неэффективный способ сделать что-то, тем выше вероятность, что в новой версии движка этот способ будет оптимизирован)
UFO just landed and posted this here
FrozenInternet
>> Так что скорее всего, никак. А нужно ли?
Да не особо, просто ради интереса спросил.

TheShock
Да нет, я понимаю, что это то, что нужно вручную оптимизировать в последнюю очередь. Опять же спросил просто ради интереса.

Sirion
>> Можно даже высказать следующую еретическую мысль: чем больше разработчиков используют удобный для написания, но неэффективный способ сделать что-то, тем выше вероятность, что в новой версии движка этот способ будет оптимизирован)

Да, согласен.
Второй вариант так же создаст 3 скрытых класса.
Инфографики бы побольше, и статья получилась бы более информативной.
Значит ли это, что TypeScript имеет больше шансов обогнать по производительности код, изначально написанный на JavaScript?
Sign up to leave a comment.