1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# 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.
import re
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 = '*' if important else ''
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
|