Обложка канала

Defront (при поддержке Зарплата.ру) — про фронтенд-разработку и не только

6354 @defront

Канал про фронтенд-разработку и не только. Небольшие посты и короткие пересказы статей, приправленные авторским мнением. Ведёт канал Александр Мышов из Яндекс.Маркета.

Defront (при поддержке Зарплата.ру) — про фронтенд-разработку и не только

5 лет назад
Открыть в
Поиск причины деградации времени сборки Webpack 5 Оуэн Хэннесси поделился историей поиска бага, из-за которого время запуска dev-сервера Webpack замедлилось в пятнадцать раз — "Understanding why our build got 15x slower with Webpack 5". Проблема возникла после добавления невинной тёмной темы. Первые подозрения упали на CSS-in-JS-библиотеку Linaria. С помощью профилировщика внутри библиотеки была найдена проблемная функция, в которой использовался метод массива .concat(). Переписывание кода без использования .concat() решило проблему. Однако оставались вопросы, из-за того что в оригинальном коде просадки скорости не было при сборке проекта с помощью Webpack 4. Надо было исследовать исходники V8. В V8 у метода .concat() есть две ветки выполнения кода — медленная и быстрая. Медленная ветка начинает работать в том случае, если движок хотя бы один раз устанавливал Symbol.isConcatSpreadable. В Webpack 5 это происходило в коде, отвечающем за обратную совместимость с четвёртой версией. Для решения проблемы разработчики Webpack добавили экспериментальную опцию backCompat, которая полностью отключает обратную совместимость, избавляясь от ещё большего количества проблемного кода. #v8 #performance #webpack engineering.tines.com/blog/un…-webpack
Understanding why our build got 15x slower with Webpack 5 - Tines Engineering

A while back, we encountered an odd problem. All of a sudden, building our front-end went from taking a few seconds to taking a few minutes. We felt this most acutely when starting our front-end development server.

Tines