perf: optimize min/max in hot code path
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 3 Sep 2023 13:08:36 +0000 (15:08 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 3 Sep 2023 13:08:36 +0000 (15:08 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
src/utils.ts

index e864a015f09f40da811245564fac3d36eee760bf..ae4b8637f95821ada8d6ec65019e48d342c2a139 100644 (file)
@@ -238,11 +238,11 @@ export const updateMeasurementStatistics = (
   if (measurementRequirements.aggregate) {
     measurementStatistics.aggregate =
       (measurementStatistics.aggregate ?? 0) + measurementValue
-    measurementStatistics.minimum = Math.min(
+    measurementStatistics.minimum = min(
       measurementValue,
       measurementStatistics.minimum ?? Infinity
     )
-    measurementStatistics.maximum = Math.max(
+    measurementStatistics.maximum = max(
       measurementValue,
       measurementStatistics.maximum ?? -Infinity
     )
@@ -273,3 +273,6 @@ export const updateMeasurementStatistics = (
 export const secureRandom = (): number => {
   return webcrypto.getRandomValues(new Uint32Array(1))[0] / 0x100000000
 }
+
+const min = (a: number, b: number): number => (a < b ? a : b)
+const max = (a: number, b: number): number => (a > b ? a : b)