Commit 6fb30d31 authored by Peter Kvitek's avatar Peter Kvitek Committed by Commit Bot

Improved DevTools Performance metrics collection.

Changed ScriptDuration to exclude recalc style and layout durations.

Introduced OtherTasksDuration metrics that tracks task time that is
is not accounted for in other metrics.

Change-Id: Id68d8eaaf4fa0264eeae7995d71632e71b212537
Reviewed-on: https://chromium-review.googlesource.com/1244245Reviewed-by: default avatarAlexei Filippov <alph@chromium.org>
Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Commit-Queue: Peter Kvitek <kvitekp@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594449}
parent cd2146dc
......@@ -28,6 +28,7 @@ Resources
ScriptDuration
ScriptPromises
TaskDuration
TaskOtherDuration
Timestamp
UACSSResources
V8CompileDuration
......
......@@ -26,6 +26,7 @@ title: test1
ScriptDuration
V8CompileDuration
TaskDuration
TaskOtherDuration
JSHeapUsedSize
JSHeapTotalSize
FirstMeaningfulPaint
......@@ -58,6 +59,7 @@ title: test1
ScriptDuration
V8CompileDuration
TaskDuration
TaskOtherDuration
JSHeapUsedSize
JSHeapTotalSize
FirstMeaningfulPaint
......@@ -90,6 +92,7 @@ title:
ScriptDuration
V8CompileDuration
TaskDuration
TaskOtherDuration
JSHeapUsedSize
JSHeapTotalSize
FirstMeaningfulPaint
......
......@@ -135,6 +135,13 @@ Response InspectorPerformanceAgent::getMetrics(
task_duration += now - task_start_ticks_;
AppendMetric(result.get(), "TaskDuration", task_duration.InSecondsF());
// Compute task time not accounted for by other metrics.
TimeDelta other_tasks_duration =
task_duration -
(script_duration + recalc_style_duration_ + layout_duration_);
AppendMetric(result.get(), "TaskOtherDuration",
other_tasks_duration.InSecondsF());
v8::HeapStatistics heap_statistics;
V8PerIsolateData::MainThreadIsolate()->GetHeapStatistics(&heap_statistics);
AppendMetric(result.get(), "JSHeapUsedSize",
......@@ -201,8 +208,16 @@ void InspectorPerformanceAgent::Will(const probe::RecalculateStyle& probe) {
}
void InspectorPerformanceAgent::Did(const probe::RecalculateStyle& probe) {
recalc_style_duration_ += GetTimeTicksNow() - recalc_style_start_ticks_;
TimeDelta delta = GetTimeTicksNow() - recalc_style_start_ticks_;
recalc_style_duration_ += delta;
recalc_style_count_++;
recalc_style_start_ticks_ = TimeTicks();
// Exclude nested style re-calculations from script and layout duration.
if (!script_start_ticks_.is_null())
script_start_ticks_ += delta;
if (!layout_start_ticks_.is_null())
layout_start_ticks_ += delta;
}
void InspectorPerformanceAgent::Will(const probe::UpdateLayout& probe) {
......@@ -213,8 +228,17 @@ void InspectorPerformanceAgent::Will(const probe::UpdateLayout& probe) {
void InspectorPerformanceAgent::Did(const probe::UpdateLayout& probe) {
if (--layout_depth_)
return;
layout_duration_ += GetTimeTicksNow() - layout_start_ticks_;
TimeDelta delta = GetTimeTicksNow() - layout_start_ticks_;
layout_duration_ += delta;
layout_count_++;
layout_start_ticks_ = TimeTicks();
// Exclude nested layout update from script and style re-calculations
// duration.
if (!script_start_ticks_.is_null())
script_start_ticks_ += delta;
if (!recalc_style_start_ticks_.is_null())
recalc_style_start_ticks_ += delta;
}
void InspectorPerformanceAgent::Will(const probe::V8Compile& probe) {
......
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