Опрос
|
Быстрый переход
Технология asm.js для Mozilla Firefox стала ещё ближе по скорости исполнения к машинному коду
23.12.2013 [12:53],
Константин Ходаковский
Со времени выхода 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 и обещает другие новшества
24.01.2013 [14:31],
Константин Ходаковский
![]() 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 поисковый гигант сможет поддерживать не только современные, но и будущие архитектуры без необходимости перекомпиляции приложений. Материалы по теме: Источник: |