gpt4 book ai didi

javascript - 为什么立方体比正方形快

转载 作者:IT王子 更新时间:2023-10-29 03:06:25 24 4
gpt4 key购买 nike

我是这样写的:

  var max = 0xffffff * 4;
var step = 1 / max;
function cube() {
var result = 0.;
for (var x = 0.; x < 1; x += step) {
result += x * x * x;
}
return result;
}
function mul() {
var result = 0.;
for (var x = 0.; x < 1; x += step) {
result += x * x;
}
return result;
}
function go() {
var r = '';
r += cube() + ' \n';
r += mul() + ' \n';
alert(r);
}

并在 Chrome 分析器中查看结果:

mul: 106ms 
cube: 87ms

这怎么可能?

最佳答案

您的断言完全错误。 cube 并不比 mul 快,你的例子并没有证明这一点。

事实上,发生的情况是 Javascript 内部执行比实际乘法花费更多时间,导致 mul 和 cube 的时间非常相似。我循环运行了这两个函数,只是为了增加差异,分析器显示 20219 与 20197,这是微不足道的。顺便说一句,立方体是这里“较慢”的一个。

此外,这种分析方法不起作用,因为 Chrome 和 Firefox 在循环内进行数学计算之前都进行了大量优化。您认为循环很可能会使用缓存值,甚至是优化知道会返回相同结果的数学函数。

这是我使用的代码:

<script>
var max = 0xffffff * 4;
var step = 1 / max;
function cube() {
var result = 0.;
for (var x = 0.; x < 1; x += step) {
result += x * x * x;
}
return result;
}
function mul() {
var result = 0.;
for (var x = 0.; x < 1; x += step) {
result += x * x;
}
return result;
}
function go() {
var s='';
for (var i=0; i<100; i++) {
s+=cube();
s+=mul();
}
console.log(s);
}
go();
</script>

此外,仅供引用,请在此处观看视频:https://fosdem.org/2016/schedule/event/mozilla_benchmarking_javascript_tips/ Firefox 人员解释了为什么微基准测试实际上意义不大。

关于javascript - 为什么立方体比正方形快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36178051/

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