Ben ASM nasıl çalıştığını tam olarak anlamaya çalışıyorum ve. Firefox asm.js profili kullanarak daha hızlı olması görünmüyor, henüz içinde tekmelediğinde Krom
Ben asm.js web sitesinden küçük bir işlevi aldı . Ben modül desenini kullanarak sarın: bir kez asm için, aynı sözdizimi ile ancak "asm" ek açıklama olmadan, ve bir kez vanilya-javascript gibi.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);
};
}())
Ben küçük jsperf yarattı:
jsperf kodu
http://jsperf.com/asm-simple/7
performansının altında Tartışma dizisinden ipuçları içeren, yukarıdan biraz farklıdır firefox 22 asm ile en yavaş olduğunu gösteriyor -syntax ("asm kullan" açıklamasının eklenmesiyle veya olmadan) ve asm-modunda krom en hızlıdır.
Benim sorum şu: Bu nasıl mümkün olabilir? Firefox'un asm modunda en hızlı olmasını beklerdim. Chrome için bir fark görmeyi beklemezdim. Yanlış bir asm sözdizimi kullanıyor muyum? Neyi kaçırıyorum?
Herhangi bir öneri veya açıklama büyük beğeni topluyor. Teşekkürler,
Bilmiyorum şey ASM ne olursa olsun, ama neden Firefox'un en hızlı olacağını düşünüyorsunuz? Farklı JavaScript motorlarını kullandıklarını biliyorsunuz değil mi? Tüm tarayıcılar – Ian
performansta farklılık kurulumunda kez işlevini çağırın (derleme tetiklemek için) ve daha sonra sonuç – SheetJS
@Ian bkz: OP yapar farkı görmek için her tarayıcıda ASM ve non-ASM kodu karşılaştırmaktadır. Chrome, ASM optimizasyonlarını AFAIK desteklemiyor. Bu nedenle, açıklama, bir fark yaratmamalı, FireFox bunu desteklemelidir. OP, FF'yi Chrome ile karşılaştırmıyor. –