10 мифов об оптимизации JS
Разбор популярного видео — что в нём правда, а что вредный совет. Главный посыл: большинство «правил» оптимизации придуманы из ниоткуда или устарели на 10 лет.
Мифы, которые умерли
forвсегда быстрееforEach— в современном V8 разница часто в шуме после прогрева. Без замеров не выбирай.++iбыстрееi++— миф с конца 90-х, давно одинаково.switchбыстрееif— нет, сводится к if.- Кэшируй
arr.lengthвfor— V8 это сам делает с 2015 года. - Используй битовые операции вместо
Math— кроме узких кейсов, разница в шуме. deleteоптимизирован — нет, переводит объект в dictionary mode.Object.create(null)всегда быстрее{}— на ключах-строках обычно медленнее (нет inline cache).- JIT всё оптимизирует, можно писать как угодно — нет, нестабильные типы → деопт.
async/awaitбесплатен — каждоеawaitсоздаёт промис и микротаску.Mapвсегда быстрееObject— на small fixed-shape объектах{}быстрее.
Что реально работает
- Сохранять monomorphic типы аргументов и форм объектов.
- Не плодить мусор в горячем цикле (reuse arrays/objects).
- Писать функции с одним return (помогает инлайну).
- Меньше уровней косвенности (
obj.a.b.c.dдороже, чем плоский access). - Избегать
try/catchв горячих циклах (в старых V8 — гарантированный bailout).
Главный совет
«Если ты не замерил — не оптимизировал. Если измерил неправильно — тем более не оптимизировал.»
Сначала правильный бенчмарк, потом гипотеза, потом изменение.
Источники
- Смотрим вместе YT 10 мифов об оптимизации JavaScript · AsForJS · 2026-04-12
- ТОП 5 JavaScript Мифов, или Вы не знаете JavaScript · AsForJS · 2021-11-14
- Обзор 2 вещи которые убивают перформанс в JavaScript · AsForJS · 2023-06-01
- Производительность и Clean Code · AsForJS · 2024-06-20