- this.statistics.statisticsData.get(entryName).countTimeMeasurement = this.statistics.statisticsData.get(entryName)?.countTimeMeasurement
- ? this.statistics.statisticsData.get(entryName).countTimeMeasurement + 1
- : 1;
- this.statistics.statisticsData.get(entryName).currentTimeMeasurement = entry.duration;
- this.statistics.statisticsData.get(entryName).minTimeMeasurement = this.statistics.statisticsData.get(entryName)?.minTimeMeasurement
- ? (this.statistics.statisticsData.get(entryName).minTimeMeasurement > entry.duration ? entry.duration : this.statistics.statisticsData.get(entryName).minTimeMeasurement)
- : entry.duration;
- this.statistics.statisticsData.get(entryName).maxTimeMeasurement = this.statistics.statisticsData.get(entryName)?.maxTimeMeasurement
- ? (this.statistics.statisticsData.get(entryName).maxTimeMeasurement < entry.duration ? entry.duration : this.statistics.statisticsData.get(entryName).maxTimeMeasurement)
- : entry.duration;
- this.statistics.statisticsData.get(entryName).totalTimeMeasurement = this.statistics.statisticsData.get(entryName)?.totalTimeMeasurement
- ? this.statistics.statisticsData.get(entryName).totalTimeMeasurement + entry.duration
- : entry.duration;
- this.statistics.statisticsData.get(entryName).avgTimeMeasurement = this.statistics.statisticsData.get(entryName).totalTimeMeasurement / this.statistics.statisticsData.get(entryName).countTimeMeasurement;
- Array.isArray(this.statistics.statisticsData.get(entryName).timeMeasurementSeries)
- ? this.statistics.statisticsData.get(entryName).timeMeasurementSeries.push({ timestamp: entry.startTime, value: entry.duration })
- : this.statistics.statisticsData.get(entryName).timeMeasurementSeries = new CircularArray<TimeSeries>(DEFAULT_CIRCULAR_ARRAY_SIZE, { timestamp: entry.startTime, value: entry.duration });
- this.statistics.statisticsData.get(entryName).medTimeMeasurement = this.median(this.extractTimeSeriesValues(this.statistics.statisticsData.get(entryName).timeMeasurementSeries));
- this.statistics.statisticsData.get(entryName).ninetyFiveThPercentileTimeMeasurement = this.percentile(this.extractTimeSeriesValues(this.statistics.statisticsData.get(entryName).timeMeasurementSeries), 95);
- this.statistics.statisticsData.get(entryName).stdDevTimeMeasurement = this.stdDeviation(this.extractTimeSeriesValues(this.statistics.statisticsData.get(entryName).timeMeasurementSeries));
- if (Configuration.getPerformanceStorage().enabled) {
- parentPort.postMessage({ id: ChargingStationWorkerMessageEvents.PERFORMANCE_STATISTICS, data: this.statistics });
+ this.statistics.statisticsData.get(entryName)!.timeMeasurementCount =
+ (this.statistics.statisticsData.get(entryName)?.timeMeasurementCount ?? 0) + 1;
+ this.statistics.statisticsData.get(entryName)!.currentTimeMeasurement = entry.duration;
+ this.statistics.statisticsData.get(entryName)!.minTimeMeasurement = Math.min(
+ entry.duration,
+ this.statistics.statisticsData.get(entryName)?.minTimeMeasurement ?? Infinity,
+ );
+ this.statistics.statisticsData.get(entryName)!.maxTimeMeasurement = Math.max(
+ entry.duration,
+ this.statistics.statisticsData.get(entryName)?.maxTimeMeasurement ?? -Infinity,
+ );
+ this.statistics.statisticsData.get(entryName)!.totalTimeMeasurement =
+ (this.statistics.statisticsData.get(entryName)?.totalTimeMeasurement ?? 0) + entry.duration;
+ this.statistics.statisticsData.get(entryName)!.avgTimeMeasurement =
+ this.statistics.statisticsData.get(entryName)!.totalTimeMeasurement! /
+ this.statistics.statisticsData.get(entryName)!.timeMeasurementCount!;
+ this.statistics.statisticsData.get(entryName)?.measurementTimeSeries instanceof CircularArray
+ ? this.statistics.statisticsData
+ .get(entryName)
+ ?.measurementTimeSeries?.push({ timestamp: entry.startTime, value: entry.duration })
+ : (this.statistics.statisticsData.get(entryName)!.measurementTimeSeries =
+ new CircularArray<TimestampedData>(Constants.DEFAULT_CIRCULAR_BUFFER_CAPACITY, {
+ timestamp: entry.startTime,
+ value: entry.duration,
+ }));
+ this.statistics.statisticsData.get(entryName)!.medTimeMeasurement = median(
+ extractTimeSeriesValues(
+ this.statistics.statisticsData.get(entryName)!.measurementTimeSeries as TimestampedData[],
+ ),
+ );
+ this.statistics.statisticsData.get(entryName)!.ninetyFiveThPercentileTimeMeasurement =
+ nthPercentile(
+ extractTimeSeriesValues(
+ this.statistics.statisticsData.get(entryName)!.measurementTimeSeries as TimestampedData[],
+ ),
+ 95,
+ );
+ this.statistics.statisticsData.get(entryName)!.stdDevTimeMeasurement = stdDeviation(
+ extractTimeSeriesValues(
+ this.statistics.statisticsData.get(entryName)!.measurementTimeSeries as TimestampedData[],
+ ),
+ );
+ if (
+ Configuration.getConfigurationSection<StorageConfiguration>(
+ ConfigurationSection.performanceStorage,
+ ).enabled
+ ) {
+ parentPort?.postMessage(buildPerformanceStatisticsMessage(this.statistics));