Closed
Bug 1230448
Opened 9 years ago
Closed 9 years ago
2~5% TP5 scroll regression on inbound (v.45) from bug 1226118
Categories
(Core :: DOM: Animation, defect)
Core
DOM: Animation
Tracking
()
RESOLVED
DUPLICATE
of bug 1230056
Tracking | Status | |
---|---|---|
firefox45 | --- | affected |
People
(Reporter: birtles, Assigned: birtles)
References
Details
(Keywords: perf, regression, Whiteboard: [talos_regression])
Regression: Mozilla-Inbound-Non-PGO - TP5 Scroll - WINNT 5.1 (e10s) - 3.54% increase
------------------------------------------------------------------------------------
Previous: avg 8.281 stddev 0.091 of 12 runs up to revision f3741d47fb6b7e9eceac5078686707fc8f0136df
New : avg 8.573 stddev 0.073 of 12 runs since revision 462a51797af1901934d422606a6a090cdb96bab0
Change : +0.293 (3.54% / z=3.204)
Graph : http://mzl.la/1O6RZiM
Regression: Mozilla-Inbound-Non-PGO - TP5 Scroll - WINNT 6.2 x64 (e10s) - 4.32% increase
----------------------------------------------------------------------------------------
Previous: avg 5.474 stddev 0.044 of 12 runs up to revision f3741d47fb6b7e9eceac5078686707fc8f0136df
New : avg 5.711 stddev 0.077 of 12 runs since revision 462a51797af1901934d422606a6a090cdb96bab0
Change : +0.236 (4.32% / z=5.351)
Graph : http://mzl.la/1O6S463
Regression: Mozilla-Inbound-Non-PGO - TP5 Scroll - Ubuntu HW 12.04 x64 (e10s) - 3.1% increase
---------------------------------------------------------------------------------------------
Previous: avg 6.502 stddev 0.049 of 12 runs up to revision f3741d47fb6b7e9eceac5078686707fc8f0136df
New : avg 6.703 stddev 0.034 of 12 runs since revision 462a51797af1901934d422606a6a090cdb96bab0
Change : +0.202 (3.1% / z=4.107)
Graph : http://mzl.la/1O6S3yR
Regression: Mozilla-Inbound-Non-PGO - TP5 Scroll - WINNT 6.1 (ix) (e10s) - 4.32% increase
-----------------------------------------------------------------------------------------
Previous: avg 6.950 stddev 0.075 of 12 runs up to revision f3741d47fb6b7e9eceac5078686707fc8f0136df
New : avg 7.250 stddev 0.097 of 12 runs since revision 462a51797af1901934d422606a6a090cdb96bab0
Change : +0.300 (4.32% / z=4.003)
Graph : http://mzl.la/1HJPExn
Regression: Mozilla-Inbound-Non-PGO - TP5 Scroll - WINNT 5.1 (ix) - 3.43% increase
----------------------------------------------------------------------------------
Previous: avg 4.108 stddev 0.033 of 12 runs up to revision f3741d47fb6b7e9eceac5078686707fc8f0136df
New : avg 4.249 stddev 0.025 of 12 runs since revision 462a51797af1901934d422606a6a090cdb96bab0
Change : +0.141 (3.43% / z=4.267)
Graph : http://mzl.la/1HJSjqZ
Assignee | ||
Comment 1•9 years ago
|
||
Currently bisecting on try (which would have been a lot faster if I realised tp5o_scroll is *not* in the tp5o suite!)
Assignee | ||
Comment 2•9 years ago
|
||
The regression seems to be introduced by parts 9 and 10 from bug 1226118.
https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=2043744de4f5&newProject=try&newRevision=1b7eb88a8093
https://hg.mozilla.org/integration/mozilla-inbound/rev/a23aff82ad55
https://hg.mozilla.org/integration/mozilla-inbound/rev/fdfecd674725
What's more surprising is that the bug 1230056, which was supposed to *improve* the performance of part 10, makes things even worse (although that Talos run included part 14 from bug 1226118 so it's possible that that is the cause).
Assignee | ||
Comment 3•9 years ago
|
||
I've pushed a try run with just up to part 9 to try to break this down further.
Possible causes:
* Array allocations are too costly
- Should we allocate to a likely upper-bound on initialization to save subsequent allocations?
- Are we not using the Move constructor and creating copies when we return?
* The ordering is different, especially for the no animations case.
For example, it may be that nsLayoutUtils::AreAsyncAnimationsEnabled() is expensive and with the new implementation of GetAnimationsForCompositor we call that *before* we check if there are any animations or not.
At this stage, I'm inclined to suspect the latter.
Specifically, we're comparing the new EffectCompositor::GetAnimationsForCompositor introduced here:
https://hg.mozilla.org/try/rev/f938c01b8917
With the old one removed here:
https://hg.mozilla.org/try/rev/e163a3a1dfb6
If we move the check for an empty effect set to the top (and specifically check for effects->IsEmpty() since we don't currently delete these properties when they are empty like we should), then we should roughly match the existing implementation's performance for the "no animations" case with the exception of initialiazing and moving an empty array object.
Assignee | ||
Comment 4•9 years ago
|
||
Try run with early-return moved up an applied after part 10:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=370687707363
Try run with the same applied after the optimization from bug 1230056:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=f7f9b2ead78b
Assignee | ||
Updated•9 years ago
|
Keywords: perf,
regression
Whiteboard: [talos_regression]
Assignee | ||
Comment 6•9 years ago
|
||
(In reply to Brian Birtles (:birtles) from comment #4)
> Try run with early-return moved up an applied after part 10:
> https://treeherder.mozilla.org/#/jobs?repo=try&revision=370687707363
>
> Try run with the same applied after the optimization from bug 1230056:
> https://treeherder.mozilla.org/#/jobs?repo=try&revision=f7f9b2ead78b
Trying again with the necessary method added.
Try run with early-return moved up an applied after part 10:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=7ffeeee08ca1
Try run with the same applied after the optimization from bug 1230056:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=0407fceffebe
Assignee | ||
Comment 7•9 years ago
|
||
So it looks like the proposed patch roughly halves the regression, but it's still significant.
Part 10 without patch (original regression):
https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=2043744de4f5&newProject=try&newRevision=1b7eb88a8093
Part 10 with patch:
https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=2043744de4f5&newProject=try&newRevision=7ffeeee08ca1
Comparing just the different the patch makes, it gives about a 1.7% improvement:
https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=1b7eb88a8093&newProject=try&newRevision=7ffeeee08ca1
Applied to the bug 1230056, the regression is still quite significant:
https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=2043744de4f5&newProject=try&newRevision=0407fceffebe
So this needs further investigation. I don't think I'll be able to finish it by Monday so we might have to back bug 1226118 out.
Assignee | ||
Comment 8•9 years ago
|
||
Breaking down the regression, it seems part 9 from bug 1226118 causes a 1.82% regression on windows 7 only (other platforms actually improved), but part 10 causes a further 3~4% regression.
So either we're calling GetMinAndMaxScaleForAnimationProperty a lot (seems unlikely) or nsLayoutUtils::HasAnimationsForCompositor is called a lot (more likely). Bug 1230056 really should have fixed HasAnimationsForCompositor but there seems to be a further regression from that patch (or alternative part 14 of the original bug).
So it doesn't seem like array allocation is the issue. Further things to try:
* Split up the changes in part 10 and see which part is actually causing the regression (in case GetMinAndMaxScaleForAnimationProperty really is the culprit after all).
* Try rewriting HasAnimationsForCompositor (from bug 1230056) without all the Function wrappers, optional callback function etc. and see if there's any improvement.
* Try reordering the conditions in HasAnimationsForCompositor in case there's some other change in order we're hitting (although I don't expect so--I'd expect it to be the "no animations" case that's causing the regression)
Comment 9•9 years ago
|
||
thanks for filing this- it sounds like you have a decent start on it!
Blocks: 1220148
Comment 10•9 years ago
|
||
one thing to keep in mind, we don't have to go for perfection- if we understand the regression and determine it is worth keeping what remains after the fix that is a fine decision to make.
Assignee | ||
Comment 11•9 years ago
|
||
Thanks Joel! I think we can fix this, or get close anyway. Applying bug 1230056 along with some fixes seems so far gives a 1.26% regression on windows8 and a 1.32% improvement on linux64 (still waiting for windows7). I still have to work out *why* some of those fixes help. In particular, I'm not sure why removing usage of mozilla::Function made such a big difference.
https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=2043744de4f5&newProject=try&newRevision=f54a3d4a7a81&showOnlyImportant=0
Assignee | ||
Comment 12•9 years ago
|
||
I've put patches up for review on bug 1230056 to fix this. Initial results look promising.
Performance improvement from bug 12300056:
https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=a8f2bfb7a55a&newProject=try&newRevision=ab4bffaeb0ad&showOnlyImportant=0
Compared to baseline prior to landing bug 1226118:
https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=312003c340f2&newProject=try&newRevision=c9acffdf0290&showOnlyImportant=0
Assignee | ||
Comment 13•9 years ago
|
||
Fixed by bug 1230056.
Comparison showing the difference after applying both bug 1226118 and bug 1230056:
https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=66e520cba75b&newProject=try&newRevision=902bc57e9a60&showOnlyImportant=0
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•