WebAssembly 執行得很快,你可能已經聽說過這個了。但是是什麼讓 WebAssembly 這麼快呢?
在這個系列的文章裡,我想和你解釋一下為什麼 WebAssembly 這麼快。
等等,WebAssembly 究竟是什麼?
WebAssembly 是一種用 JavaScript 以外的程式語言編寫的程式碼並在瀏覽器中執行該程式碼的方法。因此當人們說 WebAssembly 執行得很快的時候,通常他們都是在和 JavaScript 進行比較。
現在,我不想暗示這是一個二選一的情況 —— 你要麼用 WebAssembly 或者用 JavaScript。事實上,我們期望開發者能夠在同一個應用裡面同時使用 WebAssembly 和 JavaScript。
但是比較一下這二者是非常有用的,你可以因此理解 WebAssembly 將會具有的潛在影響。
一點效能歷史
JavaScript 建立於 1995 年。它不是為了快而設計的,並且在最初前十年,它並不快。
然後瀏覽器之間的競爭開始變得愈演愈烈。
在 2008 年,人們所謂的“效能戰爭”時期開始了。很多瀏覽器都新增了即時編譯器 —— 也叫做 JIT。當 JavaScript 執行時,JIT 可以看到模式(pattern)並且基於這些模式(pattern)讓程式碼執行得更快。
這些 JIT 的引入致使 JavaScript 的效能進入了一個轉折點。JS 的執行速度快了 10 倍。
通過這種效能的改善,JavaScript 開始被用於沒有人期望用它來做的一些事情上。例如使用 Node.js 進行服務端程式設計。效能的改善使得在一個全新的問題上使用 JavaScript 成為了可能。
伴隨著 WebAssembly,我們現在可能正處於另一個轉折點。
因此,讓我們深入細節之中,來理解是什麼使得 WebAssembly 很快。