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

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

Issue 2243713002: [tools/perf] Remove page_cycler benchmark and measurement (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
« no previous file with comments | « tools/perf/benchmarks/page_cycler.py ('k') | tools/perf/measurements/page_cycler_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/measurements/page_cycler.py
diff --git a/tools/perf/measurements/page_cycler.py b/tools/perf/measurements/page_cycler.py
deleted file mode 100644
index ebce2590b3d4fb4de38add3ffd680422cd3ac0fd..0000000000000000000000000000000000000000
--- a/tools/perf/measurements/page_cycler.py
+++ /dev/null
@@ -1,179 +0,0 @@
-# Copyright 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""The page cycler measurement.
-
-This measurement registers a window load handler in which is forces a layout and
-then records the value of performance.now(). This call to now() measures the
-time from navigationStart (immediately after the previous page's beforeunload
-event) until after the layout in the page's load event. In addition, two garbage
-collections are performed in between the page loads (in the beforeunload event).
-This extra garbage collection time is not included in the measurement times.
-Finally, various memory and IO statistics are gathered at the very end of
-cycling all pages.
-"""
-
-import collections
-import os
-
-from telemetry.core import util
-from telemetry.page import legacy_page_test
-from telemetry.value import scalar
-
-from metrics import cpu
-from metrics import keychain_metric
-from metrics import memory
-from metrics import power
-from metrics import speedindex
-
-
-class PageCycler(legacy_page_test.LegacyPageTest):
-
- def __init__(self, page_repeat, pageset_repeat, cold_load_percent=50,
- report_speed_index=False, clear_cache_before_each_run=False):
- super(PageCycler, self).__init__(
- clear_cache_before_each_run=clear_cache_before_each_run)
-
- with open(os.path.join(os.path.dirname(__file__),
- 'page_cycler.js'), 'r') as f:
- self._page_cycler_js = f.read()
-
- self._report_speed_index = report_speed_index
- self._speedindex_metric = speedindex.SpeedIndexMetric()
- self._memory_metric = None
- self._power_metric = None
- self._cpu_metric = None
- self._has_loaded_page = collections.defaultdict(int)
- self._initial_renderer_url = None # to avoid cross-renderer navigation
-
- cold_runs_percent_set = (cold_load_percent != None)
- # Handle requests for cold cache runs
- if (cold_runs_percent_set and
- (cold_load_percent < 0 or cold_load_percent > 100)):
- raise Exception('cold-load-percent must be in the range [0-100]')
-
- # Make sure _cold_run_start_index is an integer multiple of page_repeat.
- # Without this, --pageset_shuffle + --page_repeat could lead to
- # assertion failures on _started_warm in WillNavigateToPage.
- if cold_runs_percent_set:
- number_warm_pageset_runs = int(
- (int(pageset_repeat) - 1) * (100 - cold_load_percent) / 100)
- number_warm_runs = number_warm_pageset_runs * page_repeat
- self._cold_run_start_index = number_warm_runs + page_repeat
- else:
- self._cold_run_start_index = pageset_repeat * page_repeat
-
- def WillStartBrowser(self, platform):
- """Initialize metrics once right before the browser has been launched."""
- self._power_metric = power.PowerMetric(platform)
-
- def DidStartBrowser(self, browser):
- """Initialize metrics once right after the browser has been launched."""
- self._memory_metric = memory.MemoryMetric(browser)
- self._cpu_metric = cpu.CpuMetric(browser)
-
- def WillNavigateToPage(self, page, tab):
- if page.is_file:
- # For legacy page cyclers which use the filesystem, do an initial
- # navigate to avoid paying for a cross-renderer navigation.
- initial_url = tab.browser.platform.http_server.UrlOf('nonexistent.html')
- if self._initial_renderer_url != initial_url:
- self._initial_renderer_url = initial_url
- tab.Navigate(self._initial_renderer_url)
-
- page.script_to_evaluate_on_commit = self._page_cycler_js
- if self.ShouldRunCold(page.url):
- tab.ClearCache(force=True)
- if self._report_speed_index:
- self._speedindex_metric.Start(page, tab)
- self._cpu_metric.Start(page, tab)
- self._power_metric.Start(page, tab)
-
- def DidNavigateToPage(self, page, tab):
- self._memory_metric.Start(page, tab)
-
- def CustomizeBrowserOptions(self, options):
- memory.MemoryMetric.CustomizeBrowserOptions(options)
- power.PowerMetric.CustomizeBrowserOptions(options)
- options.AppendExtraBrowserArgs('--js-flags=--expose_gc')
-
- if self._report_speed_index:
- self._speedindex_metric.CustomizeBrowserOptions(options)
-
- keychain_metric.KeychainMetric.CustomizeBrowserOptions(options)
-
- def ValidateAndMeasurePage(self, page, tab, results):
- tab.WaitForJavaScriptExpression('__pc_load_time', 60)
-
- chart_name_prefix = ('cold_' if self.IsRunCold(page.url) else
- 'warm_')
-
- results.AddValue(scalar.ScalarValue(
- results.current_page, '%stimes-page_load_time' % chart_name_prefix,
- 'ms', tab.EvaluateJavaScript('__pc_load_time'),
- description='Average page load time. Measured from '
- 'performance.timing.navigationStart until the completion '
- 'time of a layout after the window.load event. Cold times '
- 'are the times when the page is loaded cold, i.e. without '
- 'loading it before, and warm times are times when the '
- 'page is loaded after being loaded previously.'))
- results.AddValue(scalar.ScalarValue(
- results.current_page, '%stimes-time_to_onload' % chart_name_prefix,
- 'ms', tab.EvaluateJavaScript('performance.timing.loadEventStart'
- '- performance.timing.navigationStart'),
- description='Time to onload. This is temporary metric to check that '
- 'PCv1 and PCv2 emit similar results'))
-
- # TODO(kouhei): Remove below. crbug.com/616342
- results.AddValue(scalar.ScalarValue(
- results.current_page, '%stimes.page_load_time' % chart_name_prefix,
- 'ms', tab.EvaluateJavaScript('__pc_load_time'),
- description='Average page load time. Measured from '
- 'performance.timing.navigationStart until the completion '
- 'time of a layout after the window.load event. Cold times '
- 'are the times when the page is loaded cold, i.e. without '
- 'loading it before, and warm times are times when the '
- 'page is loaded after being loaded previously.'))
- results.AddValue(scalar.ScalarValue(
- results.current_page, '%stimes.time_to_onload' % chart_name_prefix,
- 'ms', tab.EvaluateJavaScript('performance.timing.loadEventStart'
- '- performance.timing.navigationStart'),
- description='Time to onload. This is temporary metric to check that '
- 'PCv1 and PCv2 emit similar results'))
-
- self._has_loaded_page[page.url] += 1
-
- self._power_metric.Stop(page, tab)
- self._memory_metric.Stop(page, tab)
- self._memory_metric.AddResults(tab, results)
- self._power_metric.AddResults(tab, results)
-
- self._cpu_metric.Stop(page, tab)
- self._cpu_metric.AddResults(tab, results)
-
- if self._report_speed_index:
- def SpeedIndexIsFinished():
- return self._speedindex_metric.IsFinished(tab)
- util.WaitFor(SpeedIndexIsFinished, 60)
- self._speedindex_metric.Stop(page, tab)
- self._speedindex_metric.AddResults(
- tab, results, chart_name=chart_name_prefix + 'speed_index')
- keychain_metric.KeychainMetric().AddResults(tab, results)
-
- def IsRunCold(self, url):
- return self.ShouldRunCold(url) or self._has_loaded_page[url] == 0
-
- def ShouldRunCold(self, url):
- # We do the warm runs first for two reasons. The first is so we can
- # preserve any initial profile cache for as long as possible.
- # The second is that, if we did cold runs first, we'd have a transition
- # page set during which we wanted the run for each URL to both
- # contribute to the cold data and warm the catch for the following
- # warm run, and clearing the cache before the load of the following
- # URL would eliminate the intended warmup for the previous URL.
- return self._has_loaded_page[url] >= self._cold_run_start_index
-
- def DidRunPage(self, platform):
- del platform # unused
- self._power_metric.Close()
« no previous file with comments | « tools/perf/benchmarks/page_cycler.py ('k') | tools/perf/measurements/page_cycler_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698