gpt4 book ai didi

JavaScript 性能 - 除法还是乘法?/vs *

转载 作者:数据小太阳 更新时间:2023-10-29 04:53:13 25 4
gpt4 key购买 nike

我正在编写一个非常依赖 JavaScript 的应用程序(几乎全是 JavaScript),它确实有大量数据需要迭代 (JSON),因此它必须执行特定的算术任务。性能是应用程序的主要考虑因素。我已经引入了 Webworkers 来帮助解决这个问题,并且我试图不依赖于 jQuery 等库提供的方法(例如 .each() 而不是 for 循环)。无论如何,这是一个简单的问题...

在应用程序中,我必须应用价格变化,这将涉及许多涉及除法的数字过程。请记住,这会发生成千上万次,对我来说,始终通过乘法或乘法和除法的混合来应用变化会更好吗?例如,我可以通过乘以 0.5 或除以 2 来应用 50% 的折扣。

我总是被告知除法比乘法慢,但我没有真正的证据证明这一点……在我开始基准测试和运行测试之前有人对此有意见吗?

最佳答案

虽然这两种运算都非常快,但乘法的性能略好于除法。在我的测试中(如下),我注意到 Chrome 上有 14% 的差异,IE 9 上有 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);

关于JavaScript 性能 - 除法还是乘法?/vs *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10535605/

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