提问者:小点点

用常数优化Node.js


请比较:

// Version 1
    const oneHour = 60 * 60
    function checkTime(timePast) {
        if (timePast<7 * 24 * oneHour) {
            // Do something
        }
    }

// Version 2
    const oneHour = 60 * 60
    const oneWeek = 7 * 24 * oneHour
    function checkTime(timePast) {
        if (timePast<oneWeek) {
            // Do something
        }
    }

在对checkTime()的数百万次调用过程中,版本2是否比版本1更快,或者Node.js是否足够聪明,只进行一次版本1中的额外计算?


共1个答案

匿名用户

您可以很容易地像这样检查它:

    const oneHour = 60 * 60
    const oneWeek = 7 * 24 * oneHour;
    const randomData = generateArray();
    
    function generateArray () {
        let arr = [];

        for(i = 0; i < 10000000; i++) {
            arr.push(Math.floor(Math.random() * 10))
        }

        return arr;
    }

    function checkTime1(timePast) {
        if (timePast<7 * 24 * oneHour) {
            Math.random()
        }
    }

    function checkTime2(timePast) {
        if (timePast<oneWeek) {
            Math.random()
        }
    }

    console.time('checkTime1');
    randomData.forEach(i => checkTime1(i))
    console.timeEnd('checkTime1');

    console.time('checkTime2');
    randomData.forEach(i => checkTime2(i))
    console.timeEnd('checkTime2');

经过几次检查更改“checktime2”和“checktime1”的顺序,以确保结果有效。 看来Node.js足够聪明,可以进行额外的计算。