summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authormiletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-31 22:14:14 +0000
committermiletus@chromium.org <miletus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-31 22:14:14 +0000
commit24ce0000834fc461cf05779aab683eeb10fde931 (patch)
treef7bc6e2978c594d8ae6c40520d126b041e802fe7 /content
parentaa1255b3ab9d58bb4cddb28c2af52e91b1ee3d75 (diff)
downloadchromium_src-24ce0000834fc461cf05779aab683eeb10fde931.zip
chromium_src-24ce0000834fc461cf05779aab683eeb10fde931.tar.gz
chromium_src-24ce0000834fc461cf05779aab683eeb10fde931.tar.bz2
Fix a few latency related UMA calculation
1. When using input event's LatencyInfo to compute latency related UMA metric (Event.Latency.RendererImpl.GestureScroll & Event.Latency.TouchToScrollUpdateSwap) the current implementation counts the averaged latency component as just 1 sample. This underestimates the latency component's contribution to the UMA metric when the latency component's event_count is larger than 1. The correct way is to add |event_count| samples to the UMA metric distribution. 2. When set the touch event's acked time as INPUT_EVENT_LATENCY_ACKED_COMPONENT, current implementation loops through the uncoalesced touch event list and call the HighResNow() for each touch event. But actually all the events are acked at the same time as a whole coalesced event, they should have the same acked timestamp. BUG=None. TEST=1. On Pixel, do touchscreen scrolling on page www.rbyers.net/janky-touch-scroll.html 2. Check in chrome://histograms/ that average Event.Latency.TouchToScrollUpdateSwap > average Event.Latency.RendererImpl > average Event.Latency.Browser.TouchAcked Review URL: https://chromiumcodereview.appspot.com/20155005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214833 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/input/touch_event_queue.cc5
-rw-r--r--content/browser/renderer_host/render_widget_host_impl.cc14
-rw-r--r--content/renderer/gpu/input_handler_proxy.cc15
3 files changed, 20 insertions, 14 deletions
diff --git a/content/browser/renderer_host/input/touch_event_queue.cc b/content/browser/renderer_host/input/touch_event_queue.cc
index 0a7b1d4..56500e6 100644
--- a/content/browser/renderer_host/input/touch_event_queue.cc
+++ b/content/browser/renderer_host/input/touch_event_queue.cc
@@ -188,12 +188,13 @@ void TouchEventQueue::PopTouchEventWithAck(InputEventAckState ack_result) {
// to the renderer, or touch-events being queued.
base::AutoReset<bool> dispatching_touch_ack(&dispatching_touch_ack_, true);
+ base::TimeTicks now = base::TimeTicks::HighResNow();
for (WebTouchEventWithLatencyList::const_iterator iter = acked_event->begin(),
end = acked_event->end();
iter != end; ++iter) {
ui::LatencyInfo* latency = const_cast<ui::LatencyInfo*>(&(iter->latency));
- latency->AddLatencyNumber(
- ui::INPUT_EVENT_LATENCY_ACKED_COMPONENT, 0, 0);
+ latency->AddLatencyNumberWithTimestamp(
+ ui::INPUT_EVENT_LATENCY_ACKED_COMPONENT, 0, 0, now, 1);
client_->OnTouchEventAck((*iter), ack_result);
}
}
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index c08d897..858447c 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -2439,12 +2439,14 @@ void RenderWidgetHostImpl::FrameSwapped(const ui::LatencyInfo& latency_info) {
// results in final frame swap.
base::TimeDelta delta =
latency_info.swap_timestamp - original_component.event_time;
- UMA_HISTOGRAM_CUSTOM_COUNTS(
- "Event.Latency.TouchToScrollUpdateSwap",
- delta.InMicroseconds(),
- 0,
- 1000000,
- 100);
+ for (size_t i = 0; i < original_component.event_count; i++) {
+ UMA_HISTOGRAM_CUSTOM_COUNTS(
+ "Event.Latency.TouchToScrollUpdateSwap",
+ delta.InMicroseconds(),
+ 0,
+ 1000000,
+ 100);
+ }
rendering_stats_.scroll_update_count += original_component.event_count;
rendering_stats_.total_scroll_update_latency +=
original_component.event_count *
diff --git a/content/renderer/gpu/input_handler_proxy.cc b/content/renderer/gpu/input_handler_proxy.cc
index 74cc6d1..1d9bb07 100644
--- a/content/renderer/gpu/input_handler_proxy.cc
+++ b/content/renderer/gpu/input_handler_proxy.cc
@@ -36,12 +36,15 @@ void SendScrollLatencyUma(const WebInputEvent& event,
if (it == latency_info.latency_components.end())
return;
- UMA_HISTOGRAM_CUSTOM_COUNTS(
- "Event.Latency.RendererImpl.GestureScroll",
- (base::TimeTicks::HighResNow() - it->second.event_time).InMicroseconds(),
- 0,
- 200000,
- 100);
+ base::TimeDelta delta = base::TimeTicks::HighResNow() - it->second.event_time;
+ for (size_t i = 0; i < it->second.event_count; ++i) {
+ UMA_HISTOGRAM_CUSTOM_COUNTS(
+ "Event.Latency.RendererImpl.GestureScroll",
+ delta.InMicroseconds(),
+ 0,
+ 200000,
+ 100);
+ }
} // namespace
}