Огромное вам спасибо за ваши лекции! Подробно разобранный материал, большое количество примеров и объяснения! Благодаря вашим курсам, я освоила начальный уровень программирования на JS и смогла устроится в топ Беларуских компаний на Node.js разработчика) Спасибо за ваш труд и любовь к своей работе!
@timashoff Жыл бұрын
Именно с этой лекции надо начинать изучение JS Спасибо!
@antonsuhov4222 Жыл бұрын
0:43 поля 6:27 скрытые классы 10:28 инлайн кэш 14:50 метод 18:47 оптимизация кода для массивов 35:46 инлайн кэш в массивах 42:40 примеры с функциями 50:40 примеры с глобальными свойствами 57:18 итоги 1:01:30 вопрос про скрытые классы 1:05:40 вопрос про оптимизацию
@TimurSevimli Жыл бұрын
Спасибо вам большое Тимур Гафарович! Материал🔥
@TheTexPro2 жыл бұрын
Спасибо большое за такой подробный разбор малоизвестной темы!
@masterguyver845 жыл бұрын
Супер. Внутренности JS.
@deanArtDev2 жыл бұрын
Шикарно!
@Antonio-fm1sq3 жыл бұрын
Спасибо!
@Karmazins5 жыл бұрын
habr.com/ru/post/303542/ Для полного понимания можно прочитать еще эту статью . Только там упоминается только про 4 уровня, возможно просто устарелая информация.
@alexperemey60463 ай бұрын
Там где объясняется, что JS преобразует числа в массиве в объекты Number(X) скорее всего ошибка. Мне кажется Number - это все еще number. new Number - это уже боксирование в Object... new Number(10) !== 10. И new Number(10) !== new Number(10). Оно ведет себя как object В то же время 10 === Number(10)
@TimurShemsedinov3 ай бұрын
Так и есть, со стороны js кода, т.е. такие контракты возвращаются в js, а внутри v8 там система многоуровневого боксирования значений, по сути, любое значение в боксе, но на ружу разные интерфейсы торчат, иногда интерфейс скаляра, а иногда объекта. Послушаете Деми Мурыча по этому поводу, мы недавно с ним стрим сделали
@alexperemey60463 ай бұрын
@@TimurShemsedinov Т.е. способом вызова new или без него я запрашиваю разные преобразования внутреннего интерфейса обертки Number V8 в интерфейс js типов
@TimurShemsedinov3 ай бұрын
@@alexperemey6046 в V8 да, но как в других движках, это может быть разным способом реализовано, так что можно об этом думать только с точки зрения контракта, как это нам видно
@toscaantosca45414 ай бұрын
Спасибо за видео! А после выхода в деоптимизацию возможен возврат в оптимизацию и использование накопленных инлайн кешей? Или заново будет собирать инлайн кеши.
@TimurShemsedinov4 ай бұрын
Обычно нет, есть специальное api, которое можно пробросить в js и дернуть, чтобы все перевычислилось, но кто такое может, то ему уже проще написать оптимизировано )))
@toscaantosca45414 ай бұрын
@@TimurShemsedinov спасибо за ответ!
@МаксимКоковин-и9к4 жыл бұрын
Тимур, скажите, пожалуйста, связан ли как-нибудь инлайн-кэш с байт-кодом?
@RisDeep4 жыл бұрын
Интересно, а начиная с какого количества повторений вызывается оптимизация?
@TimurShemsedinov4 жыл бұрын
Однозначного ответа быть не может, есть разные движки js, у них разные версии, все они очень различаются. Еще виртуалка может находиться в разном состоянии по потреблению ресурсов, памяти и исполняемому рядом коду. Но в общем от нескольких прогонов до нескольких сотен прогонов.
@lex51153 жыл бұрын
@@TimurShemsedinov это только к жсу применимо или ко всем языкам, где динамик?
@Jaood_xD2 жыл бұрын
@@lex5115 это общая идея основных движков javascript'а, таких как: V8 (от Google), SpiderMonkey (от Mozilla), JavaScriptCore (от Apple) и Chakra (Microsoft).