Я пытаюсь понять, как именно работает ASM и когда он умирает.Firefox не кажется, быстрее, используя профиль asm.js, пока Хром
Я взял небольшую функцию с сайта asm.js , Я обертываю его с помощью шаблона модуля: один раз для asm, один раз с тем же синтаксисом, но без аннотации «use 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);
};
}())
Я создал небольшой JSPerf: код JSPerf немного отличается от указанных выше, включая советы от обсуждения нити ниже http://jsperf.com/asm-simple/7
The производительности показывает, что светлячок 22 является самым медленным с ассемблером -syntax (с аннотацией «use asm» или без него), а хром быстрее в asm-режиме.
Так что мой вопрос: как это возможно? Я ожидаю, что Firefox будет самым быстрым в режиме asm. Я бы не ожидал увидеть разницу для Chrome. Я использую неправильный синтаксис asm? Что мне не хватает?
Любые рекомендации или разъяснения приветствуются. Спасибо,
Я ничего не знаю о любой ASM, но почему вы думаете, что Firefox будет быстрее? Вы знаете, что они используют разные движки JavaScript, не так ли? Все браузеры отличаются производительностью – Ian
Вызовите функцию один раз в настройке (для запуска компиляции), а затем увидите результат – SheetJS
@Ian: OP сравнивает ASM и код без ASM в каждом браузере, чтобы увидеть разницу, которую он делает. Chrome не поддерживает ASM-оптимизации AFAIK, поэтому аннотация не должна иметь никакого значения, в то время как FireFox ее поддерживает. OP не сравнивает FF с Chrome. –