我正在从此处的文档中测试一些 asm.js 编译。基于他们的例子,我在 Firefox 22 中尝试了这个:
function DiagModule(stdlib) {
var sqrt = stdlib.Math.sqrt;
function square(x) {
x = +x;
return +(x*x);
}
function diag(x, y) {
x = +x;
y = +y;
return +sqrt(square(x) + square(y));
}
function many() {
for (var i=0; i<2000000; i=(i+1)|0) {
diag(+3000000-i,i);
}
}
return { many:many };
}
var fast = DiagModule(window);
function testit() {
console.time('test');
console.log('diag test...');
fast.many();
console.timeEnd('test');
}
奇怪的是,当我在“function DiagModule”之后使用“use js”启用编译时,性能并没有提高。在早期的测试中,它甚至运行得更慢。是否必须完全转换,使用堆而不是变量,才能注意到速度差异?或者是否有任何文档说明编译 asm.js 的好处?