diff PerfsDb/TestResult.py @ 169:85a2074f8794

measuring orthanc startup time
author am@osimis.io
date Fri, 31 Aug 2018 11:01:40 +0200
parents f1a75985caa8
children
line wrap: on
line diff
--- a/PerfsDb/TestResult.py	Fri Aug 31 10:35:09 2018 +0200
+++ b/PerfsDb/TestResult.py	Fri Aug 31 11:01:40 2018 +0200
@@ -16,16 +16,24 @@
 
     def compute(self):
 
-        mean = statistics.mean(self._durations)
-        stdDev = statistics.stdev(self._durations)
+        if len(self._durations) >= 2:
+            mean = statistics.mean(self._durations)
+            stdDev = statistics.stdev(self._durations)
 
-        # remove outliers
-        cleanedDurations = [x for x in self._durations if (x > mean - 2*stdDev) and (x < mean + 2*stdDev)]
-        
-        self.averageTimeInMs = statistics.mean(cleanedDurations)
-        self.minTimeInMs = min(cleanedDurations)
-        self.maxTimeInMs = max(cleanedDurations)
+            # remove outliers
+            cleanedDurations = [x for x in self._durations if (x > mean - 2*stdDev) and (x < mean + 2*stdDev)]
+            
+            self.averageTimeInMs = statistics.mean(cleanedDurations)
+            self.minTimeInMs = min(cleanedDurations)
+            self.maxTimeInMs = max(cleanedDurations)
+        elif len(self._durations) == 1:
+            self.averageTimeInMs = self._durations[0]
+            self.minTimeInMs = self._durations[0]
+            self.maxTimeInMs = self._durations[0]
+        else:
+            raise ArithmeticError # you need at least one measure !
 
+            
 
     def __str__(self):
         return "{name:<40}: {avg:>8.2f} ms {min:>8.2f} ms {max:>8.2f} ms".format(