这是一个简单的循环,我正在尝试对性能进行基准测试。

var extremeLoop=function(n){
    var time=new Date()
    var t=0;
    for(var i=0;i<n;i++){
       t=1;
    }
    return (new Date())-time;
}


在Chrome中进行了测试:

extremeLoop(100000000)
305
extremeLoop(1000000000)
3075
extremeLoop(1500000000)
19690
extremeLoop(2000000000)
29448
extremeLoop(10000000000)
174129


我同意这并不重要,但是我想知道为什么会这样吗?

最佳答案

我的猜测是,当n大于最大32位整数值时,您最终会在循环增量/测试代码中执行更昂贵的操作。

或者,可能是当循环需要更长的时间才能运行时,由于整体系统负载等原因,系统更有可能暂停该过程。由于您是根据挂钟时间来衡量性能的,因此会影响结果。

关于javascript - 极限循环时的非线性性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21121994/

10-11 16:25