gpt4 book ai didi

javascript - 使用 asm.js 配置文件的 Firefox 似乎并不更快,但 Chrome 是

转载 作者:IT王子 更新时间:2023-10-29 03:20:52 26 4
gpt4 key购买 nike

我正在尝试了解 ASM 的具体工作原理以及它何时启动。

我从 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);
};
}())

我创建了一个小的 jsperf:jsperf 代码与上面的代码略有不同,合并了下面讨论线程中的提示 http://jsperf.com/asm-simple/7

性能显示 firefox 22 在使用 asm 语法(有或没有“使用 asm”注释)时最慢,而 chrome 在 asm 模式下最快。

所以我的问题是:这怎么可能?我希望 Firefox 在 asm 模式下最快。我不希望看到 Chrome 有什么不同。我使用了错误的 asm 语法吗?我错过了什么?

非常感谢任何建议或澄清。谢谢,

最佳答案

当您在 Firefox 中运行代码时,您经常会看到 asm.js 调用的速度大幅下降,这很可能是由于重复编译(在控制台中可见)或 js-to-asm 调用的成本造成的. Luke Wagner进一步加强了这一假设,asm.js 的实现者:

one performance fault that we already know trips up people trying to benchmark asm.js is that calling from non-asm.js into asm.js and vice versa is much slower than normal calls due to general-purpose enter/exit routines. We plan to fix this in the next few months but, in the meantime, for benchmarking purposes, try to keep the whole computation happening inside a single asm.js module, not calling in and out.

亲眼看看 - 看看 fiddle :http://jsperf.com/asm-simple/10

  • Firefox 26:在 asm-asm 情况下 22,600K ops/sec 与在 asm-js 情况下300(!)。
  • Chrome 28:18K 与 13K
  • IE11:所有测试都在 7.5K 左右,没有观察到大的差异,除了死代码消除,它闪耀的地方 ;)

关于javascript - 使用 asm.js 配置文件的 Firefox 似乎并不更快,但 Chrome 是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17951449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com