- PVSM.RU - https://www.pvsm.ru -
Компания 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 (принят за единицу). Меньшее время соответствует лучшему результату.
Красным цветом показан 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/
Нажмите здесь для печати.