Pull to refresh

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

Reading time1 min
Views21K
Компания 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.

Tags:
Hubs:
+61
Comments16

Articles

Change theme settings