0 |
Вопрос о производительности JavaScript стал актуальным в 2008 г. До того все движки JavaScript в распространенных веб-браузерах были достаточно медленными. В 2008 г. Google выпустила Chrome с движком V8 JavaScript, Apple — Safari 4 и движком Nitro. Эти технологии обеспечили высокое быстродействие JavaScript за счет JIT-компиляции. Позже Mozilla выпустила TraceMonkey, а Microsoft — Chakra.
JIT-компиляция обеспечила повышение быстродействия JavaScript, но и у нее имелись ограничения, связанные со сложностью оптимизации языка JavaScript. Чтобы дополнительно ускорить работу JavaScript, в Mozilla разработали asm.js, которая выполняет компиляцию не в байткод, а в ограниченное подмножество JavaScript, которое хорошо оптимизируется и компилируется в машинный код перед выполнением. Таким образом, удается достичь производительности всего вдвое меньше нативной.
Asm.js представляет собой программу на JavaScript и может выполняться в любом браузере: если браузер не поддерживает Asm.js, код выполняется как обычный JavaScript; если поддерживает Asm.js, то работает дополнительный модуль оптимизации, учитывающий добавленные в код аннотации. В отличие от JIT-компиляции, Asm.js обеспечивает предсказуемую производительность и не зависит от сборщика мусора. Для компиляции Asm.js используется другой проект Mozilla Emscripten, но, как утверждают в компании, скомпилированное с использованием Emscripten приложение выполняется без Asm.js медленнее в 5 раз.
На классических тестах производительности преимущество Asm.js над JIT-компиляцией незначительно. Наибольший прирост новая технология дает на тесте STREAM. В тестах Benchmark Game также видны преимущества Asm.js в скорости исполнения, но они сильно варьируются в зависимости от типа программы. В целом, Asm.js действительно работает быстрее.
Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365
0 |