| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 import collections | 4 import collections |
| 5 import json | 5 import json |
| 6 import os | 6 import os |
| 7 | 7 |
| 8 from measurements import PageTestMeasurement |
| 8 from metrics import power | 9 from metrics import power |
| 9 from telemetry import benchmark | 10 from telemetry import benchmark |
| 10 from telemetry.page import page_set | 11 from telemetry.page import page_set |
| 11 from telemetry.page import page_test | |
| 12 from telemetry.value import list_of_scalar_values | 12 from telemetry.value import list_of_scalar_values |
| 13 | 13 |
| 14 | 14 |
| 15 _URL = 'http://www.webkit.org/perf/sunspider-1.0.2/sunspider-1.0.2/driver.html' | 15 _URL = 'http://www.webkit.org/perf/sunspider-1.0.2/sunspider-1.0.2/driver.html' |
| 16 | 16 |
| 17 DESCRIPTIONS = { | 17 DESCRIPTIONS = { |
| 18 '3d-cube': | 18 '3d-cube': |
| 19 'Pure JavaScript computations of the kind you might use to do 3d ' | 19 'Pure JavaScript computations of the kind you might use to do 3d ' |
| 20 'rendering, but without the rendering. This ends up mostly hitting ' | 20 'rendering, but without the rendering. This ends up mostly hitting ' |
| 21 'floating point math and array access.', | 21 'floating point math and array access.', |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 'math-spectral-norm': 'Various mathematical type computations.', | 65 'math-spectral-norm': 'Various mathematical type computations.', |
| 66 'regexp-dna': 'Regular expressions performance.', | 66 'regexp-dna': 'Regular expressions performance.', |
| 67 'string-base64': 'String processing.', | 67 'string-base64': 'String processing.', |
| 68 'string-fasta': 'String processing', | 68 'string-fasta': 'String processing', |
| 69 'string-tagcloud': 'String processing code to generate a giant "tagcloud".', | 69 'string-tagcloud': 'String processing code to generate a giant "tagcloud".', |
| 70 'string-unpack-code': 'String processing code to extracting compressed JS.', | 70 'string-unpack-code': 'String processing code to extracting compressed JS.', |
| 71 'string-validate-input': 'String processing.', | 71 'string-validate-input': 'String processing.', |
| 72 } | 72 } |
| 73 | 73 |
| 74 | 74 |
| 75 class _SunspiderMeasurement(page_test.PageTest): | 75 class _SunspiderMeasurement(PageTestMeasurement): |
| 76 def __init__(self): | 76 def __init__(self): |
| 77 super(_SunspiderMeasurement, self).__init__() | 77 super(_SunspiderMeasurement, self).__init__() |
| 78 self._power_metric = None | 78 self._power_metric = None |
| 79 | 79 |
| 80 def CustomizeBrowserOptions(self, options): | 80 def CustomizeBrowserOptions(self, options): |
| 81 super(_SunspiderMeasurement, self).CustomizeBrowserOptions(options) |
| 81 power.PowerMetric.CustomizeBrowserOptions(options) | 82 power.PowerMetric.CustomizeBrowserOptions(options) |
| 82 | 83 |
| 83 def WillStartBrowser(self, platform): | 84 def WillStartBrowser(self, platform): |
| 84 self._power_metric = power.PowerMetric(platform) | 85 self._power_metric = power.PowerMetric(platform) |
| 85 | 86 |
| 86 def DidNavigateToPage(self, page, tab): | 87 def DidNavigateToPage(self, page, tab): |
| 87 self._power_metric.Start(page, tab) | 88 self._power_metric.Start(page, tab) |
| 88 | 89 |
| 89 def ValidateAndMeasurePage(self, page, tab, results): | 90 def ValidateAndMeasurePage(self, page, tab, results): |
| 90 tab.WaitForJavaScriptExpression( | 91 tab.WaitForJavaScriptExpression( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 114 total += value | 115 total += value |
| 115 totals.append(total) | 116 totals.append(total) |
| 116 for key, values in r.iteritems(): | 117 for key, values in r.iteritems(): |
| 117 results.AddValue(list_of_scalar_values.ListOfScalarValues( | 118 results.AddValue(list_of_scalar_values.ListOfScalarValues( |
| 118 results.current_page, key, 'ms', values, important=False, | 119 results.current_page, key, 'ms', values, important=False, |
| 119 description=DESCRIPTIONS.get(key))) | 120 description=DESCRIPTIONS.get(key))) |
| 120 results.AddValue(list_of_scalar_values.ListOfScalarValues( | 121 results.AddValue(list_of_scalar_values.ListOfScalarValues( |
| 121 results.current_page, 'Total', 'ms', totals, | 122 results.current_page, 'Total', 'ms', totals, |
| 122 description='Totals of run time for each different type of benchmark ' | 123 description='Totals of run time for each different type of benchmark ' |
| 123 'in sunspider')) | 124 'in sunspider')) |
| 125 super(_SunspiderMeasurement, self).ValidateAndMeasurePage( |
| 126 page, tab, results) |
| 124 | 127 |
| 125 | 128 |
| 126 class Sunspider(benchmark.Benchmark): | 129 class Sunspider(benchmark.Benchmark): |
| 127 """Apple's SunSpider JavaScript benchmark.""" | 130 """Apple's SunSpider JavaScript benchmark.""" |
| 128 test = _SunspiderMeasurement | 131 test = _SunspiderMeasurement |
| 129 | 132 |
| 130 def CreatePageSet(self, options): | 133 def CreatePageSet(self, options): |
| 131 ps = page_set.PageSet( | 134 ps = page_set.PageSet( |
| 132 archive_data_file='../page_sets/data/sunspider.json', | 135 archive_data_file='../page_sets/data/sunspider.json', |
| 133 make_javascript_deterministic=False, | 136 make_javascript_deterministic=False, |
| 134 file_path=os.path.abspath(__file__)) | 137 file_path=os.path.abspath(__file__)) |
| 135 ps.AddPageWithDefaultRunNavigate(_URL) | 138 ps.AddPageWithDefaultRunNavigate(_URL) |
| 136 return ps | 139 return ps |
| OLD | NEW |