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

Unified Diff: tools/perf/measurements/page_cycler.py

Issue 23112028: [Telemetry] Add support for capturing V8 object stats to Telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@stats_table_android
Patch Set: Change to using window.chrome.benchark instead of StatsCollectionController 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 side-by-side diff with in-line comments
Download patch
Index: tools/perf/measurements/page_cycler.py
diff --git a/tools/perf/measurements/page_cycler.py b/tools/perf/measurements/page_cycler.py
index e373eeab72694b39f1f202a54aedcf6e2842739e..5d28a2a44977be939d08e6af57ac2c89ad6a92bc 100644
--- a/tools/perf/measurements/page_cycler.py
+++ b/tools/perf/measurements/page_cycler.py
@@ -20,6 +20,7 @@ import sys
from metrics import io
from metrics import memory
+from metrics import v8_object_stats
from telemetry.core import util
from telemetry.page import page_measurement
@@ -31,7 +32,11 @@ class PageCycler(page_measurement.PageMeasurement):
'page_cycler.js'), 'r') as f:
self._page_cycler_js = f.read()
+ self._record_v8_object_stats = False
+
self._memory_metric = None
+ self._v8_object_stats_metric = None
+
def AddCommandLineOptions(self, parser):
# The page cyclers should default to 10 iterations. In order to change the
@@ -42,9 +47,15 @@ class PageCycler(page_measurement.PageMeasurement):
parser.remove_option('--pageset-repeat')
parser.add_option(pageset_repeat_option)
+ parser.add_option('--v8-object-stats',
+ action='store_true',
+ help='Enable detailed V8 object statistics.')
+
def DidStartBrowser(self, browser):
"""Initialize metrics once right after the browser has been launched."""
self._memory_metric = memory.MemoryMetric(browser)
+ if self._record_v8_object_stats:
+ self._v8_object_stats_metric = v8_object_stats.V8ObjectStatsMetric()
def DidStartHTTPServer(self, tab):
# Avoid paying for a cross-renderer navigation on the first page on legacy
@@ -56,11 +67,21 @@ class PageCycler(page_measurement.PageMeasurement):
def DidNavigateToPage(self, page, tab):
self._memory_metric.Start(page, tab)
+ if self._record_v8_object_stats:
+ self._v8_object_stats_metric.Start(page, tab)
def CustomizeBrowserOptions(self, options):
- memory.MemoryMetric.CustomizeBrowserOptions(options)
- io.IOMetric.CustomizeBrowserOptions(options)
+ options.AppendExtraBrowserArg('--enable-stats-collection-bindings')
tonyg 2013/08/27 15:40:02 Was there a merge error here? Ideally there should
rmcilroy 2013/08/27 18:24:07 Opps, this seems to have been a merge error. Done
options.AppendExtraBrowserArg('--js-flags=--expose_gc')
+ options.AppendExtraBrowserArg('--no-sandbox')
+
+ # Old commandline flags used for reference builds.
+ options.AppendExtraBrowserArg('--dom-automation')
+
+ # Add custom options required by metrics
+ if options.v8_object_stats:
+ self._record_v8_object_stats = True
+ v8_object_stats.V8ObjectStatsMetric.CustomizeBrowserOptions(options)
# Temporarily disable typical_25 page set on mac.
if sys.platform == 'darwin' and sys.argv[-1].endswith('/typical_25.json'):
@@ -77,6 +98,9 @@ class PageCycler(page_measurement.PageMeasurement):
self._memory_metric.Stop(page, tab)
self._memory_metric.AddResults(tab, results)
+ if self._record_v8_object_stats:
+ self._v8_object_stats_metric.Stop(page, tab)
+ self._v8_object_stats_metric.AddResults(tab, results)
def DidRunTest(self, tab, results):
self._memory_metric.AddSummaryResults(results)

Powered by Google App Engine
This is Rietveld 408576698