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
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
670
UnmanagedThreadノススメ
ueshita
2
8.4k
Unityで3Dツールを作って開発を加速する
ueshita
3
3.7k
EmscriptenのOpenGLと純粋なWebGLと共存させる黒魔術
ueshita
1
5.1k
Other Decks in Programming
See All in Programming
act1-costs.pdf
sumedhbala
0
230
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
260
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.3k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
0
270
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
660
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.6k
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
140
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
190
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3.8k
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
360
どこまでゆるくて許されるのか
tk3fftk
0
490
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
350
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
Odyssey Design
rkendrick25
PRO
2
730
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.4k
BBQ
matthewcrist
89
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Paper Plane (Part 1)
katiecoart
PRO
1
9.7k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
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!! 各ブラウザベンダー 早く対応してくれぇー!!