看漫畫,學 WebAssembly

根號三發表於2017-03-14

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 倍。

看漫畫,學 WebAssembly
A graph showing JS execution performance increasing sharply in 2008

通過這種效能的改善,JavaScript 開始被用於沒有人期望用它來做的一些事情上。例如使用 Node.js 進行服務端程式設計。效能的改善使得在一個全新的問題上使用 JavaScript 成為了可能。

伴隨著 WebAssembly,我們現在可能正處於另一個轉折點。

看漫畫,學 WebAssembly
A graph showing another performance spike in 2017 with a question mark next to it

因此,讓我們深入細節之中,來理解是什麼使得 WebAssembly 很快。

第二篇傳送門

相關文章