Сегодня 09 февраля 2023
18+
MWC 2018 2018 Computex IFA 2018
Теги → native client

Технология asm.js для Mozilla Firefox стала ещё ближе по скорости исполнения к машинному коду

Со времени выхода Firefox 22 в июне браузер включает особое подмножество JavaScript — asm.js, которое призвано принципиально ускорить исполнение сложного кода JavaScript-программ, скомпилированных из языка C++ в asm.js. Благодаря модулю OdinMonkey для JavaScript-движка Firefox, код asm.js исполняется значительно быстрее, а на днях Mozilla сообщила, что ей удалось добиться определенных успехов в увеличении скорости обработки кода asm.js.

Для продвижения высокопроизводительных веб-приложений вроде игр Google делает ставку на технологию Native Client, позволяющую веб-приложениям исполнять в браузере машинный код. Mozilla развивает принцип исполнения JavaScript на скорости, близкой к машинному коду с помощью особого компилятора Emscripten. Оба подхода имеют свои плюсы и минусы, но каждый позволяет разработчикам писать изначально код в C или C++, а после особой компиляции исполнять его в браузере.

За прошедшее с июня время, как сообщила команда Mozilla в своём блоге, ей удалось добиться производительности, лишь в полтора раза уступающей скорости выполнения машинного кода. Во многом это было обеспечено небольшими изменениями в asm.js и компиляторе Emscripten. Также Firefox получил ряд существенных оптимизаций по обработке операций с плавающей запятой. Последние обеспечивают следующий прирост (оранжевый — Firefox без оптимизаций float32, а красный — с ними):

Mozilla отмечает, что указанный прирост — не предел, и в перспективе будут внедрены дополнительные улучшения в работе связки Emscripten и JavaScript, которые позволяет ещё сильнее сократить отставание по скорости от машинного кода. На данный момент asm.js остаётся по сути проектом Mozilla. И хотя команда Google Chrome хорошо осведомлена о технологии и добавила её в тестовый пакет Octane, вряд ли в скором времени Chrome будет её поддерживать. Впрочем, стоит отметить, что код asm.js может исполняться на любом современном движке JavaScript, просто медленнее, чем в Firefox.

Большая часть игр движков написаны на C или C++, так что и asm.js прежде всего концентрируется на эту сферу развлечений — технология в своё время понравилась специалистам Epic Games и они выпустили особую версию демонстрации Epic Citadel, исполняемую в браузере без всяких дополнений при помощи веб-технологий HTML5, WebGL и JavaScript. До этого сама Mozilla представила демонстрационный боевик BananaBread (в основе лежат JavaScript, WebGL и WebRTC) на базе движка Cube 2: Sauerbraten, написанного изначально на C++ и OpenGL.

Google реализовала поддержку ARM в Native Client для Chrome и обещает другие новшества

Native Client — это технология, позволяющая браузеру Chrome исполнять высокопроизводительные приложения, разработанные с использованием кода C и C++. Одной из главных целей Native Client является независимость от архитектур, так чтобы все устройства могли исполнять соответствующий контент. В рамках достижения поставленной задачи Google сообщила недавно о том, что Native Client SDK с версии 25 и выше теперь поддерживает устройства с архитектурой ARM.

Если приложение использует Native Client и newlib, разработчик может добиться исполнения своего кода на ARM-устройствах просто добавив перекомпилированную ARM-версию кода .nexe в веб-приложение и внеся небольшие корректировки в Native Client manifest. Все инструменты для этого доступны в последней версии SDK, которую можно скачать с сайта Google.

Пока речь идёт только о хромбуках (точнее, о единственном вышедшем пока хромбуке от Samsung), а не о Chrome для Android. В 2013 году компания обещает выпустить следующее поколение технологии — Portable Native Client — которое будет по-настоящему независимым от архитектуры благодаря использованию LLVM bitcode в качестве связующего формата. С помощью Portable Native Client поисковый гигант сможет поддерживать не только современные, но и будущие архитектуры без необходимости перекомпиляции приложений.

Материалы по теме:

Источник:

window-new
Soft
Hard
Тренды 🔥