Деоптимизация — это процесс, при котором оптимизированный компилятором код становится менее эффективным, возвращаясь к более медленной, необработанной версии. В контексте Node.js, работающего на V8, это происходит, когда оптимизирующий компилятор (Turbofan) сделал предположения (инлайн-кэширование, специфичные типы), которые впоследствии оказались ложными или недействительными из-за изменений в данных или поведении программы. Это заставляет движок отказаться от оптимизированной версии функции и вернуться к интерпретируемой или менее оптимизированной версии.
Причины деоптимизации могут включать:
eval, with или других динамических возможностей языка, которые затрудняют статический анализ.Последствия деоптимизации:
Пример (упрощенный):
javascript
Для диагностики деоптимизации можно использовать флаги V8, такие как --trace-deopt.