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

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

Issue 1238393003: [IndexedDB] Adding traces, perf tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: forgot to start the old test Created 5 years, 3 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
OLDNEW
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 4
5 """Runs Chromium's IndexedDB performance test. These test: 5 """Runs Chromium's IndexedDB performance test. These test:
6 6
7 Databases: 7 Databases:
8 create/delete 8 create/delete
9 Keys: 9 Keys:
10 create/delete 10 create/delete
11 Indexes: 11 Indexes:
12 create/delete 12 create/delete
13 Data access: 13 Data access:
14 Random read/write 14 Random read/write
15 Read cache 15 Read cache
16 Cursors: 16 Cursors:
17 Read & random writes 17 Read & random writes
18 Walking multiple 18 Walking multiple
19 Seeking. 19 Seeking.
20 """ 20 """
21 21
22 import json 22 import json
23 import os 23 import os
24 24
25 from core import perf_benchmark 25 from core import perf_benchmark
26 26
27 from telemetry import page as page_module
28 from telemetry import story
27 from telemetry.core import util 29 from telemetry.core import util
28 from telemetry import page as page_module
29 from telemetry.page import page_test 30 from telemetry.page import page_test
30 from telemetry import story
31 from telemetry.value import scalar 31 from telemetry.value import scalar
32 32
33 from metrics import memory 33 from metrics import memory
34 from metrics import power 34 from metrics import power
35 35
36 import page_sets
37
38 from telemetry.timeline import tracing_category_filter
39 from telemetry.web_perf import timeline_based_measurement
40
41
42 IDB_CATEGORY = 'IndexedDB'
43 TIMELINE_REQUIRED_CATEGORY = 'blink.console'
36 44
37 class _IndexedDbMeasurement(page_test.PageTest): 45 class _IndexedDbMeasurement(page_test.PageTest):
38 def __init__(self): 46 def __init__(self):
39 super(_IndexedDbMeasurement, self).__init__() 47 super(_IndexedDbMeasurement, self).__init__()
40 self._memory_metric = None 48 self._memory_metric = None
41 self._power_metric = None 49 self._power_metric = None
42 50
43 def WillStartBrowser(self, platform): 51 def WillStartBrowser(self, platform):
44 """Initialize metrics once right before the browser has been launched.""" 52 """Initialize metrics once right before the browser has been launched."""
45 self._power_metric = power.PowerMetric(platform) 53 self._power_metric = power.PowerMetric(platform)
46 54
47 def DidStartBrowser(self, browser): 55 def DidStartBrowser(self, browser):
48 """Initialize metrics once right after the browser has been launched.""" 56 """Initialize metrics once right after the browser has been launched."""
49 self._memory_metric = memory.MemoryMetric(browser) 57 self._memory_metric = memory.MemoryMetric(browser)
50 58
51 def DidNavigateToPage(self, page, tab): 59 def DidNavigateToPage(self, page, tab):
52 self._memory_metric.Start(page, tab) 60 self._memory_metric.Start(page, tab)
53 self._power_metric.Start(page, tab) 61 self._power_metric.Start(page, tab)
54 62
55 def ValidateAndMeasurePage(self, page, tab, results): 63 def ValidateAndMeasurePage(self, page, tab, results):
56 tab.WaitForDocumentReadyStateToBeComplete() 64 tab.WaitForDocumentReadyStateToBeComplete()
57 tab.WaitForJavaScriptExpression( 65 tab.WaitForJavaScriptExpression('window.done', 600)
58 'window.document.cookie.indexOf("__done=1") >= 0', 600)
59 66
60 self._power_metric.Stop(page, tab) 67 self._power_metric.Stop(page, tab)
61 self._memory_metric.Stop(page, tab) 68 self._memory_metric.Stop(page, tab)
62 69
63 self._memory_metric.AddResults(tab, results) 70 self._memory_metric.AddResults(tab, results)
64 self._power_metric.AddResults(tab, results) 71 self._power_metric.AddResults(tab, results)
65 72
66 js_get_results = "JSON.stringify(automation.getResults());" 73 js_get_results = "JSON.stringify(automation.getResults());"
67 result_dict = json.loads(tab.EvaluateJavaScript(js_get_results)) 74 result_dict = json.loads(tab.EvaluateJavaScript(js_get_results))
68 total = 0.0 75 total = 0.0
69 for key in result_dict: 76 for key in result_dict:
70 if key == 'OverallTestDuration': 77 if key == 'OverallTestDuration':
71 continue 78 continue
72 msec = float(result_dict[key]) 79 msec = float(result_dict[key])
73 results.AddValue(scalar.ScalarValue( 80 results.AddValue(scalar.ScalarValue(
74 results.current_page, key, 'ms', msec, important=False)) 81 results.current_page, key, 'ms', msec, important=False))
75 82
76 total += msec 83 total += msec
77 results.AddValue(scalar.ScalarValue( 84 results.AddValue(scalar.ScalarValue(
78 results.current_page, 'Total Perf', 'ms', total)) 85 results.current_page, 'Total Perf', 'ms', total))
79 86
80 87
81 def CustomizeBrowserOptions(self, options): 88 def CustomizeBrowserOptions(self, options):
82 memory.MemoryMetric.CustomizeBrowserOptions(options) 89 memory.MemoryMetric.CustomizeBrowserOptions(options)
83 power.PowerMetric.CustomizeBrowserOptions(options) 90 power.PowerMetric.CustomizeBrowserOptions(options)
84 91
85 class IndexedDb(perf_benchmark.PerfBenchmark): 92
93 class IndexedDbOriginal(perf_benchmark.PerfBenchmark):
86 """Chromium's IndexedDB Performance tests.""" 94 """Chromium's IndexedDB Performance tests."""
87 test = _IndexedDbMeasurement 95 test = _IndexedDbMeasurement
88 96
89 @classmethod 97 @classmethod
90 def Name(cls): 98 def Name(cls):
91 return 'indexeddb_perf' 99 return 'indexeddb_perf'
92 100
93 def CreateStorySet(self, options): 101 def CreateStorySet(self, options):
94 indexeddb_dir = os.path.join(util.GetChromiumSrcDir(), 'chrome', 'test', 102 indexeddb_dir = os.path.join(util.GetChromiumSrcDir(), 'chrome', 'test',
95 'data', 'indexeddb') 103 'data', 'indexeddb')
96 ps = story.StorySet(base_dir=indexeddb_dir) 104 ps = story.StorySet(base_dir=indexeddb_dir)
97 ps.AddStory(page_module.Page('file://perf_test.html', ps, ps.base_dir)) 105 ps.AddStory(page_module.Page('file://perf_test.html', ps, ps.base_dir))
98 return ps 106 return ps
107
108
109 class IndexedDbOriginalSectioned(perf_benchmark.PerfBenchmark):
110 """Chromium's IndexedDB Performance tests."""
111 test = _IndexedDbMeasurement
112 page_set = page_sets.IndexedDBEndurePageSet
113
114 @classmethod
115 def Name(cls):
116 return 'storage.indexeddb_endure'
117
118
119 class IndexedDbTracing(perf_benchmark.PerfBenchmark):
120 """IndexedDB Performance tests that use tracing."""
121 page_set = page_sets.IndexedDBEndurePageSet
122
123 def CreateTimelineBasedMeasurementOptions(self):
124 cat_filter = tracing_category_filter.CreateMinimalOverheadFilter()
125 cat_filter.AddIncludedCategory(IDB_CATEGORY)
126 cat_filter.AddIncludedCategory(TIMELINE_REQUIRED_CATEGORY)
127
128 return timeline_based_measurement.Options(
129 overhead_level=cat_filter)
130
131 @classmethod
132 def Name(cls):
133 return 'storage.indexeddb_endure_tracing'
134
135 @classmethod
136 def ValueCanBeAddedPredicate(cls, value, is_first_result):
137 return 'idb' in value.name
OLDNEW
« no previous file with comments | « content/browser/indexed_db/leveldb/leveldb_transaction.cc ('k') | tools/perf/page_sets/indexeddb_endure_page.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698