Node.js оптимизация с константами - PullRequest
2 голосов
/ 20 июня 2020

Сравните:

// 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 Ответ

1 голос
/ 20 июня 2020

Вы можете легко проверить это так:

    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 достаточно умен, чтобы произвести дополнительные вычисления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...