です。Firefoxが速くasm.jsプロファイルを使用していないようです、まだChromeは
私はasm.jsウェブサイトから小さな関数を取りました。私はモジュールパターンを使用してラップします:一度asm、一度同じ構文で、しかし "asmを使用する"注釈なしで、そして一度vanilla-javascriptのように。
var add_asm = (function MyAOTMod(stdlib, foreign, heap) {
"use asm";
var sqrt = stdlib.Math.sqrt;
function square(x) {
x = +x;
return +(x * x);
}
return function(x, y) {
x = +x; // x has type double
y = +y; // y has type double
return +sqrt(square(x) + square(y));
};
}(window));
var add_reg_asmstyle = (function MyAsmLikeRegularMod() {
function square(x) {
x = +x;
return +(x * x);
}
return function(x, y) {
x = +x; // x has type double
y = +y; // y has type double
return +Math.sqrt(square(x) + square(y));
};
}());
var add_reg = (function MyStrictProfile() {
"use strict";
return function(x, y) {
return Math.sqrt(x * x + y * y);
};
}())
Iが小さいjsperfを作成した: jsperfコードが http://jsperf.com/asm-simple/7
以下ディスカッションスレッドから上記組み込む先端からわずかに異なる性能は、Firefox 22はASMで最も遅いことを示しています-syntax( "asmの使用"の有無にかかわらず)、chromeはasm-modeで最速です。
私の質問です:これはどのように可能ですか?私はFirefoxがASMモードで最速になると期待しています。私はChromeの違いを見るとは思っていません。間違ったasm構文を使用しますか?私は何が欠けていますか?
アドバイスや説明をいただければ幸いです。ありがとう、
私は何も知りませんどんなASMであっても、Firefoxはなぜ最速になると思いますか?異なるJavaScriptエンジンを使用していることはご存じでしょうか?すべてのブラウザのパフォーマンスは異なります – Ian
セットアップで関数を呼び出して(コンパイルをトリガーするため)、 – SheetJS
@Ian:OPは各ブラウザのASMコードと非ASMコードを比較して、その違いを確認します。 ChromeはASMの最適化AFAIKをサポートしていないため、アノテーションは違いをもたらすべきではありませんが、FireFoxはサポートしています。 OPはFFとChromeを比較していません。 –