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

от автора

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

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

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

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

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

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

ссылка на оригинал статьи http://habrahabr.ru/post/207340/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *