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

Unified Diff: bench/check_bench_regressions.py

Issue 172683002: Separates faster and slower bench alerts; sorts by delta. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 10 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: bench/check_bench_regressions.py
diff --git a/bench/check_bench_regressions.py b/bench/check_bench_regressions.py
index b26eb56ae00ea71ed68f6d8bd0d037fd210069cb..b61f5104381b6e71b82b6d2a438b8fbde07044c3 100644
--- a/bench/check_bench_regressions.py
+++ b/bench/check_bench_regressions.py
@@ -134,16 +134,17 @@ def read_expectations(expectations, filename):
if bench_entry in expectations:
raise Exception("Dup entries for bench expectation %s" %
bench_entry)
- # [<Bench_BmpConfig_TimeType>,<Platform-Alg>] -> (LB, UB)
+ # [<Bench_BmpConfig_TimeType>,<Platform-Alg>] -> (LB, UB, EXPECTED)
expectations[bench_entry] = (float(elements[-2]),
- float(elements[-1]))
+ float(elements[-1]),
+ float(elements[-3]))
epoger 2014/02/19 18:51:08 Not new to this CL... but these are strange magic
benchen 2014/02/19 21:08:08 Done using the constant index approach, which is m
def check_expectations(lines, expectations, revision, key_suffix):
"""Check if there are benches in the given revising out of range.
epoger 2014/02/19 18:51:08 TODO: document function arguments, return value, a
benchen 2014/02/19 21:08:08 Done.
"""
# The platform for this bot, to pass to the dashboard plot.
platform = key_suffix[ : key_suffix.rfind('-')]
- exceptions = []
+ exceptions = {}
epoger 2014/02/19 18:51:08 Please document the structure of this dictionary.
benchen 2014/02/19 21:08:08 Done.
for line in lines:
line_str = str(line)
line_str = line_str[ : line_str.find('_{')]
@@ -151,14 +152,23 @@ def check_expectations(lines, expectations, revision, key_suffix):
if bench_platform_key not in expectations:
continue
this_bench_value = lines[line]
- this_min, this_max = expectations[bench_platform_key]
+ this_min, this_max, this_expected = expectations[bench_platform_key]
if this_bench_value < this_min or this_bench_value > this_max:
- exception = 'Bench %s value %s out of range [%s, %s].' % (
- bench_platform_key, this_bench_value, this_min, this_max)
- exceptions.append(exception)
+ off_ratio = this_bench_value / this_expected
+ exception = 'Bench %s off range [%s, %s] (%s vs %s, %s%%).' % (
epoger 2014/02/19 18:51:08 off -> out of
benchen 2014/02/19 21:08:08 Done.
+ bench_platform_key, this_min, this_max, this_bench_value,
+ this_expected, (off_ratio - 1) * 100)
+ exceptions.setdefault(off_ratio, []).append(exception)
if exceptions:
- raise Exception('Bench values out of range:\n' +
- '\n'.join(exceptions))
+ ratios = exceptions.keys()
+ ratios.sort(reverse=True)
+ outputs = ['Bench values out of range:', '', 'Slower:']
+ for ratio in ratios:
+ if ratio < 1 and 'Faster:' not in outputs:
epoger 2014/02/19 18:51:08 I think it might be cleaner to build two expectati
benchen 2014/02/19 21:08:08 Done.
+ outputs.extend(['', 'Faster:'])
+ outputs.extend(exceptions[ratio])
+
+ raise Exception('\n'.join(outputs))
def main():
"""Parses command line and checks bench expectations."""

Powered by Google App Engine
This is Rietveld 408576698