Nov. 14th, 2014

thedeemon: (office)
Ну что ж, друзья мои, по крайней мере в Firefox'e для числодробилок в браузере нет языка лучше, чем С++. Но только там, правда.

Задействовал сегодня Emscripten :: С++ -{clang/LLVM}-> ASM.js.
Чтобы его поставить уж было расчехлил свой линукс, но оказалось, что проще всего его поставить как раз в винде: установка в один клик, и все сразу работает из коробки. Использовать С++ код из JS оказалось весьма просто, когда разберешься что к чему. Ключевой момент: ASM.js работает в пределах одного единственного массива фиксированной длины. Просто так передать ему пару других массивов из JS не выйдет, нужно выделять для них память в этой вот куче ASM.js, копировать туда, потом оттудова читать результат. В Firefox'e компиляцией ASM.js кода занимается отдельный специализированный ahead of time конпелятор, в то время как остальные браузеры относятся к нему как к обычному JS.

В итоге на тесте с декодированием картинки на моем ноуте текущая ситуация такая (время декодирования в миллисекундах и размер кода):
             Chrome 38:     Firefox 33:    IE 11:       Size:

Flash           57              58           58          6 KB
Dart to JS      60              70           95        135 KB
C++  to ASM.js  54              43          149        212 KB
Haxe to JS      52              49          fail        12 KB


Погонять ASM.js. Все тесты.

Успел даже на малюсеньком тесте столкнуться с разницей браузеров в исполнении/неисполнении JS: что работало в Хроме, падало в Firefox'e: он видите ли не дает responseType у XHR устанавливать до вызова open(). А сгенеренный Haxe'ом код не взлетел в IE: не могу, говорит, скастить HTMLInputElement в HTMLInputElement (хвала динамической типизации, где сравнение типов может делать что угодно кроме того, что надо!).

Итого, если ориентироваться на Firefox, то рулит С++ и ASM.js, в Хроме рулит чистый JS (который фактически и получается из Haxe), а если нужно, чтобы был компактный код, который стабильно и шустро работает везде, то по-прежнему рулит Flash. Ну а если еще про айфоны всякие вспомнить, то... проще плюнуть и никогда больше к этому проклятому болоту, фронтэнду, не приближаться.

Profile

thedeemon: (Default)
Dmitry Popov

May 2025

S M T W T F S
    123
45678910
11 121314151617
18192021222324
25262728293031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 18th, 2025 07:31 am
Powered by Dreamwidth Studios