2013-05-13 8 views
10

Emscriptenは、JSコードが手で書き込んだコードよりもC/C++より高速なコードを生成する可能性があります。つまり、C/C++で新しいコードを記述し、Web上でコンパイルする必要があります。asm.jsが通常のJSコードより高速な場合、なぜJSで新しいコードを書くべきですか?

私はEmscripten FAQを読んでいます。「是非、新しいJavaScriptコードを書いてください」と、なぜですか?

+2

実際にJSとasm.jsの違いを感じることができない限り、C++に触れないでください。 – DCoder

+0

JavaScriptは、ほとんどの場合、実際に何か違いを生むほど十分に「行う」ことはほとんどありません。確かに、いくつかの時間がかかっているjavascriptがあり、実行には時間がかかりすぎる、ひどく書かれたjavascriptがあります。しかし、それをコンパイルしても後者は実際には解決されません。 –

+0

@allfoxここでは2つのものをミックスしています。 1. C/C++からJavascriptへのクロスコンパイルがより高速になることがあります。2. Javascriptでasm.jsを使用することは、ほとんどの場合、より高速になります。しかし前者と後者について知りたいですか? – abergmeier

答えて

12

asm.jsはJavascript-esqueコードをより速く実行する方法ではありません。これは、すでにマシンコードの抽象化レベルに下げられているコードを実行するより速い方法です。

  • あなたはそれがJSだかのようにJSの開発者は、あなたがほぼ同じ速C++があまりにも他の方法であることと、欠陥のある可能性としてはありません非常に醜いコードで終わる、C++を書いてみましょう場合:あなたは大幅に利益を過大評価しているようです。
  • DOM操作やネットワーク遅延などの潜在的なボトルネックは、コードの実行速度にはまったく影響しません。
  • 多くのプログラムでは、より高速な言語実装からのスピードアップは、高度な最適化のスピードアップに比べて桁外れです。言い換えれば、仕事をやや速くするのはいいですが、それをやり遂げるのはもっと早いのです。このルートを行く

が同様に重要な欠点があります。

  • をあなたは言語で(バグ含む)捨て作業コード、およびそれを再記述する必要があなたのチームのほとんどは」勝ちましたもしそうであれば、ほぼ同じことを知っているでしょう。
  • 今のところ、技術は未だに未だにあります。あなたは、あなたの会社、または重要な製品でさえそれに賭けることはありません。成功しても、JavaScriptに比べて常にニッチな技術になります。これはプロの仕事のためにそれを失格させませんが、になります。
  • IIUCでは、JSができるだけ多くのことを直接行うことはできません。asm.jsモジュールに明示的に提供されているJS関数を呼び出すことができます。つまり、Javascriptに少なくとも1つのグルーコードが必要です(前述のように、ボトルネックが含まれている場合は、実際には何も得られませんでした)。私が使用するasm.jsから十分を得ることを期待したコードの

唯一の種類は以下のとおりです。すでにJavaScriptで書かれていません

  • 既存コード。ほとんどの移植の面倒を保存する唯一の理由のために。
  • ブラウザとのやりとりが頻繁に行われません。 (考えてください:どのくらいの頻度でこれを行いますか?また、C/C++で記述してJSで配線したいのですか?)
  • 本質的にはレベル抽象化asm.jsは、機械コードに依存しない命令を発行するコンパイラなどをサポートします。
+1

私は勇敢に、そこの3Dデモコードのどれかでjsを探索しようと勧めます。全く理解できない。 – meawoppl

関連する問題