Будет ли JavaScript быстрее как компилируемый язык?



Да, значительно . Именно это делает жизнеспособными такие приложения, как Google Maps, GMail и Google Docs. Я помню время, когда JS был интерпретирован, тогда эти приложения казались бы полной научной фантастикой.

Из страницы Википедии о SpiderMonkey:

TraceMonkey был первым JIT-компилятором, написанным для языка JavaScript. Первоначально представленный в качестве опции в бета-версии и представленный в блоге Брендана Эйха 23 августа 2008 года, компилятор стал частью основного выпуска как часть SpiderMonkey в Firefox 3.5, обеспечивая "улучшение производительности, начиная с от 20 до 40 раз быстрее ", чем базовый интерпретатор в Firefox 3.

Со страницы Википедии, посвященной V8 (движок JavaScript):

Сначала V8 генерирует абстрактное синтаксическое дерево с помощью собственного синтаксического анализатора. Затем Ignition генерирует байткод из этого синтаксического дерева, используя внутренний формат байткода V8. TurboFan компилирует этот байткод в машинный код. Другими словами, V8 компилирует ECMAScript непосредственно в родной машинный код используя компиляцию "точно в срок" перед выполнением. Скомпилированный код дополнительно оптимизируется (и переоптимизируется) динамически во время выполнения, основываясь на эвристике профиля выполнения кода.

Если вы имеете в виду компиляцию с опережением времени (AOT) и поставку в виде низкоуровневого кода, как LLVM bitcode или WASM или что-то еще,20u2026 то, возможно, немного, так как AOT компилятор может потратить столько времени, сколько захочет, чтобы разобраться во всем этом, но из-за отсутствия информации о типах, вы мало что можете сделать с опережением времени, вы’ застрянете на генерации очень неоптимального кода, как это делает TurboFan, пока во время выполнения не появится информация о типах. Определенно не стоит ожидать, что AOT компилятор вдруг сможет дать вам производительность C++ или что-то подобное только потому, что вы используете AOT компилятор.

138   0  
    Ничего не найдено.

Добавить ответ:
Отменить.