Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/perf_hooks.js')
-rw-r--r--lib/perf_hooks.js36
1 files changed, 34 insertions, 2 deletions
diff --git a/lib/perf_hooks.js b/lib/perf_hooks.js
index 2ce0d29464a..683dec3a90a 100644
--- a/lib/perf_hooks.js
+++ b/lib/perf_hooks.js
@@ -25,7 +25,8 @@ const {
timerify,
constants,
installGarbageCollectionTracking,
- removeGarbageCollectionTracking
+ removeGarbageCollectionTracking,
+ loopIdleTime,
} = internalBinding('performance');
const {
@@ -205,6 +206,10 @@ class PerformanceNodeTiming extends PerformanceEntry {
return getMilestoneTimestamp(NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE);
}
+ get idleTime() {
+ return loopIdleTime();
+ }
+
[kInspect]() {
return {
name: 'node',
@@ -448,10 +453,37 @@ class Performance {
return ret;
}
+ eventLoopUtilization(util1, util2) {
+ const ls = nodeTiming.loopStart;
+
+ if (ls <= 0) {
+ return { idle: 0, active: 0, utilization: 0 };
+ }
+
+ if (util2) {
+ const idle = util1.idle - util2.idle;
+ const active = util1.active - util2.active;
+ return { idle, active, utilization: active / (idle + active) };
+ }
+
+ const idle = nodeTiming.idleTime;
+ const active = performance.now() - ls - idle;
+
+ if (!util1) {
+ return { idle, active, utilization: active / (idle + active) };
+ }
+
+ const idle_delta = idle - util1.idle;
+ const active_delta = active - util1.active;
+ const utilization = active_delta / (idle_delta + active_delta);
+ return { idle: idle_delta, active: active_delta, utilization };
+ }
+
[kInspect]() {
return {
nodeTiming: this.nodeTiming,
- timeOrigin: this.timeOrigin
+ timeOrigin: this.timeOrigin,
+ idleTime: this.idleTime,
};
}
}