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. Если вы планируете создать масштабируемое веб-приложение, Свяжитесь с нами для получения дополнительной информации.