| OLD | NEW |
| 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 |
| 9 import json | 9 import json |
| 10 import math | 10 import math |
| 11 | 11 |
| 12 # Valid values of result type. | 12 # Valid values of result type. |
| 13 RESULT_TYPES = {'unimportant': 'RESULT ', | 13 RESULT_TYPES = {'unimportant': 'RESULT ', |
| 14 'default': '*RESULT ', | 14 'default': '*RESULT ', |
| 15 'informational': '', | 15 'informational': '', |
| 16 'unimportant-histogram': 'HISTOGRAM ', | 16 'unimportant-histogram': 'HISTOGRAM ', |
| 17 'histogram': '*HISTOGRAM '} | 17 'histogram': '*HISTOGRAM '} |
| 18 | 18 |
| 19 | 19 |
| 20 def _EscapePerfResult(s): | 20 def _EscapePerfResult(s): |
| 21 """Escapes |s| for use in a perf result.""" | 21 """Escapes |s| for use in a perf result.""" |
| 22 return re.sub('[\:|=/#&]', '_', s) | 22 return re.sub('[\:|=/#&,]', '_', s) |
| 23 | 23 |
| 24 | 24 |
| 25 def GeomMeanAndStdDevFromHistogram(histogram_json): | 25 def GeomMeanAndStdDevFromHistogram(histogram_json): |
| 26 histogram = json.loads(histogram_json) | 26 histogram = json.loads(histogram_json) |
| 27 # Handle empty histograms gracefully. | 27 # Handle empty histograms gracefully. |
| 28 if not 'buckets' in histogram: | 28 if not 'buckets' in histogram: |
| 29 return 0.0, 0.0 | 29 return 0.0, 0.0 |
| 30 count = 0 | 30 count = 0 |
| 31 sum_of_logs = 0 | 31 sum_of_logs = 0 |
| 32 for bucket in histogram['buckets']: | 32 for bucket in histogram['buckets']: |
| (...skipping 26 matching lines...) Expand all Loading... |
| 59 sqdiffs = [(float(v) - avg) ** 2 for v in values] | 59 sqdiffs = [(float(v) - avg) ** 2 for v in values] |
| 60 variance = sum(sqdiffs) / (len(values) - 1) | 60 variance = sum(sqdiffs) / (len(values) - 1) |
| 61 sd = math.sqrt(variance) | 61 sd = math.sqrt(variance) |
| 62 except ValueError: | 62 except ValueError: |
| 63 value = ", ".join(values) | 63 value = ", ".join(values) |
| 64 else: | 64 else: |
| 65 value = values[0] | 65 value = values[0] |
| 66 return value, avg, sd | 66 return value, avg, sd |
| 67 | 67 |
| 68 | 68 |
| 69 def PrintPages(page_list): |
| 70 """Prints list of pages to stdout in the format required by perf tests.""" |
| 71 print 'Pages: [%s]' % ','.join([_EscapePerfResult(p) for p in page_list]) |
| 72 |
| 73 |
| 69 def PrintPerfResult(measurement, trace, values, units, result_type='default', | 74 def PrintPerfResult(measurement, trace, values, units, result_type='default', |
| 70 print_to_stdout=True): | 75 print_to_stdout=True): |
| 71 """Prints numerical data to stdout in the format required by perf tests. | 76 """Prints numerical data to stdout in the format required by perf tests. |
| 72 | 77 |
| 73 The string args may be empty but they must not contain any colons (:) or | 78 The string args may be empty but they must not contain any colons (:) or |
| 74 equals signs (=). | 79 equals signs (=). |
| 75 | 80 |
| 76 Args: | 81 Args: |
| 77 measurement: A description of the quantity being measured, e.g. "vm_peak". | 82 measurement: A description of the quantity being measured, e.g. "vm_peak". |
| 78 trace: A description of the particular data point, e.g. "reference". | 83 trace: A description of the particular data point, e.g. "reference". |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 | 177 |
| 173 def RestoreOriginalPerfMode(self): | 178 def RestoreOriginalPerfMode(self): |
| 174 """Resets the original performance mode of the device.""" | 179 """Resets the original performance mode of the device.""" |
| 175 self._SetScalingGovernorInternal(self._original_scaling_governor) | 180 self._SetScalingGovernorInternal(self._original_scaling_governor) |
| 176 | 181 |
| 177 def _SetScalingGovernorInternal(self, value): | 182 def _SetScalingGovernorInternal(self, value): |
| 178 for cpu in range(self._kernel_max + 1): | 183 for cpu in range(self._kernel_max + 1): |
| 179 scaling_governor_file = PerfControl._SCALING_GOVERNOR_FMT % cpu | 184 scaling_governor_file = PerfControl._SCALING_GOVERNOR_FMT % cpu |
| 180 if self._adb.FileExistsOnDevice(scaling_governor_file): | 185 if self._adb.FileExistsOnDevice(scaling_governor_file): |
| 181 self._adb.SetProtectedFileContents(scaling_governor_file, value) | 186 self._adb.SetProtectedFileContents(scaling_governor_file, value) |
| OLD | NEW |