当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js performance.eventLoopUtilization([utilization1[, utilization2]])用法及代码示例


performance.eventLoopUtilization([utilization1[, utilization2]])

添加于:v14.10.0、v12.19.0

参数

eventLoopUtilization() 方法返回一个对象,该对象包含事件循环空闲和活动的累积持续时间作为高分辨率毫秒计时器。 utilization 值是计算的事件循环利用率 (ELU)。

如果引导尚未在主线程上完成,则属性的值为 0 。 ELU 在Worker threads 上立即可用,因为引导发生在事件循环中。

utilization1utilization2 都是可选参数。

如果通过utilization1,则计算并返回当前调用的activeidle 时间之间的增量,以及相应的utilization 值(类似于 process.hrtime() )。

如果 utilization1utilization2 都被传递,则计算两个参数之间的增量。这是一个方便的选项,因为与 process.hrtime() 不同,计算 ELU 比单次减法更复杂。

ELU 类似于 CPU 使用率,只是它只测量事件循环统计数据而不是 CPU 使用率。它表示事件循环在事件循环的事件提供程序之外花费的时间百分比(例如 epoll_wait )。不考虑其他 CPU 空闲时间。以下是一个大部分空闲进程如何具有高 ELU 的示例。

'use strict';
const { eventLoopUtilization } = require('node:perf_hooks').performance;
const { spawnSync } = require('node:child_process');

setImmediate(() => {
  const elu = eventLoopUtilization();
  spawnSync('sleep', ['5']);
  console.log(eventLoopUtilization(elu).utilization);
});

尽管运行此脚本时 CPU 大部分时间处于空闲状态,但 utilization 的值是 1 。这是因为对 child_process.spawnSync() 的调用会阻止事件循环继续进行。

传入用户定义的对象而不是先前调用 eventLoopUtilization() 的结果将导致未定义的行为。不保证返回值反映事件循环的任何正确状态。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 performance.eventLoopUtilization([utilization1[, utilization2]])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。