Мономорфный и полиморфный код, инлайн-кэш, скрытые классы в JavaScript

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ก.ย. 2024

ความคิดเห็น • 27

  • @SentinelMoonlight
    @SentinelMoonlight 3 ปีที่แล้ว +7

    Огромное вам спасибо за ваши лекции! Подробно разобранный материал, большое количество примеров и объяснения! Благодаря вашим курсам, я освоила начальный уровень программирования на JS и смогла устроится в топ Беларуских компаний на Node.js разработчика) Спасибо за ваш труд и любовь к своей работе!

  • @antonsuhov4222
    @antonsuhov4222 ปีที่แล้ว +6

    0:43 поля
    6:27 скрытые классы
    10:28 инлайн кэш
    14:50 метод
    18:47 оптимизация кода для массивов
    35:46 инлайн кэш в массивах
    42:40 примеры с функциями
    50:40 примеры с глобальными свойствами
    57:18 итоги
    1:01:30 вопрос про скрытые классы
    1:05:40 вопрос про оптимизацию

  • @Antonio-fm1sq
    @Antonio-fm1sq 3 ปีที่แล้ว +1

    Спасибо!

  • @KostiaBazrov
    @KostiaBazrov 4 ปีที่แล้ว +8

    олд скул

  • @Karmazins
    @Karmazins 4 ปีที่แล้ว +3

    habr.com/ru/post/303542/
    Для полного понимания можно прочитать еще эту статью .
    Только там упоминается только про 4 уровня, возможно просто устарелая информация.

  • @alexperemey6046
    @alexperemey6046 หลายเดือนก่อน +1

    Там где объясняется, что JS преобразует числа в массиве в объекты Number(X) скорее всего ошибка.
    Мне кажется Number - это все еще number.
    new Number - это уже боксирование в Object...
    new Number(10) !== 10. И new Number(10) !== new Number(10). Оно ведет себя как object
    В то же время 10 === Number(10)

    • @TimurShemsedinov
      @TimurShemsedinov  หลายเดือนก่อน

      Так и есть, со стороны js кода, т.е. такие контракты возвращаются в js, а внутри v8 там система многоуровневого боксирования значений, по сути, любое значение в боксе, но на ружу разные интерфейсы торчат, иногда интерфейс скаляра, а иногда объекта. Послушаете Деми Мурыча по этому поводу, мы недавно с ним стрим сделали

    • @alexperemey6046
      @alexperemey6046 หลายเดือนก่อน

      @@TimurShemsedinov Т.е. способом вызова new или без него я запрашиваю разные преобразования внутреннего интерфейса обертки Number V8 в интерфейс js типов

    • @TimurShemsedinov
      @TimurShemsedinov  หลายเดือนก่อน

      @@alexperemey6046 в V8 да, но как в других движках, это может быть разным способом реализовано, так что можно об этом думать только с точки зрения контракта, как это нам видно

  • @masterguyver84
    @masterguyver84 4 ปีที่แล้ว +4

    Супер. Внутренности JS.

  • @TimurSevimli
    @TimurSevimli ปีที่แล้ว +1

    Спасибо вам большое Тимур Гафарович! Материал🔥

  • @timashoff
    @timashoff ปีที่แล้ว +1

    Именно с этой лекции надо начинать изучение JS
    Спасибо!

  • @TheTexPro
    @TheTexPro 2 ปีที่แล้ว +1

    Спасибо большое за такой подробный разбор малоизвестной темы!

  • @toscaantosca4541
    @toscaantosca4541 2 หลายเดือนก่อน

    Спасибо за видео! А после выхода в деоптимизацию возможен возврат в оптимизацию и использование накопленных инлайн кешей? Или заново будет собирать инлайн кеши.

    • @TimurShemsedinov
      @TimurShemsedinov  2 หลายเดือนก่อน

      Обычно нет, есть специальное api, которое можно пробросить в js и дернуть, чтобы все перевычислилось, но кто такое может, то ему уже проще написать оптимизировано )))

    • @toscaantosca4541
      @toscaantosca4541 2 หลายเดือนก่อน

      @@TimurShemsedinov спасибо за ответ!

  • @RisDeep
    @RisDeep 4 ปีที่แล้ว +2

    Интересно, а начиная с какого количества повторений вызывается оптимизация?

    • @TimurShemsedinov
      @TimurShemsedinov  4 ปีที่แล้ว +2

      Однозначного ответа быть не может, есть разные движки js, у них разные версии, все они очень различаются. Еще виртуалка может находиться в разном состоянии по потреблению ресурсов, памяти и исполняемому рядом коду. Но в общем от нескольких прогонов до нескольких сотен прогонов.

    • @lex5115
      @lex5115 3 ปีที่แล้ว

      @@TimurShemsedinov это только к жсу применимо или ко всем языкам, где динамик?

    • @Jaood_xD
      @Jaood_xD 2 ปีที่แล้ว

      @@lex5115 это общая идея основных движков javascript'а, таких как: V8 (от Google), SpiderMonkey (от Mozilla), JavaScriptCore (от Apple) и Chakra (Microsoft).

  • @portusdelphini
    @portusdelphini 4 ปีที่แล้ว

    полиморфный дендромутантизм

  • @МаксимКоковин-и9к
    @МаксимКоковин-и9к 4 ปีที่แล้ว

    Тимур, скажите, пожалуйста, связан ли как-нибудь инлайн-кэш с байт-кодом?

  • @deanArtDev
    @deanArtDev ปีที่แล้ว

    Шикарно!