New issue
Advanced search Search tips

Issue 813827 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug-Regression



Sign in to add a comment

13ms startup performance regression in FindBarIcon::FindBarIcon()

Project Member Reported by wittman@chromium.org, Feb 20 2018

Issue description

Data from the UMA Sampling Profiler shows that FindBarIcon::FindBarIcon() regressed browser process UI thread startup on 64-bit Chrome on Windows by 13ms. This occurred in the 66.0.3350.0 Canary release.

The responsible CL appears to be https://chromium.googlesource.com/chromium/src.git/+/49074912451707d0f0e935934f70174cc21490a4

Execution profile difference of Canary 66.0.3349.0 vs. 66.0.3350.0: https://uma.googleplex.com/p/chrome/callstacks?sid=043c3e4a11540fe7f74843dfec33a0e8

 
This appears to be due to eagerly loading the IDS_TOOLTIP_FIND resource at object construction.
@wittman, is this really a P1? 13ms is not noticeable is it?
Also, we have lots of UI code that gets a resource and sets a tooltip in the constructor.
Example: https://cs.chromium.org/chromium/src/chrome/browser/ui/views/find_bar_view.cc?type=cs&sq=package:chromium&l=125 

Why does getting the resource take so long?
If 1000 different developers all concluded that their 10ms regression is not big enough, then Chrome start up would slow down by 10s.

I think if there's a clear cause of a regression identified, then effort should be made to fix it if it can be done in a reasonable way. If it's not feasible at all, then it could be discussed to see if we live with it.

But I don't think we should just dismiss it outright if the fix can be pretty simple (e.g. delaying loading until needed).
What Alexei said is the reason for calling out and fixing even smaller regressions.

Getting the resource is taking this long because it's being loaded from disk via the memory mapped resource file access. If the page containing a resource has already been loaded then loading it is cheap. If not, it's expensive, as in this case.

The execution profile link was intended to highlight the specific regression, but it looks like it's not doing that. Here's the specific function, which shows a 17ms regression after collecting all data for the release: https://uma.googleplex.com/p/chrome/callstacks?sid=f9a6e0de09d27777a5749de59db586c3
Ok, I understand. Just wanted to understand why this same pattern isn't a problem elsewhere. I know how to fix, thanks.
Also did not see "startup" at first. I thought it was a regression in the find dialog coming up... Apologies :)
Cc: asvitk...@chromium.org
did this regress total startup performance or did it just move the first page fault in the resource bundle to a different caller?

I think the fix for this is to update startup_resources_win.txt -- we will probably find some other performance gains. It was last updated in r452042 -- over year ago.  asvitkine@?
It regressed total startup performance, most likely by faulting in a page during startup that had previously only been faulted-in for the first time post-startup.

If the fault had shifted from one place to another during startup, the regression detection we're using would have also detected the improvement in the other part of the code.
Project Member

Comment 10 by bugdroid1@chromium.org, Apr 10 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f237caf07d28641030467730e7a808170bd3d519

commit f237caf07d28641030467730e7a808170bd3d519
Author: Aaron Leventhal <aleventhal@chromium.org>
Date: Tue Apr 10 15:51:51 2018

Fix 13-17ms startup performance regression in find bar icon constructor

Fetching the tooltip in the find bar icon's constructor is causing a
startup regression. Wait to fetch it once the find bar icon becomes
visible for the first time.

Bug:  813827 
Change-Id: I87d03a6e986d14793e0f5b21781e23cc8fd28549
Reviewed-on: https://chromium-review.googlesource.com/956422
Commit-Queue: Aaron Leventhal <aleventhal@chromium.org>
Reviewed-by: Takashi Toyoshima <toyoshim@chromium.org>
Reviewed-by: Vasilii Sukhanov <vasilii@chromium.org>
Reviewed-by: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549546}
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/app/generated_resources.grd
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/autofill/save_card_icon_view.cc
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/autofill/save_card_icon_view.h
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/bubble_icon_view.cc
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/bubble_icon_view.h
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/find_bar_icon.cc
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/find_bar_icon.h
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/intent_picker_view.cc
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/intent_picker_view.h
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/star_view.cc
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/star_view.h
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/zoom_view.cc
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/location_bar/zoom_view.h
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/passwords/manage_passwords_icon_views.cc
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/passwords/manage_passwords_icon_views.h
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/translate/translate_icon_view.cc
[modify] https://crrev.com/f237caf07d28641030467730e7a808170bd3d519/chrome/browser/ui/views/translate/translate_icon_view.h

Status: Fixed (was: Assigned)

Sign in to add a comment