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

Side by Side Diff: build/android/pylib/perf_tests_helper.py

Issue 22754003: Refactor BenchmarkResult.Add to take enum for data_type (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | tools/perf/benchmarks/dom_perf.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import re 5 import re
6 import sys 6 import sys
7 7
8 import android_commands 8 import android_commands
bulach 2013/08/19 08:43:01 forgot to mention, I think this is leftover from p
9 import json 9 import json
10 import logging 10 import logging
11 import math 11 import math
12 12
13 # Valid values of result type.
14 RESULT_TYPES = {'unimportant': 'RESULT ',
15 'default': '*RESULT ',
16 'informational': '',
17 'unimportant-histogram': 'HISTOGRAM ',
18 'histogram': '*HISTOGRAM '}
19 13
14 sys.path.append(
15 os.path.abspath(os.path.join(os.path.dirname(__file__),
16 os.pardir, os.pardir, os.pardir,
17 'tools', 'telemetry')))
bulach 2013/08/19 08:37:58 hmm, this is dodgy :) tools/telemetry already dep
18
19 from telemetry.page import result_data_type
20
21
22 # Mapping from result type to test output
23 RESULT_TYPES = {result_data_type.UNIMPORTANT: 'RESULT ',
24 result_data_type.DEFAULT: '*RESULT ',
25 result_data_type.INFORMATIONAL: '',
26 result_data_type.UNIMPORTANT_HISTOGRAM: 'HISTOGRAM ',
27 result_data_type.HISTOGRAM: '*HISTOGRAM '}
20 28
21 def _EscapePerfResult(s): 29 def _EscapePerfResult(s):
22 """Escapes |s| for use in a perf result.""" 30 """Escapes |s| for use in a perf result."""
23 return re.sub('[\:|=/#&,]', '_', s) 31 return re.sub('[\:|=/#&,]', '_', s)
24 32
25 33
26 def _Flatten(values): 34 def _Flatten(values):
27 """Returns a simple list without sub-lists.""" 35 """Returns a simple list without sub-lists."""
28 ret = [] 36 ret = []
29 for entry in values: 37 for entry in values:
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 else: 84 else:
77 value = values[0] 85 value = values[0]
78 return value, avg, sd 86 return value, avg, sd
79 87
80 88
81 def PrintPages(page_list): 89 def PrintPages(page_list):
82 """Prints list of pages to stdout in the format required by perf tests.""" 90 """Prints list of pages to stdout in the format required by perf tests."""
83 print 'Pages: [%s]' % ','.join([_EscapePerfResult(p) for p in page_list]) 91 print 'Pages: [%s]' % ','.join([_EscapePerfResult(p) for p in page_list])
84 92
85 93
86 def PrintPerfResult(measurement, trace, values, units, result_type='default', 94 def PrintPerfResult(measurement, trace, values, units,
95 result_type=result_data_type.DEFAULT,
87 print_to_stdout=True): 96 print_to_stdout=True):
88 """Prints numerical data to stdout in the format required by perf tests. 97 """Prints numerical data to stdout in the format required by perf tests.
89 98
90 The string args may be empty but they must not contain any colons (:) or 99 The string args may be empty but they must not contain any colons (:) or
91 equals signs (=). 100 equals signs (=).
92 101
93 Args: 102 Args:
94 measurement: A description of the quantity being measured, e.g. "vm_peak". 103 measurement: A description of the quantity being measured, e.g. "vm_peak".
95 trace: A description of the particular data point, e.g. "reference". 104 trace: A description of the particular data point, e.g. "reference".
96 values: A list of numeric measured values. An N-dimensional list will be 105 values: A list of numeric measured values. An N-dimensional list will be
97 flattened and treated as a simple list. 106 flattened and treated as a simple list.
98 units: A description of the units of measure, e.g. "bytes". 107 units: A description of the units of measure, e.g. "bytes".
99 result_type: Accepts values of RESULT_TYPES. 108 result_type: Accepts values of result_data_type.ALL_TYPES.
100 print_to_stdout: If True, prints the output in stdout instead of returning 109 print_to_stdout: If True, prints the output in stdout instead of returning
101 the output to caller. 110 the output to caller.
102 111
103 Returns: 112 Returns:
104 String of the formated perf result. 113 String of the formated perf result.
105 """ 114 """
106 assert result_type in RESULT_TYPES, 'result type: %s is invalid' % result_type 115 assert (result_data_type.IsValidType(result_type),
116 'result type: %s is invalid' % result_type)
107 117
108 trace_name = _EscapePerfResult(trace) 118 trace_name = _EscapePerfResult(trace)
109 119
110 if result_type in ['unimportant', 'default', 'informational']: 120 if (result_type == result_data_type.UNIMPORTANT or
121 result_type == result_data_type.DEFAULT or
122 result_type == result_data_type.INFORMATIONAL):
111 assert isinstance(values, list) 123 assert isinstance(values, list)
112 assert len(values) 124 assert len(values)
113 assert '/' not in measurement 125 assert '/' not in measurement
114 value, avg, sd = _MeanAndStdDevFromList(_Flatten(values)) 126 value, avg, sd = _MeanAndStdDevFromList(_Flatten(values))
115 output = '%s%s: %s%s%s %s' % ( 127 output = '%s%s: %s%s%s %s' % (
116 RESULT_TYPES[result_type], 128 RESULT_TYPES[result_type],
117 _EscapePerfResult(measurement), 129 _EscapePerfResult(measurement),
118 trace_name, 130 trace_name,
119 # Do not show equal sign if the trace is empty. Usually it happens when 131 # Do not show equal sign if the trace is empty. Usually it happens when
120 # measurement is enough clear to describe the result. 132 # measurement is enough clear to describe the result.
121 '= ' if trace_name else '', 133 '= ' if trace_name else '',
122 value, 134 value,
123 units) 135 units)
124 else: 136 else:
125 assert(result_type in ['histogram', 'unimportant-histogram']) 137 assert result_data_type.IsHistogram(result_type)
126 assert isinstance(values, list) 138 assert isinstance(values, list)
127 # The histograms can only be printed individually, there's no computation 139 # The histograms can only be printed individually, there's no computation
128 # across different histograms. 140 # across different histograms.
129 assert len(values) == 1 141 assert len(values) == 1
130 value = values[0] 142 value = values[0]
131 output = '%s%s: %s= %s' % ( 143 output = '%s%s: %s= %s' % (
132 RESULT_TYPES[result_type], 144 RESULT_TYPES[result_type],
133 _EscapePerfResult(measurement), 145 _EscapePerfResult(measurement),
134 trace_name, 146 trace_name,
135 value) 147 value)
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 """Resets the original performance mode of the device.""" 205 """Resets the original performance mode of the device."""
194 self._SetScalingGovernorInternal(self._original_scaling_governor) 206 self._SetScalingGovernorInternal(self._original_scaling_governor)
195 207
196 def _SetScalingGovernorInternal(self, value): 208 def _SetScalingGovernorInternal(self, value):
197 for cpu in range(self._kernel_max + 1): 209 for cpu in range(self._kernel_max + 1):
198 scaling_governor_file = PerfControl._SCALING_GOVERNOR_FMT % cpu 210 scaling_governor_file = PerfControl._SCALING_GOVERNOR_FMT % cpu
199 if self._adb.FileExistsOnDevice(scaling_governor_file): 211 if self._adb.FileExistsOnDevice(scaling_governor_file):
200 logging.info('Writing scaling governor mode \'%s\' -> %s' % 212 logging.info('Writing scaling governor mode \'%s\' -> %s' %
201 (value, scaling_governor_file)) 213 (value, scaling_governor_file))
202 self._adb.SetProtectedFileContents(scaling_governor_file, value) 214 self._adb.SetProtectedFileContents(scaling_governor_file, value)
OLDNEW
« no previous file with comments | « no previous file | tools/perf/benchmarks/dom_perf.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698