@@ -251,8 +251,6 @@ def clear(self):
251
251
self .max = smi_info (0 )
252
252
self .min = smi_info (2 ** 32 - 1 )
253
253
self .outlier = smi_info (0 )
254
- self .acc_smi_duration = 0
255
- self .acc_smi_num = 0
256
254
self .avg_smi_duration = 0
257
255
self .avg_smi_num = 0
258
256
self .outliers = 0
@@ -271,8 +269,6 @@ def add(self, duration, time, code, data, gprs, confirmed=False):
271
269
outlier = self .is_outlier (duration )
272
270
self .records ['deltas' ].append (duration )
273
271
self .records ['times' ].append (time )
274
- self .acc_smi_duration += duration
275
- self .acc_smi_num += 1
276
272
self .update_stdev (duration )
277
273
if not outlier :
278
274
if duration > self .max .duration :
@@ -285,21 +281,15 @@ def add(self, duration, time, code, data, gprs, confirmed=False):
285
281
self .outlier .update (duration , code , data , gprs .copy ())
286
282
self .confirmed = confirmed
287
283
288
- def avg (self ):
289
- if self .avg_smi_num or self .acc_smi_num :
290
- self .avg_smi_duration = ((self .avg_smi_duration * self .avg_smi_num ) + self .acc_smi_duration ) / (self .avg_smi_num + self .acc_smi_num )
291
- self .avg_smi_num += self .acc_smi_num
292
- self .hist_smi_duration = ((self .hist_smi_duration * self .hist_smi_num ) + self .acc_smi_duration ) / (self .hist_smi_num + self .acc_smi_num )
293
- self .hist_smi_num += self .acc_smi_num
294
- self .acc_smi_duration = 0
295
- self .acc_smi_num = 0
296
-
297
- def update_stdev (self , value ):
298
- difference = value - self .avg_smi_duration
299
- difference_hist = value - self .hist_smi_duration
300
- self .avg ()
301
- self .m2 += difference * (value - self .avg_smi_duration )
302
- self .m2_hist += difference_hist * (value - self .hist_smi_duration )
284
+ def update_stdev (self , duration ):
285
+ self .avg_smi_num += 1
286
+ self .hist_smi_num += 1
287
+ difference = duration - self .avg_smi_duration
288
+ difference_hist = duration - self .hist_smi_duration
289
+ self .avg_smi_duration += difference / self .avg_smi_num
290
+ self .hist_smi_duration += difference_hist / self .hist_smi_num
291
+ self .m2 += difference * (duration - self .avg_smi_duration )
292
+ self .m2_hist += difference_hist * (duration - self .hist_smi_duration )
303
293
variance = self .m2 / self .avg_smi_num
304
294
variance_hist = self .m2_hist / self .hist_smi_num
305
295
self .stdev = math .sqrt (variance )
@@ -308,8 +298,6 @@ def update_stdev(self, value):
308
298
def update_calibration (self , duration ):
309
299
if not self .needs_calibration :
310
300
return
311
- self .acc_smi_duration += duration
312
- self .acc_smi_num += 1
313
301
self .update_stdev (duration )
314
302
self .calib_samples += 1
315
303
if self .calib_samples >= SCAN_CALIB_SAMPLES :
@@ -354,7 +342,7 @@ def get_total_outliers(self):
354
342
355
343
def get_info (self ):
356
344
avg = self .avg_smi_duration or self .hist_smi_duration
357
- info = f"average { round (avg )} checked { self .avg_smi_num + self .outliers } "
345
+ info = f"average { round (avg )} stdev { self . stdev } checked { self .avg_smi_num + self .outliers } "
358
346
if self .outliers :
359
347
info += f"\n Identified outlier: { self .outlier .get_info ()} "
360
348
info += f"\n Deltas: { self .records } "
0 commit comments