Difference between declaring variables before or in loop?

前端 未结 25 2464
长发绾君心
长发绾君心 2020-11-22 02:37

I have always wondered if, in general, declaring a throw-away variable before a loop, as opposed to repeatedly inside the loop, makes any (performance) difference? A (q

25条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-22 03:32

    I tested for JS with Node 4.0.0 if anyone is interested. Declaring outside the loop resulted in a ~.5 ms performance improvement on average over 1000 trials with 100 million loop iterations per trial. So I'm gonna say go ahead and write it in the most readable / maintainable way which is B, imo. I would put my code in a fiddle, but I used the performance-now Node module. Here's the code:

    var now = require("../node_modules/performance-now")
    
    // declare vars inside loop
    function varInside(){
        for(var i = 0; i < 100000000; i++){
            var temp = i;
            var temp2 = i + 1;
            var temp3 = i + 2;
        }
    }
    
    // declare vars outside loop
    function varOutside(){
        var temp;
        var temp2;
        var temp3;
        for(var i = 0; i < 100000000; i++){
            temp = i
            temp2 = i + 1
            temp3 = i + 2
        }
    }
    
    // for computing average execution times
    var insideAvg = 0;
    var outsideAvg = 0;
    
    // run varInside a million times and average execution times
    for(var i = 0; i < 1000; i++){
        var start = now()
        varInside()
        var end = now()
        insideAvg = (insideAvg + (end-start)) / 2
    }
    
    // run varOutside a million times and average execution times
    for(var i = 0; i < 1000; i++){
        var start = now()
        varOutside()
        var end = now()
        outsideAvg = (outsideAvg + (end-start)) / 2
    }
    
    console.log('declared inside loop', insideAvg)
    console.log('declared outside loop', outsideAvg)
    

提交回复
热议问题