Commit f884f308 authored by nduca@chromium.org's avatar nduca@chromium.org

Benchmark to characterize main thread usage during load

This uses inspector timeline and telemetry to get an estimate of time consumption during page load.

NOTRY=True

Review URL: https://chromiumcodereview.appspot.com/11791043

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176132 0039d316-1c4b-4281-b951-d872f2087c98
parent 1044d59f
# Copyright (c) 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.
import collections
from telemetry import multi_page_benchmark
class LoadingBenchmark(multi_page_benchmark.MultiPageBenchmark):
@property
def results_are_the_same_on_every_page(self):
return False
def WillNavigateToPage(self, page, tab):
tab.timeline.Start()
def MeasurePage(self, page, tab, results):
# In current telemetry tests, all tests wait for DocumentComplete state.
#
# TODO(nduca): when crbug.com/168431 is fixed, modify the page sets to
# recognize loading as a toplevel action.
tab.timeline.Stop()
events = tab.timeline.timeline_model.GetAllEvents()
events_by_name = collections.defaultdict(list)
for e in events:
events_by_name[e.name].append(e)
for key, group in events_by_name.items():
times = [e.self_time_ms for e in 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))
# Copyright (c) 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.
from telemetry import multi_page_benchmark_unittest_base
from perf_tools import loading_benchmark
class SmoothnessBenchmarkUnitTest(
multi_page_benchmark_unittest_base.MultiPageBenchmarkUnitTestBase):
def testBasicFunctionality(self):
ps = self.CreatePageSetFromFileInUnittestDataDir('blank.html')
benchmark = loading_benchmark.LoadingBenchmark()
all_results = self.RunBenchmark(benchmark, ps)
self.assertEqual(0, len(all_results.page_failures))
self.assertEqual(1, len(all_results.page_results))
results0 = all_results.page_results[0]
self.assertTrue(results0['Layout'].value > 0)
self.assertTrue(results0['Paint'].value > 0)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment