🔥

Тред (Роман Дворнов)


Еще пример, функция не оптимизировалась из-за этого if'а if (ch === '\n' || (ch === '\r' && next !== '\n') || ch === '\f') { .. }

Все потому, что в строке не было \r и условие с next не срабатывало -> не было информации о типах для next и это блокировало оптимизацию

Стоило поменять местами проверки: if (ch === '\n' || (next !== '\n' && ch === '\r') || ch === '\f') { .. } и функция стала оптимизироваться

Хотя, казалось бы, стало хуже – чаще 4 проверки вместо трех. Но функция стала работать быстрее, потому что стала оптимизироваться

Это к тому, что нужно использовать инструменты, чтобы увидеть как код выполняется на самом деле. Вы можете заблуждаться насчет оптимальности