blob: de62d32837342621777bd2839ccc1b0326b0e5db (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
class PerfStat:
def __init__(self,
short_label: str,
pattern: str,
input_offset: int,
output_label: str,
output_precision: int = 0,
conversion_function=int):
self.short_label: str = short_label
self.pattern: str = pattern
self.input_offset: int = input_offset
self.output_label: str = output_label
self.output_precision: int = output_precision
self.conversion_function = conversion_function
self.values = []
def add_value(self, value):
converted_value = self.conversion_function(value)
self.values.append(converted_value)
def get_num_values(self):
return len(self.values)
def get_average(self):
num_values = len(self.values)
total = sum(self.values)
average = self.conversion_function(total / num_values)
return average
def get_skipminmax_average(self):
num_values = len(self.values)
assert num_values >= 3
minimum = min(self.values)
maximum = max(self.values)
total = sum(self.values)
total_skipminmax = total - maximum - minimum
num_values_skipminmax = num_values - 2
skipminmax_average = self.conversion_function(total_skipminmax / num_values_skipminmax)
return skipminmax_average
def get_core_average(self):
if len(self.values) >= 3:
return self.get_skipminmax_average()
else:
return self.get_average()
|