perf_hooks.monitorEventLoopDelay([options])


此属性是 Node.js 的扩展。在 Web 浏览器中不可用。

🌐 This property is an extension by Node.js. It is not available in Web browsers.

创建一个 IntervalHistogram 对象,用于随时间采样并报告事件循环延迟。延迟将以纳秒为单位报告。

🌐 Creates an IntervalHistogram object that samples and reports the event loop delay over time. The delays will be reported in nanoseconds.

使用定时器检测事件循环的近似延迟之所以有效,是因为定时器的执行与 libuv 事件循环的生命周期紧密相关。也就是说,循环中的延迟会导致定时器执行的延迟,而这些延迟正是该 API 旨在检测的对象。

🌐 Using a timer to detect approximate event loop delay works because the execution of timers is tied specifically to the lifecycle of the libuv event loop. That is, a delay in the loop will cause a delay in the execution of the timer, and those delays are specifically what this API is intended to detect.

const { monitorEventLoopDelay } = require('node:perf_hooks');
const h = monitorEventLoopDelay({ resolution: 20 });
h.enable();
// Do something.
h.disable();
console.log(h.min);
console.log(h.max);
console.log(h.mean);
console.log(h.stddev);
console.log(h.percentiles);
console.log(h.percentile(50));
console.log(h.percentile(99));