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

Unified Diff: tools/telemetry/telemetry/web_perf/metrics/blob_timeline.py

Issue 1104053006: [Storage] Blob Storage perf tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Whoops, forgot timeline metric Created 5 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
Index: tools/telemetry/telemetry/web_perf/metrics/blob_timeline.py
diff --git a/tools/telemetry/telemetry/web_perf/metrics/blob_timeline.py b/tools/telemetry/telemetry/web_perf/metrics/blob_timeline.py
new file mode 100644
index 0000000000000000000000000000000000000000..6cdab5b6bf567ef49d3b06a2604c258848ad11da
--- /dev/null
+++ b/tools/telemetry/telemetry/web_perf/metrics/blob_timeline.py
@@ -0,0 +1,52 @@
+# 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 telemetry.value import list_of_scalar_values
+from telemetry.web_perf.metrics import timeline_based_metric
+
+class BlobTimelineMetric(timeline_based_metric.TimelineBasedMetric):
+ """Reports directly durations of FrameView::performLayout events.
+
+ layout: Durations of FrameView::performLayout events that were caused by and
+ start during user interaction.
+
+ Layout happens no more than once per frame, so per-frame-ness is implied.
+ """
+ WRITE_EVENT_NAME = 'Registry::RegisterBlob'
+ READ_EVENT_NAME = 'BlobRequest'
+
+ def __init__(self):
+ super(BlobTimelineMetric, self).__init__()
+
+ def AddResults(self, _model, renderer_thread, interactions, results):
+ assert interactions
+ self._AddResultsInternal(renderer_thread.parent.IterAllSlices(),
+ interactions, results)
+
+ def _AddResultsInternal(self, events, interactions, results):
+ reads = []
+ writes = []
+ for event in events:
+ if (event.name == self.WRITE_EVENT_NAME or
+ event.name == self.READ_EVENT_NAME) and any(
+ interaction.start <= event.start <= interaction.end
+ for interaction in interactions):
+ if (event.name == self.WRITE_EVENT_NAME):
+ writes.append(event.end - event.start)
+ elif (event.name == self.READ_EVENT_NAME):
+ reads.append(event.end - event.start)
+ if reads:
+ results.AddValue(list_of_scalar_values.ListOfScalarValues(
+ page=results.current_page,
+ name='blob_reads',
+ units='ms',
+ values=reads,
+ description=('List of durations of blob part reads (not whole blob).')))
+ if writes:
+ results.AddValue(list_of_scalar_values.ListOfScalarValues(
+ page=results.current_page,
+ name='blob_writes',
+ units='ms',
+ values=writes,
+ description=('List of durations of blob writes.')))

Powered by Google App Engine
This is Rietveld 408576698