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

Unified Diff: tools/perf/benchmarks/blink_perf.py

Issue 2883603002: Use the new tracing based measurement for blink_perf.paint (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 | « third_party/WebKit/PerformanceTests/Paint/transform-changes.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/benchmarks/blink_perf.py
diff --git a/tools/perf/benchmarks/blink_perf.py b/tools/perf/benchmarks/blink_perf.py
index 413735ee15276aebe24a047741c5e8143a6eb535..ad5fe9bd134485d0fda56bf7119b15f0f7709a8f 100644
--- a/tools/perf/benchmarks/blink_perf.py
+++ b/tools/perf/benchmarks/blink_perf.py
@@ -7,6 +7,8 @@ import os
from core import path_util
from core import perf_benchmark
+from page_sets import webgl_supported_shared_state
+
from telemetry import benchmark
from telemetry import page as page_module
from telemetry.page import legacy_page_test
@@ -17,14 +19,9 @@ from telemetry.timeline import model as model_module
from telemetry.timeline import tracing_config
from telemetry.value import list_of_scalar_values
-from telemetry.value import scalar
from telemetry.value import trace
-from measurements import timeline_controller
-from page_sets import webgl_supported_shared_state
-
-
BLINK_PERF_BASE_DIR = os.path.join(path_util.GetChromiumSrcDir(),
'third_party', 'WebKit', 'PerformanceTests')
SKIPPED_FILE = os.path.join(BLINK_PERF_BASE_DIR, 'Skipped')
@@ -139,6 +136,8 @@ def _ComputeTraceEventsThreadTimeForBlinkPerf(
class _BlinkPerfMeasurement(legacy_page_test.LegacyPageTest):
"""Tuns a blink performance test and reports the results."""
+ trace_event_to_metric_map = {}
+
def __init__(self):
super(_BlinkPerfMeasurement, self).__init__()
with open(os.path.join(os.path.dirname(__file__),
@@ -198,8 +197,12 @@ class _BlinkPerfMeasurement(legacy_page_test.LegacyPageTest):
if cpu_times:
avg = sum(cpu_times)/len(cpu_times)
print 'avg', '{0:.10f}'.format(avg), unit
+ if self.trace_event_to_metric_map:
+ metric_name = self.trace_event_to_metric_map[trace_event_name]
+ else:
+ metric_name = trace_event_name
results.AddValue(list_of_scalar_values.ListOfScalarValues(
- results.current_page, name=trace_event_name, units=unit,
+ results.current_page, name=metric_name, units=unit,
values=cpu_times))
print
print '\n'
@@ -242,48 +245,6 @@ class _BlinkPerfMeasurement(legacy_page_test.LegacyPageTest):
self.PrintAndCollectTraceEventMetrics(trace_cpu_time_metrics, results)
-# TODO(wangxianzhu): Convert the paint benchmarks to use the new blink_perf
-# tracing once it's ready.
-class _BlinkPerfPaintMeasurement(_BlinkPerfMeasurement):
- """Also collects prePaint and paint timing from traces."""
-
- def __init__(self):
- super(_BlinkPerfPaintMeasurement, self).__init__()
- self._controller = None
-
- def WillNavigateToPage(self, page, tab):
- super(_BlinkPerfPaintMeasurement, self).WillNavigateToPage(page, tab)
- self._controller = timeline_controller.TimelineController()
- self._controller.trace_categories = 'blink,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):
- super(_BlinkPerfPaintMeasurement, self).ValidateAndMeasurePage(
- page, tab, results)
- self._controller.Stop(tab, results)
- renderer = self._controller.model.GetRendererThreadFromTabId(tab.id)
- # The marker marks the beginning and ending of the measured runs.
- marker = next(event for event in renderer.async_slices
- if event.name == 'blink_perf'
- and event.category == 'blink.console')
- assert marker
-
- for event in renderer.all_slices:
- if event.start < marker.start or event.end > marker.end:
- continue
- if event.name == 'FrameView::prePaint':
- results.AddValue(
- scalar.ScalarValue(page, 'prePaint', 'ms', event.duration))
- if event.name == 'FrameView::paintTree':
- results.AddValue(
- scalar.ScalarValue(page, 'paint', 'ms', event.duration))
-
-
class _BlinkPerfBenchmark(perf_benchmark.PerfBenchmark):
test = _BlinkPerfMeasurement
@@ -377,7 +338,13 @@ class BlinkPerfLayout(_BlinkPerfBenchmark):
@benchmark.Owner(emails=['wangxianzhu@chromium.org'])
class BlinkPerfPaint(_BlinkPerfBenchmark):
- test = _BlinkPerfPaintMeasurement
+ class _PaintMeasurement(_BlinkPerfMeasurement):
+ trace_event_to_metric_map = {
+ 'FrameView::prePaint' : 'prePaint',
nednguyen 2017/05/12 21:45:30 Besides the data continuity problem, do you think
+ 'FrameView::paintTree' : 'paint',
+ }
+
+ test = _PaintMeasurement
tag = 'paint'
subdir = 'Paint'
« no previous file with comments | « third_party/WebKit/PerformanceTests/Paint/transform-changes.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698