V8 движок JavaScript для Nodejs – это интерпретатор, выполняющий код JavaScript. Его можно использовать в качестве стандартного интерпретатора или компилятора Just-In-Time (JIT), который компилирует JavaScript в некоторую форму байтового кода.
Здесь мы перечислили некоторые популярные проекты, реализующие движок JavaScript:
- V8 — программа с открытым исходным кодом, написанная на C++ и разработанная Google.
- Rhino — разработан Mozilla Foundation на языке Java с полностью открытым исходным кодом.
- SpiderMonkey — считается первым Javascript. Тогда поддерживал Netscape Navigator, в настоящее время поддерживает Firefox.
- JavaScriptCore — первоначально разработанный Apple для Safari с открытым исходным кодом, продаваемый как Nitro.
- Chakra —движок JScript9, разработанный для Internet Explorer.
- Chakra — движок JavaScript, разработанный для Microsoft Edge.
- Nashorn — проект с открытым исходным кодом, написанный Oracle Java Languages and Tool Group как часть OpenJDK.
- JerryScript — простой, легкий, но мощный движок для Интернета вещей.
Движок JavaScript V8 в NodeJS
V8 Engine – это движок с открытым исходным кодом, разработанный Google и написанный на C++. Движок Javascript V8 предназначен для популярной среды выполнения Nodejs, в отличие от других движков, он загружается в браузере Google Chrome.
Первоначально версия 8 была разработана для повышения производительности выполнения JavaScript в веб-браузерах. Он переводит код JavaScript в эффективный машинный код вместо использования интерпретатора для увеличения скорости.
Как и другие современные движки JS, V8 компилирует код JS в машинный код с помощью компилятора JIT (Just-In-Time). Некоторыми популярными проектами, в которых реализованы движки JavaScript, являются SpiderMonkey, Rhino, Jerry script и т. д.
Читать: Что такое эмиттер событий в Node.js?
Ключевым отличием двигателя V8 от других двигателей является то, что он не создает байтовый код или какой-либо промежуточный код.
Два компилятора V8 ENGINE
Движок V8 использовал два компилятора для компиляции кода JavaScript,
- Full-Codegen — простой и быстрый компилятор, создающий низкоуровневый и медленный машинный код.
- Crankshaft — компилятор с комплексным оптимизатором Just-In-Time, который создает высокооптимизированный код.
Движок V8 также использует несколько внутренних потоков:
- Основной поток движка JavaScript Nodejs V8 будет делать почти все, что может делать компилятор. А также извлекает ваш код, компилирует его и затем выполняет.
- Поток Profiler вызывает среду выполнения, когда выполнение требует много времени, чтобы Crankshaft мог их оптимизировать.
- Здесь несколько потоков выделены для обработки сборщика мусора.
Ключевые компоненты двигателя V8
Есть несколько ключевых компонентов движка Javascript V8, которые обеспечивают высокую производительность в приложениях Nodejs. Кроме того, чистое выполнение кода JavaScript для лучшей компиляции и других операций.
- Интерпретатор JS — компилятор запуска и оптимизации
- Сборка мусора — подметальная машина старого поколения
- Веб-сборка — взлет
JS-интерпретатор
V8 достиг такой скорости благодаря JIT-компиляции JavaScript. Он соответствует JS собственному машинному коду непосредственно перед его выполнением. Поток процесса включает следующее: Базовый компилятор компилирует код, который быстро генерирует неоптимизированный машинный код.
Во время выполнения скомпилированный код анализируется и может быть повторно скомпилирован для достижения оптимальной производительности. Зажигание обеспечивает турбовентиляторный двигатель в первую очередь и коленчатый вал во вторую.
JIT-компиляция приводит к тому, что для выполнения машинного кода требуется большой объем памяти, выполнение которого даже может занять некоторое время. В то время как Ignition представляет собой решение, которое выполняет код с меньшими затратами памяти.
Проект Turbofan стартовал в 2013 году, чтобы исправить недостаток Crankshaft, который не позволяет оптимизировать некоторые функции JavaScript (например, обработку ошибок). В целом, он был разработан для оптимизации как существующих, так и будущих функций в то время.
Вывоз мусора
V8 использует один из традиционных подходов к поколениям, заключающийся в маркировке, для очистки старого поколения. Эта сборка мусора состоит из двух основных этапов: маркировки и очистки. Чтобы обеспечить стабильное выполнение, фаза маркировки останавливает выполнение JavaScript.
V8 Javascript использует инкрементную маркировку для эффективного сбора мусора в приложениях Nodejs. Вместо обхода всей кучи он обходит только часть кучи, а затем возобновляет нормальное выполнение.
Веб-сборка
Веб-сборка в движке JavaScript Nodejs V8 предназначена для достижения высокой производительности. Ключевой задачей для любого браузера является создание машины для выполнения задачи Liftoff.
В отличие от других сложных генераторов, Liftoff — это более простой генератор кода, который генерирует код для каждого кода операции за раз. Он генерирует машинный код намного быстрее, чем Turbofan, даже в диапазоне x10.
ВЫВОД
Движок JavaScript Nodejs V8 очень поможет, если вы создадите обширное веб-приложение Nodejs. Если вы планируете создать масштабируемое веб-приложение, Свяжитесь с нами для получения дополнительной информации.