X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fperformance%2FPerformanceStatistics.ts;h=558fb8caba2b13b9d9ff2caeaf69a9117283c6aa;hb=840ca85d7c40a6ee6f3a85a50e68dbea2f90acb8;hp=265cb6c963918b1a3970a95e5822742f3202c0d4;hpb=2f2e04446bb16844a71e8752ae29bff584267029;p=e-mobility-charging-stations-simulator.git diff --git a/src/performance/PerformanceStatistics.ts b/src/performance/PerformanceStatistics.ts index 265cb6c9..558fb8ca 100644 --- a/src/performance/PerformanceStatistics.ts +++ b/src/performance/PerformanceStatistics.ts @@ -5,6 +5,7 @@ import type { URL } from 'node:url' import { parentPort } from 'node:worker_threads' import { secondsToMilliseconds } from 'date-fns' +import { CircularBuffer } from 'mnemonist' import { is, mean, median } from 'rambda' import { BaseError } from '../exception/index.js' @@ -22,7 +23,6 @@ import { } from '../types/index.js' import { buildPerformanceStatisticsMessage, - CircularArray, Configuration, Constants, extractTimeSeriesValues, @@ -277,16 +277,22 @@ export class PerformanceStatistics { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.statistics.statisticsData.get(entry.name)!.totalTimeMeasurement = (this.statistics.statisticsData.get(entry.name)?.totalTimeMeasurement ?? 0) + entry.duration - this.statistics.statisticsData.get(entry.name)?.measurementTimeSeries instanceof CircularArray - ? this.statistics.statisticsData - .get(entry.name) - ?.measurementTimeSeries?.push({ timestamp: entry.startTime, value: entry.duration }) - : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - (this.statistics.statisticsData.get(entry.name)!.measurementTimeSeries = - new CircularArray(Constants.DEFAULT_CIRCULAR_BUFFER_CAPACITY, { - timestamp: entry.startTime, - value: entry.duration - })) + if ( + !( + this.statistics.statisticsData.get(entry.name)?.measurementTimeSeries instanceof + CircularBuffer + ) + ) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.statistics.statisticsData.get(entry.name)!.measurementTimeSeries = + new CircularBuffer( + Array, + Constants.DEFAULT_CIRCULAR_BUFFER_CAPACITY + ) + } + this.statistics.statisticsData + .get(entry.name) + ?.measurementTimeSeries?.push({ timestamp: entry.startTime, value: entry.duration }) const timeMeasurementValues = extractTimeSeriesValues( // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.statistics.statisticsData.get(entry.name)!.measurementTimeSeries!