| Index: tools/bisect-perf-regression.py
|
| diff --git a/tools/bisect-perf-regression.py b/tools/bisect-perf-regression.py
|
| index 80d87ef29d35005b8f121972f5affd48df27c7f7..2a921b843ce7139a655bf9a20d5afd66f7edff43 100755
|
| --- a/tools/bisect-perf-regression.py
|
| +++ b/tools/bisect-perf-regression.py
|
| @@ -1945,31 +1945,42 @@ class BisectPerformanceMetrics(object):
|
| A list of floating point numbers found.
|
| """
|
| # Format is: RESULT <graph>: <trace>= <value> <units>
|
| - metric_formatted = re.escape('RESULT %s: %s=' % (metric[0], metric[1]))
|
| + metric_re = re.escape('RESULT %s: %s=' % (metric[0], metric[1]))
|
| +
|
| + # The log will be parsed looking for format:
|
| + # <*>RESULT <graph_name>: <trace_name>= <value>
|
| + single_result_re = re.compile(
|
| + metric_re + '\s*(?P<VALUE>[-]?\d*(\.\d*)?)')
|
| +
|
| + # The log will be parsed looking for format:
|
| + # <*>RESULT <graph_name>: <trace_name>= [<value>,value,value,...]
|
| + multi_results_re = re.compile(
|
| + metric_re + '\s*\[\s*(?P<VALUES>[-]?[\d\., ]+)\s*\]')
|
| +
|
| + # The log will be parsed looking for format:
|
| + # <*>RESULT <graph_name>: <trace_name>= {<mean>, <std deviation>}
|
| + mean_stddev_re = re.compile(
|
| + metric_re +
|
| + '\s*\{\s*(?P<MEAN>[-]?\d*(\.\d*)?),\s*(?P<STDDEV>\d+(\.\d*)?)\s*\}')
|
|
|
| text_lines = text.split('\n')
|
| values_list = []
|
| -
|
| for current_line in text_lines:
|
| # Parse the output from the performance test for the metric we're
|
| # interested in.
|
| - metric_re = metric_formatted +\
|
| - "(\s)*(?P<values>[0-9]+(\.[0-9]*)?)"
|
| - metric_re = re.compile(metric_re)
|
| - regex_results = metric_re.search(current_line)
|
| -
|
| - if not regex_results is None:
|
| - values_list += [regex_results.group('values')]
|
| - else:
|
| - metric_re = metric_formatted +\
|
| - "(\s)*\[(\s)*(?P<values>[0-9,.]+)\]"
|
| - metric_re = re.compile(metric_re)
|
| - regex_results = metric_re.search(current_line)
|
| -
|
| - if not regex_results is None:
|
| - metric_values = regex_results.group('values')
|
| -
|
| - values_list += metric_values.split(',')
|
| + single_result_match = single_result_re.search(current_line)
|
| + multi_results_match = multi_results_re.search(current_line)
|
| + mean_stddev_match = mean_stddev_re.search(current_line)
|
| + if (not single_result_match is None and
|
| + single_result_match.group('VALUE')):
|
| + values_list += [single_result_match.group('VALUE')]
|
| + elif (not multi_results_match is None and
|
| + multi_results_match.group('VALUES')):
|
| + metric_values = multi_results_match.group('VALUES')
|
| + values_list += metric_values.split(',')
|
| + elif (not mean_stddev_match is None and
|
| + mean_stddev_match.group('MEAN')):
|
| + values_list += [mean_stddev_match.group('MEAN')]
|
|
|
| values_list = [float(v) for v in values_list if IsStringFloat(v)]
|
|
|
|
|