Chromium Code Reviews| 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..67b29bfbff2d75156e45efaa98365791172516f2 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,12 +67,23 @@ 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('--js-flags=--expose_gc') |
| + if options.v8_object_stats: |
| + self._record_v8_object_stats = True |
| + v8_object_stats.V8ObjectStatsMetric.CustomizeBrowserOptions(options) |
|
tonyg
2013/08/28 02:12:07
Another merge error? This bit shows up twice.
rmcilroy
2013/08/28 09:44:33
Your right, thanks. Done
|
| + |
| + # 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'): |
| print 'typical_25 is currently disabled on mac. Skipping test.' |
| @@ -77,6 +99,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) |