gpt4 book ai didi

javascript - 了解 JavaScript 性能差异

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

http://jsfiddle.net/6L2pJ/

var test = function () {
var i,
a,
startTime;

startTime = new Date().getTime();

for (i = 0; i < 3000000000; i = i + 1) {
a = i % 5;
}
console.log(a); //prevent dead code eliminiation
return new Date().getTime() - startTime;
};

var results = [];

for (var i = 0; i < 5; i = i + 1) {
results.push(test());
}

for (var i = 0; i < results.length; i = i + 1) {
console.log('Time needed: ' + results[i] + 'ms');
}

结果:

第一次执行:

Time needed: 13654ms 
Time needed: 32192ms
Time needed: 33167ms
Time needed: 33587ms
Time needed: 33630ms

第二次执行:

Time needed: 14004ms 
Time needed: 32965ms
Time needed: 33705ms
Time needed: 33923ms
Time needed: 33727ms

第三次执行:

Time needed: 13124ms 
Time needed: 30706ms
Time needed: 31555ms
Time needed: 32275ms
Time needed: 32752ms

从第一行跳到第二行是什么原因?

我的设置:

  • Ubuntu 13.10

  • Google Chrome 36.0.1985.125(Mozilla Firefox 30.0 给出相同类型的结果)

编辑:

我修改了代码,使其在语义上保持不变,但内联了所有内容。有趣的是,它不仅显着加快了执行速度,而且还在很大程度上消除了我上面描述的现象。不过,轻微的跳跃仍然很明显。

修改后的代码:

http://jsfiddle.net/cay69/

结果:

第一次执行:

Time needed: 13786ms 
Time needed: 14402ms
Time needed: 14261ms
Time needed: 14355ms
Time needed: 14444ms

第二次执行:

Time needed: 13778ms 
Time needed: 14293ms
Time needed: 14236ms
Time needed: 14459ms
Time needed: 14728ms

第三次执行:

Time needed: 13639ms 
Time needed: 14375ms
Time needed: 13824ms
Time needed: 14125ms
Time needed: 14081ms

最佳答案

经过一些测试,我想我已经确定了可能导致差异的原因。 我认为一定与类型有关。

 var i,
a = 0,
startTime;

var a = 0 给我一个整体性能更快的统一结果,另一方面 var a = "0" 给我的结果和你的一样:第一个要快一些。

我不知道为什么会这样。

关于javascript - 了解 JavaScript 性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25108941/

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