- PVSM.RU - https://www.pvsm.ru -

Asm.js стал ещё быстрее

Asm.js стал ещё быстрееКомпания Mozilla порадовала новостью [1] об очередном улучшении производительности Asm.js [2]. Этот промежуточный язык обеспечивает исключительно высокую скорость выполнения кода, написанного на языках вроде C и C++, является свободной альтернативой Google Native Client и работает в любом браузере (хотя в Firefox — быстрее всего).

Например, после компиляции кода C++ в Asm.js с помощью компилятора Emscripten раньше потеря производительности была примерно двукратной, теперь же код Asm.js медленнее нативной программы не более чем в полтора раза.

Некоторые из проведённых оптимизаций небольшие и незначительные, а другие более серьёзные. Например, Firefox недавно научился оптимизировать некоторые операции с плавающей запятой таким образом, что вместо чисел float64 вычисления осуществляются с менее точными числами float32, что даёт очень большую прибавку в производительности. Соответствующее изменение было внесено в Asm.js, компилятор Emscripten и движок SpiderMonkey.

На диаграмме показана скорость выполнения операций в разных окружениях, относительно clang 3.2 (принят за единицу). Меньшее время соответствует лучшему результату.

Asm.js стал ещё быстрее

Красным цветом показан Firefox со сгенерированным кодом на Emscripten с использованием 32-битных чисел (firefox-f32). Как видим, операции на Asm.js выполняются очень близко к нативной скорости в операционной системе. Максимальная разница составляет эти самые 1,5 раза, а в некоторых случаях Firefox показывает даже лучшую производительность!

Разработчики обещают продолжать оптимизацию и дальше, хотя уже сейчас, например, движок Unreal Engine 3 отлично запускается в браузере. В своё время это была одна из первых демонстраций Asm.js.

Автор: alizar

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/51593

Ссылки в тексте:

[1] новостью: https://hacks.mozilla.org/2013/12/gap-between-asm-js-and-native-performance-gets-even-narrower-with-float32-optimizations/

[2] Asm.js: http://asmjs.org/

[3] Источник: http://habrahabr.ru/post/207340/