WebAssembly早い印象

2018年11月10日午前11時35分56秒

JavaScriptはWebプログラミングで支配的な地位を持ってきた、進化の過程で、Webページには、JavaScriptのパフォーマンスの向上は、連続的な改革を受けています。
これは、実行速度がここで、多くのブラウザ2008年に比較的大きな転機が大幅にはJavaScriptの実装の効率を向上させ、ジャストインタイムコンパイラ(JIT、記事で後述する)を導入し、高速ではなく、もともとそれはまた、JavaScriptがバックエンド分野で開始するために使用することができますことができます。

3Dゲームでページを達成するために、リッチなWebコンテンツを使用すると、オーディオとビデオの処理がますます注目されていますが、Webページでのスピードと経験のより良い感覚を提供するために、どのようにそれは常に挑戦です。
弱い型付けされた言語としてJavaScriptを、より良いヘルププログラマに、より制限の必要性の間のコラボレーションの成長力のフロントエンドのロジック。
だから、解決しようとするいくつかの問題がありました。

  1. 構文はあまりにも柔軟です。
  2. パフォーマンス。

構文はあまりにも柔軟性があります

この時点で、JS静的型チェックに参加するために、市場の活字体に登場しました。
しかし、これは最終的には、JSにコンパイルされ、パフォーマンスを改善しませんでした。

曾经の解决方法

  • Googleは多くの人が使用して、ダーツを開発した直接ブラウザにパフォーマンスを向上させるためにダートのプログラムを実行するための新しい仮想マシンを導入しましたが、唯一、Googleのブラウザは、ありません。
  • Firefoxはasm.jsを立ち上げ、それがエンジンは、パフォーマンスの最適化のためasm.jsをやらせる、JSのサブセットです。構文、制限およびより単純すぎるasm.js。

WebAssembly何ですか

WebAssemblyは新しいものでバイトコード形式
JS及び実行異なる解釈が必要であり、根本的なマシンコード、バイトコードwebassembly非常によく似た、高速ローディング動作、JSに対してこうして性能が大幅に向上解釈されます。
高レベルのプログラミング言語は、ブラウザベンダーが行う必要がある、実行にWebAssembly仮想マシンにバイトコードをコンパイルWebAssembly仕様に応じて仮想マシンを実装しています。
非常に近いマシンコードにあるので、それは非常に迅速なアーキテクチャに対応するマシンコードに変換することができます。

WebAssemblyの优点

  • 小サイズ。
    ブラウザの負荷のみコンパイルされたバイトコード、ロジックはるかに小さいJSの同じボリュームよりも。
  • 高速でロードします。
    小型、実装を説明する必要はありません。
  • 少数の互換性の問題。
    WebAssembly良いいくつかの変更後に発症。インタフェース仕様JSとWebAssemblyブリッジを生じる可能性があるローカルの互換性の問題。

それはなぜ速いのJavaScriptよりもですか?

まず、JavaScriptを実行するために費やされる時間は、次のタスクがあります。

  1. 解析:コード→ソースコードインタプリタが費やした時間を実行することができます。
  2. コンパイル+最適化:ベースラインコンパイラと過ごしたコンパイラ最適化時間(PS:いくつかの最適化コンパイラ実行しているメインスレッドではありません、それが含まれていません)
  3. 再最適化:JITは、最適化された仮説の誤りを見つけ、費やした時間コードの最適化を破棄します。時間の重量の最適化を含め、放棄し、ベースライン時コンパイラに戻りました。
  4. タイムコード実行:実行
  5. ガベージコレクション:ガベージコレクション、時間のメモリをクリーンアップ
    他の人がコンパイルされている間、いくつかの他のコードは、実行されている場合、これらのタスクは、このような継続的な解決法として、クロスによって行われます。

これらの段階は、順序に従って、コードの一部が相、ステージ3におけるいくつか月、等であってもよく、そこではありません。この法律はまた、理由はそれが改善されているこの、JS効率の、JITをもたらしたものです。
ない抽象構文木としてJSコードのようにもWebAssembly中間コード自体は、その後、変換する分解されます。コードの先頭が最適化コンパイルする前に、あなたはタイプを知っている必要はありません。
そして、JITはコードの一部は、Google Chromeで素早く実行することができますが、他のブラウザではないので、高速ではなく、WebAssemblyこの時点では、最適化プロセスを経験してきた理由である、異なるコンパイラに異なる最適化プロセスを行います、あなたは、この最適化時間を省略することができます。ガベージコレクションでは、WebAssemblyが書き込みコードの開発者が手動で回復できるように設計されて、ブラウザが自動的にデフォルトによって回収されているので、時には実際には、チェックする必要はありません。

WebAssembly高水準言語にコンパイルすることができます

現在WebAssembly高水準言語にコンパイルすることができます:

  • AssemblyScript
    文法と一貫性の活字体。
  • C \ C ++
    公式推奨される方法。

  • 文法的複雑さ。
  • Kotlinの
    構文やJava、同様のJS。
  • Golang:
    構文は単純です。WebAssemblyについてはまだ正式に段階的にリリースされていません。

WebAssemblyの展望

要約すると、WebAssemblyそれはシーンのために理想的であるコンピューティングの多くを必要とします。

  • ブラウザでオーディオとビデオを処理します。
  • WebAssemblyリライトとDOM diffは、パフォーマンスを向上させることができます。アプリケーションのパフォーマンスのRNを向上させることができます。
  • 大規模な3Dウェブゲームは(サギエンジンが使用WebAssemblyを模索し始めています)。

エピローグ

この結論は、私はあなたに感謝し、研究や参考のために、オンラインと書かれた記事や情報の数を統合しています。

おすすめ

転載: www.cnblogs.com/rimochiko/p/12640975.html