Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
asm.js 減量やってみた
Search
ueshita
February 22, 2017
Programming
0
810
asm.js 減量やってみた
Emscriptenでビルドされたjsファイルのサイズは巨大です。
サイズを小さくする手法をいろいろ紹介します。
ueshita
February 22, 2017
Tweet
Share
More Decks by ueshita
See All by ueshita
こわくない!! たのしい!! GDExtension
ueshita
0
1.1k
Godot Engine完全に理解したかった
ueshita
1
450
UnmanagedThreadノススメ
ueshita
2
8k
Unityで3Dツールを作って開発を加速する
ueshita
3
3.3k
EmscriptenのOpenGLと純粋なWebGLと共存させる黒魔術
ueshita
1
4.3k
Other Decks in Programming
See All in Programming
Zero Waste, Radical Magic, and Italian Graft – Quarkus Efficiency Secrets
hollycummins
0
230
Netty Chicago Java User Group 2024-04-17
sullis
0
180
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
800
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
230
Ruby Function Composition
bkuhlmann
1
330
What We Can Learn From OSS
inouehi
0
420
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
190
⼤規模⾔語モデルの拡張(RAG)が 終わったかも知れない件について
nearme_tech
23
15k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.4k
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
670
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
0
250
エンターテイメント業界で利用されるAWS
demuyan
0
210
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
KATA
mclloyd
15
12k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
Building an army of robots
kneath
300
41k
Making the Leap to Tech Lead
cromwellryan
124
8.5k
Designing with Data
zakiwarfel
96
4.8k
Happy Clients
brianwarren
92
6.4k
Building Your Own Lightsaber
phodgson
99
5.7k
Practical Orchestrator
shlominoach
182
9.7k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
Transcript
asm.js 減量やってみた うえした (@ueshita)
EmscriptenでCライブラリを移植してみた うごいた。 わーい!すごーい!たーのしー!
Webエンジニアに見せてみた Web「ええやん。便利やん!」 Web「そんで、(JSのサイズは)なんぼなん?」 ぼく「1.2MBです・・・(震え声)」 Web「・・・」
Webの世界でMBはデカすぎる jQuery : 100KB three.js: 500KB my-library.js : 1.2MB 圧縮しても
400KB!
結果にコミットしたい JSファイルサイズを減量しないと(使命感)
最適化オプションに -Oz を指定 -O2 → -Oz 50KB 減った!
--llvm-lto 1 を付ける 関数呼び出しがいい感じにインライン化される 40KB 減った! --llvm-lto 2 or 3
等もあるが結果は変わらなかった。
-s NO_FILESYSTEM=1 を付ける 使用していないEmscriptenファイルシステムをカット (fopenとかfstreamが使えなくなります) 70KB 減った! 清水さんゴメンナサイ・・・
いらないソースを削る マルチプラットフォームなライブラリなので、 Webでは絶対に使わないコードがある。 #ifdefを使って頑張って削った 240KB 減った! 呼び出されない関数はリンクタイム最適化で捨てられるので、 無理に削る必要はない。
マクロをやめて関数にする ソースでCのマクロが多用されていた 同じ処理が色々なところに複製されている! マクロをやめて関数にしてみた 50KB 減った! inline関数でもいい感じにやってくれるかも
Emscriptenのバージョンを上げる 1.35.00 → 1.36.14 (sdk-incoming-64bit) 60KB 減った!
いろいろ減量してみた結果 1.2MB → 690KB gzip圧縮時 : 190KB いろいろ頑張ったけど、まだでかい・・・
ん? WebAssembly・・・? -s WASM=1 でビルド 無圧縮 asm.js比 サイズ 1/2!! gzip圧縮
asm.js比 サイズ 2/3!! 各ブラウザベンダー 早く対応してくれぇー!!