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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ueshita
February 22, 2017
Programming
1k
0
Share
asm.js 減量やってみた
Emscriptenでビルドされたjsファイルのサイズは巨大です。
サイズを小さくする手法をいろいろ紹介します。
ueshita
February 22, 2017
More Decks by ueshita
See All by ueshita
こわくない!! たのしい!! GDExtension
ueshita
0
2.2k
Godot Engine完全に理解したかった
ueshita
1
660
UnmanagedThreadノススメ
ueshita
2
8.4k
Unityで3Dツールを作って開発を加速する
ueshita
3
3.7k
EmscriptenのOpenGLと純粋なWebGLと共存させる黒魔術
ueshita
1
5k
Other Decks in Programming
See All in Programming
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
120
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
280
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
360
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
190
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
250
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
210
Don't Prompt Harder, Structure Better
kitasuke
0
760
第3木曜LT会 #28
tinykitten
PRO
0
110
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
210
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
200
GitHubCopilotCLIをはじめよう.pdf
htkym
0
140
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
0
540
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
A Tale of Four Properties
chriscoyier
163
24k
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.6k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
680
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
180
Test your architecture with Archunit
thirion
1
2.2k
Faster Mobile Websites
deanohume
310
31k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
140
Mind Mapping
helmedeiros
PRO
1
150
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
520
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!! 各ブラウザベンダー 早く対応してくれぇー!!