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

Side by Side Diff: tools/perf/benchmarks/doyouevenbench.py

Issue 296213003: Update DoYouEvenBench benchmark suite with latest version. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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/page_sets/data/doyouevenbench.json » ('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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 """DoYouEvenBench performance benchmark . 5 """DoYouEvenBench performance benchmark .
6 6
7 DoYouEvenBench performance benchmark UI performance related to DOM using 7 DoYouEvenBench performance benchmark UI performance related to DOM using
8 popular JS frameworks. This benchmark uses http://todomvc.com and emulates user 8 popular JS frameworks. This benchmark uses http://todomvc.com and emulates user
9 actions: adding 100 todo items, completing them, and then deleting 9 actions: adding 100 todo items, completing them, and then deleting
10 them with Ember.js, Backbone.js, jQuery, and plain-old DOM. 10 them with Ember.js, Backbone.js, jQuery, and plain-old DOM.
11 """ 11 """
12 12
13 import os 13 import os
14 14
15 from telemetry import test 15 from telemetry import test
16 from telemetry.page import page_measurement 16 from telemetry.page import page_measurement
17 from telemetry.page import page_set 17 from telemetry.page import page_set
18 from telemetry.value import scalar 18 from telemetry.value import scalar
19 19
20 20
21 class DoYouEvenBenchMeasurement(page_measurement.PageMeasurement): 21 class DoYouEvenBenchMeasurement(page_measurement.PageMeasurement):
22 22
23 def MeasurePage(self, _, tab, results): 23 def MeasurePage(self, _, tab, results):
24 tab.WaitForDocumentReadyStateToBeComplete() 24 tab.WaitForDocumentReadyStateToBeComplete()
25 # Click Run button on http://rniwa.com/DoYouEvenBench to start test. 25 # Tests are ran 5 iteration, results are displayed in the form of HTML
26 tab.ExecuteJavaScript('document.getElementsByTagName("button")[1].click();') 26 # table. Each row represents timetaken in that iteration and adds rows for
27 # <PRE> tag stores the results once the tests are completed. 27 # Arithmetic Mean and 95th Percentile. Total 7 rows in the results table.
28 tab.WaitForJavaScriptExpression( 28 tab.WaitForJavaScriptExpression(
29 'document.getElementsByTagName("pre").length > 0', 200) 29 'document.getElementsByTagName("tr").length >= 7', 200)
30 # Parse results 30 # Parse results and result for each run including mean and 95th percentile.
31 results_log = tab.EvaluateJavaScript( 31 js_results = """ function JsResults() {
32 'document.getElementsByTagName("pre")[0].innerHTML') 32 var _result = {}
33 res_log = results_log.splitlines() 33 _rows = document.getElementsByTagName("tr");
34 for res in res_log: 34 for(var i=0; i< _rows.length; i++) {
35 name_and_score = res.split(': ', 2) 35 if (_rows[i].cells[0].innerText.indexOf("95th Percentile") == -1) {
36 assert len(name_and_score) == 2, 'Unexpected result format "%s"' % res 36 _result[_rows[i].cells[0].innerText] = _rows[i].cells[1].innerText;
37 # Replace '/' with '_' for quantity being measure otherwise it asserts 37 }
38 # while printing results to stdout. 38 }
39 name = name_and_score[0].replace('/', '_').strip() 39 return _result;
40 score = float(name_and_score[1].replace('ms', '').strip()) 40 }; JsResults();"""
41 # Since Total consists total time taken by all tests, add its values 41 results_log = tab.EvaluateJavaScript(js_results)
42 # to Summary. 42 for name, value in results_log.iteritems():
43 if 'Total' not in name: 43 score = float(value.replace('ms', '').strip())
44 # Add time taken for each iteration to run tests.
45 if name != 'Arithmetic Mean':
44 results.Add(name, 'ms', score, data_type='unimportant') 46 results.Add(name, 'ms', score, data_type='unimportant')
45 else: 47 else:
46 results.AddSummaryValue(scalar.ScalarValue(None, 'Total', 'ms', score)) 48 results.AddSummaryValue(scalar.ScalarValue(None, name, 'ms', score))
47
48 49
49 class DoYouEvenBench(test.Test): 50 class DoYouEvenBench(test.Test):
50 """DoYouEvenBench benchmark related to DOMs using JS frameworks.""" 51 """DoYouEvenBench benchmark related to DOMs using JS frameworks."""
51 test = DoYouEvenBenchMeasurement 52 test = DoYouEvenBenchMeasurement
52 53
53 def CreatePageSet(self, options): 54 def CreatePageSet(self, options):
54 return page_set.PageSet.FromDict({ 55 ps = page_set.PageSet(
55 'archive_data_file': '../page_sets/data/doyouevenbench.json', 56 file_path=os.path.abspath(__file__),
56 'make_javascript_deterministic': False, 57 archive_data_file='../page_sets/data/doyouevenbench.json',
57 'pages': [ 58 make_javascript_deterministic=False)
58 {'url': 'http://rniwa.com/DoYouEvenBench/'} 59 ps.AddPageWithDefaultRunNavigate(
59 ] 60 'https://trac.webkit.org/export/164157/trunk/'
60 }, os.path.abspath(__file__)) 61 'PerformanceTests/DoYouEvenBench/Full.html')
61 62 return ps
OLDNEW
« no previous file with comments | « no previous file | tools/perf/page_sets/data/doyouevenbench.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698