diff options
author | qyearsley@chromium.org <qyearsley@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-15 23:58:54 +0000 |
---|---|---|
committer | qyearsley@chromium.org <qyearsley@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-15 23:58:54 +0000 |
commit | 7d42af629597fb2406f48f13b1eb4c3a2583cac0 (patch) | |
tree | 3d2d2f942f8f5264a4706baed97b1b17037fc2d2 /tools | |
parent | 4b772ff15da1b101cb46b7469370fe0ae86c1860 (diff) | |
download | chromium_src-7d42af629597fb2406f48f13b1eb4c3a2583cac0.zip chromium_src-7d42af629597fb2406f48f13b1eb4c3a2583cac0.tar.gz chromium_src-7d42af629597fb2406f48f13b1eb4c3a2583cac0.tar.bz2 |
Make TimelineMetric a subclass of Metric
BUG=
Review URL: https://chromiumcodereview.appspot.com/22223002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217870 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/measurements/loading_timeline.py | 9 | ||||
-rw-r--r-- | tools/perf/measurements/loading_trace.py | 10 | ||||
-rw-r--r-- | tools/perf/metrics/timeline.py | 22 |
3 files changed, 22 insertions, 19 deletions
diff --git a/tools/perf/measurements/loading_timeline.py b/tools/perf/measurements/loading_timeline.py index 9ec9e70..113f2e1 100644 --- a/tools/perf/measurements/loading_timeline.py +++ b/tools/perf/measurements/loading_timeline.py @@ -9,15 +9,14 @@ from telemetry.page import page_measurement class LoadingTimeline(page_measurement.PageMeasurement): def __init__(self, *args, **kwargs): super(LoadingTimeline, self).__init__(*args, **kwargs) - self._metrics = None + self._timeline_metric = timeline.TimelineMetric(timeline.TIMELINE_MODE) @property def results_are_the_same_on_every_page(self): return False def WillNavigateToPage(self, page, tab): - self._metrics = timeline.TimelineMetrics(timeline.TIMELINE_MODE) - self._metrics.Start(tab) + self._timeline_metric.Start(page, tab) def MeasurePage(self, page, tab, results): # In current telemetry tests, all tests wait for DocumentComplete state, @@ -28,7 +27,7 @@ class LoadingTimeline(page_measurement.PageMeasurement): # TODO(nduca): when crbug.com/168431 is fixed, modify the page sets to # recognize loading as a toplevel action. - self._metrics.Stop(tab) + self._timeline_metric.Stop(page, tab) loading.LoadingMetric().AddResults(tab, results) - self._metrics.AddResults(results) + self._timeline_metric.AddResults(tab, results) diff --git a/tools/perf/measurements/loading_trace.py b/tools/perf/measurements/loading_trace.py index 68f241b..16d9300 100644 --- a/tools/perf/measurements/loading_trace.py +++ b/tools/perf/measurements/loading_trace.py @@ -9,15 +9,14 @@ from telemetry.page import page_measurement class LoadingTrace(page_measurement.PageMeasurement): def __init__(self, *args, **kwargs): super(LoadingTrace, self).__init__(*args, **kwargs) - self._metrics = None + self._timeline_metric = timeline.TimelineMetric(timeline.TRACING_MODE) @property def results_are_the_same_on_every_page(self): return False def WillNavigateToPage(self, page, tab): - self._metrics = timeline.TimelineMetrics(timeline.TRACING_MODE) - self._metrics.Start(tab) + self._timeline_metric.Start(page, tab) def MeasurePage(self, page, tab, results): # In current telemetry tests, all tests wait for DocumentComplete state, @@ -28,7 +27,8 @@ class LoadingTrace(page_measurement.PageMeasurement): # TODO(nduca): when crbug.com/168431 is fixed, modify the page sets to # recognize loading as a toplevel action. - self._metrics.Stop(tab) + self._timeline_metric.Stop(page, tab) loading.LoadingMetric().AddResults(tab, results) - self._metrics.AddResults(results) + self._timeline_metric.AddResults(tab, results) + diff --git a/tools/perf/metrics/timeline.py b/tools/perf/metrics/timeline.py index 37bc3e6..6462646 100644 --- a/tools/perf/metrics/timeline.py +++ b/tools/perf/metrics/timeline.py @@ -3,17 +3,20 @@ # found in the LICENSE file. import collections +from metrics import Metric + TRACING_MODE = 'tracing-mode' TIMELINE_MODE = 'timeline-mode' -class TimelineMetrics(object): +class TimelineMetric(Metric): def __init__(self, mode): assert mode in (TRACING_MODE, TIMELINE_MODE) + super(TimelineMetric, self).__init__() self._mode = mode self._model = None self._thread_for_tab = None - def Start(self, tab): + def Start(self, page, tab): self._model = None self._thread_for_tab = None @@ -25,7 +28,7 @@ class TimelineMetrics(object): assert self._mode == TIMELINE_MODE tab.StartTimelineRecording() - def Stop(self, tab): + def Stop(self, page, tab): if self._mode == TRACING_MODE: # This creates an async trace event in the render process for tab that # will allow us to find that tab during the AddTracingResultsForTab @@ -49,7 +52,7 @@ class TimelineMetrics(object): self._model = tab.timeline_model self._thread_for_tab = self._model.GetAllThreads()[0] - def AddResults(self, results): + def AddResults(self, tab, results): assert self._model events = self._thread_for_tab.all_slices @@ -58,10 +61,11 @@ class TimelineMetrics(object): for e in events: events_by_name[e.name].append(e) - for key, group in events_by_name.items(): - times = [e.self_time for e in group] + for event_name, event_group in events_by_name.iteritems(): + times = [event.self_time for event in event_group] total = sum(times) biggest_jank = max(times) - results.Add(key, 'ms', total) - results.Add(key + '_max', 'ms', biggest_jank) - results.Add(key + '_avg', 'ms', total / len(times)) + results.Add(event_name, 'ms', total) + results.Add(event_name + '_max', 'ms', biggest_jank) + results.Add(event_name + '_avg', 'ms', total / len(times)) + |