+
+ private beginTaskPerformance (): TaskPerformance {
+ this.checkStatistics()
+ return {
+ timestamp: performance.now(),
+ ...(this.statistics.elu && { elu: performance.eventLoopUtilization() })
+ }
+ }
+
+ private endTaskPerformance (
+ taskPerformance: TaskPerformance
+ ): TaskPerformance {
+ this.checkStatistics()
+ return {
+ ...taskPerformance,
+ ...(this.statistics.runTime && {
+ runTime: performance.now() - taskPerformance.timestamp
+ }),
+ ...(this.statistics.elu && {
+ elu: performance.eventLoopUtilization(taskPerformance.elu)
+ })
+ }
+ }
+
+ private checkStatistics (): void {
+ if (this.statistics == null) {
+ throw new Error('Performance statistics computation requirements not set')
+ }
+ }