Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Unified Diff: tools/telemetry/telemetry/util/statistics.py

Issue 185953004: Add some statistics to the monsoon profile run (Closed) Base URL: https://git.chromium.org/chromium/src.git@master
Patch Set: Rebase to apply upon latest trunk Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/util/statistics.py
diff --git a/tools/perf/metrics/statistics.py b/tools/telemetry/telemetry/util/statistics.py
similarity index 87%
rename from tools/perf/metrics/statistics.py
rename to tools/telemetry/telemetry/util/statistics.py
index 84ffc164a333035d2f40a2c2c596b41edc19c126..7044572f0f7b9e7ed202040527c3deb136ea5b71 100644
--- a/tools/perf/metrics/statistics.py
+++ b/tools/telemetry/telemetry/util/statistics.py
@@ -159,24 +159,67 @@ def DurationsDiscrepancy(durations, absolute=True,
return TimestampsDiscrepancy(timestamps, absolute, interval_multiplier)
-def ArithmeticMean(numerator, denominator):
+def ArithmeticMean(data):
"""Calculates arithmetic mean.
- Both numerator and denominator can be given as either individual
- values or lists of values which will be summed.
-
Args:
- numerator: A quantity that represents a sum total value.
- denominator: A quantity that represents a count of the number of things.
+ data: A list of samples.
Returns:
- The arithmetic mean value, or 0 if the denominator value was 0.
+ The arithmetic mean value, or 0 if the list is empty.
"""
- numerator_total = Total(numerator)
- denominator_total = Total(denominator)
+ numerator_total = Total(data)
+ denominator_total = Total(len(data))
return DivideIfPossibleOrZero(numerator_total, denominator_total)
+def StandardDeviation(data):
+ """Calculates the standard deviation.
+
+ Args:
+ data: A list of samples.
+
+ Returns:
+ The standard deviation of the samples provided.
+ """
+ if len(data) == 1:
+ return 0.0
+
+ mean = ArithmeticMean(data)
+ variances = [float(x) - mean for x in data]
+ variances = [x * x for x in variances]
+ std_dev = math.sqrt(ArithmeticMean(variances))
+
+ return std_dev
+
+
+def TrapezoidalRule(data, dx):
+ """ Calculate the integral according to the trapezoidal rule
+
+ TrapezoidalRule approximates the definite integral of f from a to b by
+ the composite trapezoidal rule, using n subintervals.
+ http://en.wikipedia.org/wiki/Trapezoidal_rule#Uniform_grid
+
+ Args:
+ data: A list of samples
+ dx: The uniform distance along the x axis between any two samples
+
+ Returns:
+ The area under the curve defined by the samples and the uniform distance
+ according to the trapezoidal rule.
+ """
+
+ n = len(data) - 1
+ s = data[0] + data[n]
+
+ if n == 0:
+ return 0.0
+
+ for i in range(1, n):
+ s += 2 * data[i]
+
+ return s * dx / 2.0
+
def Total(data):
"""Returns the float value of a number or the sum of a list."""
if type(data) == float:

Powered by Google App Engine
This is Rietveld 408576698