@@ -2,6 +2,7 @@ const assert = require('assert');
22const { serializeError } = require ( 'serialize-error' ) ;
33const { Logger } = require ( './logger' ) ;
44const TimeKeeper = require ( './timekeeper' ) ;
5+ const { hrtime } = require ( 'process' ) ;
56
67class Monitor {
78 constructor ( {
@@ -103,12 +104,12 @@ class Monitor {
103104 * The most basic timer.
104105 */
105106 timer ( key , funcOrPromise ) {
106- const start = process . hrtime ( ) ;
107- const done = ( x ) => {
108- const d = process . hrtime ( start ) ;
107+ const start = hrtime . bigint ( ) ;
108+ const done = ( ) => {
109+ const end = hrtime . bigint ( ) ;
109110 this . log . basicTimer ( {
110111 key,
111- duration : d [ 0 ] * 1000 + d [ 1 ] / 1000000 ,
112+ duration : Number ( end - start ) / 1e6 , // in ms
112113 } ) ;
113114 } ;
114115 if ( funcOrPromise instanceof Function ) {
@@ -131,19 +132,19 @@ class Monitor {
131132 */
132133 timedHandler ( name , handler ) {
133134 return async ( message ) => {
134- const start = process . hrtime ( ) ;
135+ const start = hrtime . bigint ( ) ;
135136 let success = 'success' ;
136137 try {
137138 await handler ( message ) ;
138139 } catch ( e ) {
139140 success = 'error' ;
140141 throw e ;
141142 } finally {
142- const d = process . hrtime ( start ) ;
143+ const end = hrtime . bigint ( ) ;
143144 this . log . handlerTimer ( {
144145 name,
145146 status : success ,
146- duration : d [ 0 ] * 1000 + d [ 1 ] / 1000000 ,
147+ duration : Number ( end - start ) / 1e6 , // in ms
147148 } ) ;
148149 }
149150 } ;
@@ -183,7 +184,7 @@ class Monitor {
183184 */
184185 async oneShot ( name , fn ) {
185186 let exitStatus = 0 ;
186- const start = process . hrtime ( ) ;
187+ const start = hrtime . bigint ( ) ;
187188 try {
188189 assert . equal ( typeof name , 'string' ) ;
189190 assert . equal ( typeof fn , 'function' ) ;
@@ -193,10 +194,10 @@ class Monitor {
193194 this . reportError ( err ) ;
194195 exitStatus = 1 ;
195196 } finally {
196- const d = process . hrtime ( start ) ;
197+ const end = hrtime . bigint ( ) ;
197198 this . log . periodic ( {
198199 name,
199- duration : d [ 0 ] * 1000 + d [ 1 ] / 1000000 ,
200+ duration : Number ( end - start ) / 1e6 , // in ms
200201 status : exitStatus ? 'exception' : 'success' ,
201202 } , { level : exitStatus ? 'err' : 'notice' } ) ;
202203 if ( ! this . fake || this . fake . allowExit ) {
0 commit comments