2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WebAssembly (Wasm)の可能性

2
Posted at

書いたこと

Wasm側からブラウザに対してどういった処理が行えるのかサンプルをいくつか作ったのでご紹介します。

Wasmは、C++やGoなど各種の言語から生成することが出来ます。
今回は、Rustを使ってWasmを生成しています。

図: Rustを使ったWasmの生成と実行の流れ
wasm-compile-baseline.png

WebAssembly(Wasm)について

ブラウザのためのアセンブリ言語

WebAssembly(Wasm)の場合は、構文を解析する必要がなく、そのまま機械語にコンパイルすることが可能になっています。
それによってデスクトップ上のアプリケーションと同様にCPU上でコードを実行させることができます。

JavaScript Wasm
構文解析 あり なし
コードの実行 インタプリタ上 (※1) CPU上

(※1 Chrome(V8)は、最適化可能なJSコードであれば、2回目以降、機械語にコンパイルされ、Wasmと同様にCPU上で実行されます。)

作成したWebアプリケーション

  • Wasm側からのアラートの表示
  • フィボナッチ計算
  • 画像のエッジ抽出

アラートの表示

Screen Shot 2021-03-21 at 23.47.32.png

フィボナッチ計算

Screen Shot 2021-03-21 at 23.48.26.png

画像のエッジ抽出

Screen Shot 2021-03-21 at 23.46.56.png

まとめ

Wasmを使うことで、画像処理やファイルのパースといった重たい処理を高速化するだけでなく、Wasm側からDOMを流し込むことも可能です。

ソースコード

アラートの表示

フィボナッチ計算

エッジ抽出

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?