The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Новые оптимизации в Firefox сократили разрыв в производитель..."
Отправлено opennews, 20-Дек-13 14:21 
Разработчики Mozilla сообщили (https://hacks.mozilla.org/2013/12/gap-between-asm-js-and-nat.../) о реализации в JavaScript-движке SpiderMonkey новой оптимизации операций с плавающей запятой (float32), которая позволила достигнуть нового уровня производительности web-приложений, использующих подмножество Asm.js (http://www.opennet.ru/opennews/art.shtml?num=36468). Тестирование производительности показало, что выполняемое в новой сборке Firefox JavaScript-приложение выполняется примерно в 1.5 раза медленнее, чем скомпилированная в машинный код реализация того же алгоритма на языке Си. До внесения оптимизации наблюдалось расхождение производительности в два раза.

<center><a href="https://hacks.mozilla.org/wp-content/uploads/2013/12/asm1.5b... src="http://www.opennet.ru/opennews/pics_base/0_1387531611.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></a></center>


Ускорение наблюдается и при выполнении обычного JavaScript-кода, но наибольший эффект достигается за счёт применения нового типа float32 в Asm.js (http://asmjs.org/), низкоуровневом подмножестве языка JavaScript со строгой типизацией, которое полностью совместимо с обычным JavaScript и может выполняться в любых браузерах. Если браузер не поддерживает Asm.js, то код выполняется как обычный JavaScript, а если поддерживает - включается дополнительный оптимизирующий модуль, учитывающий добавленные в код аннотации. Наличие информации о типах позволяет использовать не только JIT, но и предварительную AOT-компиляцию, выполняемую для всего кода до начала его выполнения и генерирующую более простой и эффективный машинный код. При этом, в отличие от JIT-компиляции, Asm.js обеспечивает предсказуемую производительность и не зависит от сборщика мусора.

В настоящее время Asm.js позиционируется в качестве "ассемблера для Web" и используется в web-приложениях, автоматически преобразованных в JavaScript с языков C/C++ при помощи таких инструментов, как Emscripten (http://www.opennet.ru/opennews/art.shtml?num=35313) и  Mandreel (http://mandreel.com/). Для более эффективного использования новых  оптимизаций в компилятор Emscripten уже добавлена логика, направленная на более активное использование типа float32 вместо менее эффективного типа float64. При этом оптимизации пока не включены по умолчанию в Emscripten, так как ещё не решены некоторые сопутствующие проблемы, такие как увеличение размера итоговой программы и замедление в некоторых специфичных ситуациях.


Примечательно, что по тестам разработчиков JavaScriot-код, непосредственно манипулирующий 32-разрядными вычислениями с плавающей точкой, за счёт предкомпиляции выполняется с использованием движка SpiderMonkey иногда даже быстрее, чем те же вычисления в программе, полученной в результате компиляции в GCC или Clnag. Общий уровень производительности Asm.js приближается к значениям, не сильно расходящимся с показателями на которое разные нативные компиляторы отличаются между собой.


URL: https://hacks.mozilla.org/2013/12/gap-between-asm-js-and-nat.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=38700

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру