New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 758219 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug-Regression



Sign in to add a comment

11.2% regression in blink_perf.bindings at 495050:495096

Project Member Reported by nzolghadr@chromium.org, Aug 23 2017

Issue description

See the link to graphs below.
 
Project Member

Comment 1 by 42576172...@developer.gserviceaccount.com, Aug 23 2017

All graphs for this bug:
  https://chromeperf.appspot.com/group_report?bug_id=758219

(For debugging:) Original alerts at time of bug-filing:
  https://chromeperf.appspot.com/group_report?sid=a85897be348506c66944cbe26758d874ae2273995aa07936247d7a35949346fa


Bot(s) for this bug's original alert(s):

chromium-rel-mac11-pro
Project Member

Comment 3 by 42576172...@developer.gserviceaccount.com, Aug 23 2017

Cc: dmazz...@chromium.org
Owner: dmazz...@chromium.org
Status: Assigned (was: Untriaged)

=== Auto-CCing suspected CL author dmazzoni@chromium.org ===

Hi dmazzoni@chromium.org, the bisect results pointed to your CL, please take a look at the
results.


=== BISECT JOB RESULTS ===
Perf regression found with culprit

Suspected Commit
  Author : Dominic Mazzoni
  Commit : 91ce4a5c047cf0a01f7d23c839bd4364428fa6ad
  Date   : Thu Aug 17 04:47:27 2017
  Subject: Add use counters for all ARIA attributes.

Bisect Details
  Configuration: mac_pro_perf_bisect
  Benchmark    : blink_perf.bindings
  Metric       : set-attribute-rare/set-attribute-rare
  Change       : 12.92% | 788.630668685 -> 686.721942751

Revision             Result                  N
chromium@495049      788.631 +- 7.39741      6      good
chromium@495073      787.827 +- 43.379       6      good
chromium@495075      797.511 +- 4.36357      6      good
chromium@495076      733.206 +- 6.64231      6      bad       <--
chromium@495079      731.951 +- 6.43327      6      bad
chromium@495085      728.725 +- 8.48136      6      bad
chromium@495096      686.722 +- 5.74705      6      bad

To Run This Test
  src/tools/perf/run_benchmark -v --browser=release --output-format=chartjson --upload-results --pageset-repeat=1 --also-run-disabled-tests blink_perf.bindings

More information on addressing performance regressions:
  http://g.co/ChromePerformanceRegressions

Debug information about this bisect:
  https://chromeperf.appspot.com/buildbucket_job_status/8970458341272156208


For feedback, file a bug with component Speed>Bisection
Cc: tkent@chromium.org
Code review for the relevant change:

https://chromium-review.googlesource.com/c/chromium/src/+/614642

Project Member

Comment 5 by 42576172...@developer.gserviceaccount.com, Aug 23 2017

 Issue 758226  has been merged into this issue.
Project Member

Comment 6 by 42576172...@developer.gserviceaccount.com, Aug 23 2017

 Issue 758227  has been merged into this issue.
Project Member

Comment 7 by 42576172...@developer.gserviceaccount.com, Aug 23 2017

 Issue 758216  has been merged into this issue.
Project Member

Comment 8 by 42576172...@developer.gserviceaccount.com, Aug 23 2017

 Issue 758220  has been merged into this issue.
I can reproduce locally. Just skipping the namespace and shadow
check doesn't help, but if I combine it with the event name
lookup above I can make the whole function faster.

Stay tuned, I'll try to upload a good fix.

Here's my proposed fix:

https://chromium-review.googlesource.com/c/chromium/src/+/633915

Feedback / drive-by reviews welcome.

Project Member

Comment 11 by bugdroid1@chromium.org, Aug 25 2017

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

commit 023904779abd234c473cc04f7d6e008715fc839f
Author: Dominic Mazzoni <dmazzoni@chromium.org>
Date: Fri Aug 25 05:20:35 2017

Optimize HTMLElement::ParseAttribute

Revision r495076 added some more use counters to HTMLElement::ParseAttribute,
but they regressed some performance benchmarks.

Optimize it by merging 6 conditionals and 2 hash lookups into a single hash
lookup that maps to a struct containing 3 possible triggers for any parsed
attribute:

* An event name
* A WebFeature for a use counter
* A HTMLElement member function to call

Local benchmarks show that with this change, the set-attribute-rare benchmark
is even faster than before r495076 landed.

Bug:  758219 
Change-Id: I7b4333be8360efaf7eda73a0be4fefc56a8a8a58
Reviewed-on: https://chromium-review.googlesource.com/633915
Reviewed-by: Kent Tamura <tkent@chromium.org>
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#497327}
[modify] https://crrev.com/023904779abd234c473cc04f7d6e008715fc839f/third_party/WebKit/Source/core/html/HTMLElement.cpp
[modify] https://crrev.com/023904779abd234c473cc04f7d6e008715fc839f/third_party/WebKit/Source/core/html/HTMLElement.h

Status: Fixed (was: Assigned)
Project Member

Comment 13 by 42576172...@developer.gserviceaccount.com, Aug 29 2017

Cc: kraynov@chromium.org
 Issue 759731  has been merged into this issue.

Sign in to add a comment