Chromium Code Reviews| Index: build/android/perf_tests_helper.py |
| diff --git a/build/android/perf_tests_helper.py b/build/android/perf_tests_helper.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..ca507c6f15a091f06f75dc5941df11a437378190 |
| --- /dev/null |
| +++ b/build/android/perf_tests_helper.py |
| @@ -0,0 +1,60 @@ |
| +#!/usr/bin/python |
| +# Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +"""Collection of methods for running perf tests on the legacy browser.""" |
| + |
| +import re |
| + |
|
Nirnimesh
2011/10/25 01:12:37
nit: need another blank line here
michaelbai
2011/10/25 16:23:59
Done.
|
| +def _EscapePerfResult(s): |
| + """Escapes |s| for use in a perf result.""" |
| + # Colons (:) and equal signs (=) are not allowed, and we chose an arbitrary |
| + # limit of 40 chars. |
| + return re.sub(':|=', '_', s[:40]) |
| + |
| + |
| +def PrintPerfResult(measurement, trace, values, units, important=True, |
| + print_to_stdout=True): |
| + """Prints numerical data to stdout in the format required by perf tests. |
| + |
| + The string args may be empty but they must not contain any colons (:) or |
| + equals signs (=). |
| + |
| + Args: |
| + measurement: A description of the quantity being measured, e.g. "vm_peak". |
| + trace: A description of the particular data point, e.g. "reference". |
| + values: A list of numeric measured values. |
| + units: A description of the units of measure, e.g. "bytes". |
| + important: If True, the output line will be specially marked, to notify the |
| + post-processor. |
| + |
| + Returns: |
| + String of the formated perf result. |
| + """ |
| + important_marker = '' |
|
Nirnimesh
2011/10/25 01:12:37
lines 35-37 can be rewritten as:
important_marker
michaelbai
2011/10/25 16:23:59
Done.
|
| + if important: |
| + important_marker = '*' |
| + |
| + assert isinstance(values, list) |
| + assert len(values) |
| + assert '/' not in measurement |
| + avg = None |
| + if len(values) > 1: |
| + try: |
| + value = '[%s]' % ','.join([str(v) for v in values]) |
| + avg = sum([float(v) for v in values]) / len(values) |
| + except ValueError: |
| + value = ", ".join(values) |
| + else: |
| + value = values[0] |
| + |
| + output = '%sRESULT %s: %s= %s %s' % (important_marker, |
| + _EscapePerfResult(measurement), |
| + _EscapePerfResult(trace), |
| + value, units) |
| + if avg: |
| + output += '\nAvg %s: %d%s' % (measurement, avg, units) |
| + if print_to_stdout: |
| + print output |
| + return output |