asm.js 減量やってみた
by
ueshita
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
asm.js 減量やってみた うえした (@ueshita)
Slide 2
Slide 2 text
EmscriptenでCライブラリを移植してみた うごいた。 わーい!すごーい!たーのしー!
Slide 3
Slide 3 text
Webエンジニアに見せてみた Web「ええやん。便利やん!」 Web「そんで、(JSのサイズは)なんぼなん?」 ぼく「1.2MBです・・・(震え声)」 Web「・・・」
Slide 4
Slide 4 text
Webの世界でMBはデカすぎる jQuery : 100KB three.js: 500KB my-library.js : 1.2MB 圧縮しても 400KB!
Slide 5
Slide 5 text
結果にコミットしたい JSファイルサイズを減量しないと(使命感)
Slide 6
Slide 6 text
最適化オプションに -Oz を指定 -O2 → -Oz 50KB 減った!
Slide 7
Slide 7 text
--llvm-lto 1 を付ける 関数呼び出しがいい感じにインライン化される 40KB 減った! --llvm-lto 2 or 3 等もあるが結果は変わらなかった。
Slide 8
Slide 8 text
-s NO_FILESYSTEM=1 を付ける 使用していないEmscriptenファイルシステムをカット (fopenとかfstreamが使えなくなります) 70KB 減った! 清水さんゴメンナサイ・・・
Slide 9
Slide 9 text
いらないソースを削る マルチプラットフォームなライブラリなので、 Webでは絶対に使わないコードがある。 #ifdefを使って頑張って削った 240KB 減った! 呼び出されない関数はリンクタイム最適化で捨てられるので、 無理に削る必要はない。
Slide 10
Slide 10 text
マクロをやめて関数にする ソースでCのマクロが多用されていた 同じ処理が色々なところに複製されている! マクロをやめて関数にしてみた 50KB 減った! inline関数でもいい感じにやってくれるかも
Slide 11
Slide 11 text
Emscriptenのバージョンを上げる 1.35.00 → 1.36.14 (sdk-incoming-64bit) 60KB 減った!
Slide 12
Slide 12 text
いろいろ減量してみた結果 1.2MB → 690KB gzip圧縮時 : 190KB いろいろ頑張ったけど、まだでかい・・・
Slide 13
Slide 13 text
ん? WebAssembly・・・? -s WASM=1 でビルド 無圧縮 asm.js比 サイズ 1/2!! gzip圧縮 asm.js比 サイズ 2/3!! 各ブラウザベンダー 早く対応してくれぇー!!