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

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

Issue 2885563002: Remove blink_style benchmarks (Closed)
Patch Set: Created 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/perf/benchmarks/blink_style.py ('k') | tools/perf/measurements/blink_style_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/measurements/blink_style.py
diff --git a/tools/perf/measurements/blink_style.py b/tools/perf/measurements/blink_style.py
deleted file mode 100644
index dae97c74cf8044df1892dda356579e3c9605d728..0000000000000000000000000000000000000000
--- a/tools/perf/measurements/blink_style.py
+++ /dev/null
@@ -1,144 +0,0 @@
-# Copyright 2015 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.
-
-from collections import defaultdict
-from itertools import starmap
-from telemetry.core import util
-from telemetry.page import legacy_page_test
-from telemetry.value import scalar
-
-from measurements import timeline_controller
-import py_utils
-
-
-class BlinkStyle(legacy_page_test.LegacyPageTest):
-
- def __init__(self):
- super(BlinkStyle, self).__init__()
- self._controller = None
-
- def WillNavigateToPage(self, page, tab):
- self._controller = timeline_controller.TimelineController()
- self._controller.trace_categories = 'blink_style,blink.console'
- self._controller.SetUp(page, tab)
- self._controller.Start(tab)
-
- def DidRunPage(self, platform):
- if self._controller:
- self._controller.CleanUp(platform)
-
- def ValidateAndMeasurePage(self, page, tab, results):
- with tab.action_runner.CreateInteraction('wait-for-quiescence'):
- tab.ExecuteJavaScript('console.time("");')
- try:
- util.WaitFor(tab.HasReachedQuiescence, 15)
- except py_utils.TimeoutException:
- # Some sites never reach quiesence. As this benchmark normalizes/
- # categories results, it shouldn't be necessary to reach the same
- # state on every run.
- pass
-
- tab.ExecuteJavaScript('''
- for (var i = 0; i < 11; i++) {
- var cold = i % 2 == 0;
- var name = "update_style";
- if (cold) name += "_cold";
- console.time(name);
- // Occasionally documents will break the APIs we need
- try {
- // On cold runs, force a new StyleResolver
- if (cold) {
- var style = document.createElement("style");
- document.head.appendChild(style);
- style.remove();
- }
- // Invalidate style for the whole document
- document.documentElement.lang += "z";
- // Force a style update (but not layout)
- getComputedStyle(document.documentElement).color;
- } catch (e) {}
- console.timeEnd(name);
- }''')
-
- self._controller.Stop(tab, results)
- renderer = self._controller.model.GetRendererThreadFromTabId(tab.id)
- markers = [event for event in renderer.async_slices
- if event.name.startswith('update_style')
- and event.category == 'blink.console']
- # Drop the first run.
- markers = markers[1:]
- assert len(markers) == 10
-
- def duration(event):
- if event.has_thread_timestamps:
- return event.thread_duration
- else:
- return event.duration
-
- for marker in markers:
- for event in renderer.all_slices:
- if (event.name == 'Document::updateStyle'
- and event.start >= marker.start
- and event.end <= marker.end):
- access_count = event.args.get('resolverAccessCount')
- if access_count is None:
- # absent in earlier versions
- continue
- min_access_count = 50
-
- if access_count >= min_access_count:
- result = 1000 * (duration(event) / access_count)
- results.AddValue(scalar.ScalarValue(
- page, marker.name, 'ms/1000 elements', result))
-
- class ParserEvent(object):
-
- def __init__(self, summary_event, tokenize_event, parse_event):
- min_sheet_length = 1000
- ua_sheet_mode = 5
- enormous_token_threshold = 100
- large_token_threshold = 5
-
- self.mode = summary_event.args.get('mode')
- self.length = summary_event.args.get('length')
- self.tokens = summary_event.args.get('tokenCount')
- self.tokenize_duration = duration(tokenize_event)
- self.parse_duration = duration(parse_event)
- self.chars_per_token = 0
- if self.tokens:
- self.chars_per_token = self.length / float(self.tokens)
- if self.mode == ua_sheet_mode or self.length < min_sheet_length:
- self.category = 'ignored'
- elif self.chars_per_token > enormous_token_threshold:
- self.category = 'enormous_tokens'
- elif self.chars_per_token > large_token_threshold:
- self.category = 'large_tokens'
- else:
- self.category = 'regular'
-
- parser_events = [event for event in renderer.all_slices
- if event.name == 'CSSParserImpl::parseStyleSheet'
- or event.name == 'CSSParserImpl::parseStyleSheet.tokenize'
- or event.name == 'CSSParserImpl::parseStyleSheet.parse']
-
- merged_events = starmap(ParserEvent, zip(*[iter(parser_events)] * 3))
-
- events_by_category = defaultdict(list)
- for event in merged_events:
- if event.category != 'ignored':
- events_by_category[event.category].append(event)
-
- for category, events in events_by_category.items():
- parse_duration = sum(event.parse_duration for event in events)
- tokenize_duration = sum(event.tokenize_duration for event in events)
- tokens = sum(event.tokens for event in events)
- length = sum(event.length for event in events)
-
- results.AddValue(
- scalar.ScalarValue(page, ('parse_css_%s' % category),
- 'tokens/s', 1000 / (parse_duration / tokens)))
-
- results.AddValue(
- scalar.ScalarValue(page, ('tokenize_css_%s' % category),
- 'char/s', 1000 / (tokenize_duration / length)))
« no previous file with comments | « tools/perf/benchmarks/blink_style.py ('k') | tools/perf/measurements/blink_style_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698