一个关于js优化的思考

关于函数变量以下两个例子哪个会更优化一点


var i = 0, len = 1000*1000*1000, x = 2, y = true, z ='3.2';

//demo0

var demo = function(a, b, c) {

    return a*b*c;   

};

console.time('demo0');

for (i = 0 ;i < len; i++) {

    demo(x, y ,z);

}

console.timeEnd('demo0'); 

//demo1

var demo = (function(a, b, c) {

    return a*b*c;   

}).bind(null, x, y ,z);

console.time('demo1');

for (i = 0 ;i < len; i++) {

    demo();

}

console.timeEnd('demo1'); 

//demo2

demo = function() {

    var a = x,

        b = y,

        c = z;

    return a*b*c;   

};

console.time('demo2');

for (i = 0 ;i < len; i++) {

    demo();

}

console.timeEnd('demo2');

这三个例子的区别在于变量。

实际上第三种最快。为什么呢?

我在nodejs里执行的结果

https://img4.mukewang.com/5c904fb40001b27401670043.jpg

在浏览器中执行的结构

https://img3.mukewang.com/5c904fb70001ec1d04420072.jpg

千巷猫影
浏览 337回答 2
2回答

qq_遁去的一_1

把len放大(最起码到万数量级),再运行代码,看结果。500次的运行偶然性太高了。

叮当猫咪

浏览器下执行 len = 100010001000 次数 (引用和内嵌 差不多)demo_0: 2446.34716796875msdemo_1: 2433.719970703125msdemo_2: 2428.6591796875msnode下执行
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript