當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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]])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。