Index: tools/perf_expectations/make_expectations.py |
diff --git a/tools/perf_expectations/make_expectations.py b/tools/perf_expectations/make_expectations.py |
index a560984c5e430f069a62926e55f23929f7c771aa..ea7e5d6f3e3250f36021a3ae3ea69190880698de 100755 |
--- a/tools/perf_expectations/make_expectations.py |
+++ b/tools/perf_expectations/make_expectations.py |
@@ -81,7 +81,7 @@ def GetRowData(data, key): |
if subkey in data[key]: |
rowdata.append('"%s": %s' % (subkey, data[key][subkey])) |
# Strings, like type, come next. |
- for subkey in ['type']: |
+ for subkey in ['type', 'better']: |
if subkey in data[key]: |
rowdata.append('"%s": "%s"' % (subkey, data[key][subkey])) |
# Finally the main numbers come last. |
@@ -165,6 +165,7 @@ def Main(args): |
for key in perfkeys: |
value = perf[key] |
tolerance = value.get('tolerance', DEFAULT_TOLERANCE) |
+ better = value.get('better', None) |
# Verify the checksum. |
original_checksum = value.get('sha1', '') |
@@ -276,21 +277,32 @@ def Main(args): |
regress = float(trace_values[tracename]['high']) |
improve = float(trace_values[tracename]['low']) |
- # At this point, regress > improve. If regress == improve, we adjust |
- # improve so it is just a little less than regress. I'm picking on improve |
- # so we keep the sizes assumptions in place for now. |
- if regress == improve: |
- improve = float(improve - abs(regress * 0.01)) |
+ # So far we've assumed better is lower (regress > improve). If the actual |
+ # values for regress and improve are equal, though, and better was not |
+ # specified, alert the user so we don't let them create a new file with |
+ # ambiguous rules. |
+ if better == None and regress == improve: |
+ OutputMessage('regress (%s) is equal to improve (%s), and "better" is ' |
+ 'unspecified, please fix by setting "better": "lower" or ' |
+ '"better": "higher" in this perf trace\'s expectation' % ( |
+ regress, improve), verbose_message=False) |
+ return 1 |
# If the existing values assume regressions are low deltas relative to |
# improvements, swap our regress and improve. This value must be a |
# scores-like result. |
if ('regress' in perf[key] and 'improve' in perf[key] and |
perf[key]['regress'] < perf[key]['improve']): |
+ assert(better != 'lower') |
+ better = 'higher' |
temp = regress |
regress = improve |
improve = temp |
- if regress < improve: |
+ else: |
+ assert(better != 'higher') |
+ better = 'lower' |
+ |
+ if better == 'higher': |
regress = int(math.floor(regress - abs(regress*tolerance))) |
improve = int(math.ceil(improve + abs(improve*tolerance))) |
else: |