Я изучаю, как работает setImmediate (), и натолкнулся на странную причину, по которой мне не удалось найти техническое объяснение.
Код действительно прост:
setImmediate(function(){
console.log("third", process.hrtime() );
});
console.log("first", process.hrtime() );
console.log("second", process.hrtime() );
НеважноСколько раз я запускаю этот кусок кода, общий результат всегда один и тот же, а именно:
Время последовательного кода (между «первым» и «вторым» отпечатками) выглядит какзаймет в 3 раза больше времени между «вторым» и «третьим» отпечатком.
Позвольте мне привести 3 примера выходных данных, чтобы проиллюстрировать это:
Пример 1
C:\>node tick.js
first [ 24684, 930636615 ]
second [ 24684, 933914009 ]
third [ 24684, 935172006 ]
с первого на второе занимает 0,0033 с
с второго на третье занимает 0,0012 с (= в 3 раза быстрее)
Пример2
C:\>node tick.js
first [ 24706, 107198319 ]
second [ 24706, 110517238 ]
third [ 24706, 111784622 ]
с первого по секунду занимает 0,0034 с
с второго по третий занимает 0,0012 с
Пример 3
C:\>node tick.js
first [ 24707, 952826072 ]
second [ 24707, 956081565 ]
third [ 24707, 957319084 ]
с первого на второе занимает 0,0032 с
с второго на третье занимает 0,0013 с
Таким образом?
РассмотримУчитывая тот факт, что setImmediate происходит в следующем цикле событий, у кого-нибудь есть идея, почему 2 последовательных строки кода («первая и вторая») занимают в 3 раза больше , чем строки кода («вторая и третья»)?"), которые разделяются на разные циклы событий через setImmediate ()?