MCPcopy Index your code
hub / github.com/nodejs/node / Measurement

Class Measurement

deps/v8/tools/avg.py:104–166  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

102
103
104class Measurement:
105
106 def __init__(self, key, unit):
107 self.key = key
108 self.unit = unit
109 self.values = []
110 self.average = 0
111 self.count = 0
112 self.M2 = 0
113 self.min = float("inf")
114 self.max = -float("inf")
115
116 def addValue(self, value):
117 try:
118 num_value = float(value)
119 self.values.append(num_value)
120 self.min = min(self.min, num_value)
121 self.max = max(self.max, num_value)
122 self.count = self.count + 1
123 delta = num_value - self.average
124 self.average = self.average + delta / self.count
125 delta2 = num_value - self.average
126 self.M2 = self.M2 + delta * delta2
127 except ValueError:
128 print("Ignoring non-numeric value", value)
129
130 def status(self, widths):
131 return "{} {}: avg {} stddev {} ({} - {}) {}".format(
132 fmt_reps(self),
133 fmtS(self.key, widths.key), fmtN(self.average, widths.average),
134 fmtN(self.stddev(), widths.stddev), fmtN(self.min, widths.min),
135 fmtN(self.max, widths.max), fmtS(self.unit_string()))
136
137 def result(self, widths):
138 return format_line(self.size(), self.key, fmt(self.average),
139 fmt(self.stddev()), fmt(self.min),
140 fmt(self.max), self.unit_string(),
141 widths)
142
143 def unit_string(self):
144 if not self.unit:
145 return ""
146 return self.unit
147
148 def variance(self):
149 if self.count < 2:
150 return float('NaN')
151 return self.M2 / (self.count - 1)
152
153 def stddev(self):
154 return math.sqrt(self.variance())
155
156 def size(self):
157 return len(self.values)
158
159 def widths(self):
160 return FieldWidth(
161 points=len("{}".format(self.size())) + 2,

Callers 1

recordMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…