尽管这两种操作都非常快,但乘法的性能略好于除法。在我的测试中(如下),我注意到 Chrome 和 IE 9 有 14% 的差异和 10% 的差异。如果您必须从浏览器中压缩性能,您可以在进入循环之前将除法器转换为乘法器,但我没有认为将可读性妥协到如此微小的改进是一个好主意。
var cnt = 500000;
var rls = []
var ags = [[2,1], [4,2], [7,3], [4e0,1], [32e0,2], [37e0,3], [-37e7,(7e3/3e-4)]];
var fns = [
{name: "fn_mul", fn: (function(x, y) { return x * y; })},
{name: "fn_div", fn: (function(x, y) { return x / y; })}
]
// setup ---------------------------------------
for(var iag=0; iag<ags.length; iag++) {
if(Object.prototype.toString.call(ags[iag]) !== "[object Array]") {
ags[iag] = [ags[iag]]
};
}
// run ------------------------------------------
for(var ifn=0; ifn<fns.length; ifn++) {
var fn = fns[ifn].fn;
var ts = (new Date()).valueOf();
for(var iag=0; iag<ags.length; iag++) {
var ag = ags[iag];
for(var icn=0; icn<cnt; icn++) { fn.apply(this, ag); }
}
rls.push({"name": fns[ifn].name, "ts": (new Date()).valueOf() - ts});
}
dump(rls);