Function of the first time call in node

I have the following code:

let startTime;
let stopTime;

const arr = [1, 2, 3, 8, 5, 0, 110, 4, 4, 16, 3, 8, 7, 56, 1, 2, 3, 8, 5, 0, 110, 16, 3, 8, 7, 56];
const sum = 63;

durationTime = (start, stop, desc) => {
    let duration = (stop - start);
    console.info('Duration' + ((desc !== undefined) ? '(' + desc + ')' : '') + ': ' + duration + 'ms');
};

findPair = (arr, sum) => {
    let result = [];

    const filterArr = arr.filter((number) => {
        return number <= sum;
    });

    filterArr.forEach((valueFirst, index) => {
        for (let i = index + 1; i < filterArr.length; i++) {
            const valueSecond = filterArr[i];
            const checkSum = valueFirst + valueSecond;
            if (sum === checkSum) {
                result.push([valueFirst, valueSecond]);
            }
        }
    });

    //console.info(result);
};

for (let i = 0; i < 5; i++) {
    startTime = new Date();
    findPair(arr, sum);
    stopTime = new Date();

    durationTime(startTime, stopTime);
}
Run codeHide result

When I run locally on nodejs (v8.9.3), the result in the console:

Duration (0): 4 ms

Duration (1): 0ms

Duration (2): 0ms

Duration (3): 0ms

Duration (4): 0ms

My question is: why does the first call to "findPair" take 4ms and other calls only 0ms?

+4
source share
2 answers

, JavaScript (Google V8) , . , , , , , . , .

, , , , , .

, V8 , , , :

V8 JavaScript

JavaScript: V8 + 5 ,

+1

, :

for (let i = 0; i < 5; i++) {
    console.time('timer '+i);
    findPair(arr, sum);
    console.timeEnd('timer ' + i);
}

...

, , , V8 () .

https://github.com/v8/v8/wiki/Design%20Elements#fast-property-access

0

Source: https://habr.com/ru/post/1690702/


All Articles