中級 Pro ⏱ 30:00
16-3 (付費) 計算極速:WebAssembly 與多執行緒
(Pro) 突破 JS 運算上限。學習 WebAssembly 整合、多執行緒技術,以及在 2026 年如何編寫負擔最輕的程式碼。
16-3 (付費) 計算極速:WebAssembly 與多執行緒
👋 **老師的話 (Script)**:
"歡迎來到效能優化的終極領域。
當你的應用程式涉及影像處理、加密運算或 3D 物理時,
純 JavaScript 的底層限制會變得很明顯。
這一章,我们要學習如何引進 WebAssembly (WASM)。 它就像是給瀏覽器裝上了一個外掛引擎,讓你可以用接近原生 C++/Rust 的速度執行代碼。 同時,我會教你 2026 年最頂級的優化思維:不要過早優化,但要『寫對』架構。“
1. WebAssembly (WASM) 是什麼?
WASM 不是取代 JS,它是 JS 的強力隊友。 它是一個濃縮、高效的二進位格式。
// 載入與執行 WASM
const response = await fetch('module.wasm');
const bytes = await response.arrayBuffer();
const results = await WebAssembly.instantiate(bytes);
const { heavyLogic } = results.instance.exports;
console.log(heavyLogic()); // 速度比純 JS 快數倍
2. 避免 V8 引擎的高額成本
- 不要隨意更換物件結構:這會導致 V8 丟棄優化好的底層代碼 (Deoptimization)。
- 保持函數參數的 Stable:輸入類型越統一,JS 引擎跑得越順。
3. Off-Main-Thread 架構
把所有不影響 UI 的邏輯,通通丟給 Web Workers。 主執行緒只負責一件事:處理使用者的點擊與畫面更新。
🧪 Lab 42: 效能大亂鬥
比較一段複雜運算在 主執行緒 執行與在 Web Worker 執行的差異。
當主執行緒在運算時,試著拉動網頁捲軸,感受那種「卡頓感」。