-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Measure invalidation performance and fixes #24532
Measure invalidation performance and fixes #24532
Conversation
ca4b0a7
to
5b65d84
Compare
@albyrock87 I'm quite interested on your phrase: " due to legacy layouts (which includes ContentView)" , the example has a CollectionView with a DataTemplate , that has a ContentView as a parent - should we have better performance, in having for instance, DataTemplates with a Grid / Border as a parent? |
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
5b65d84
to
2d0c694
Compare
@bcaceiro after this PR it shouldn't matter if you use ContentView or not. |
f5239da
to
b2874d6
Compare
var request = new Size(size.Request.Width + Padding.HorizontalThickness, size.Request.Height + Padding.VerticalThickness); | ||
var minimum = new Size(size.Minimum.Width + Padding.HorizontalThickness, size.Minimum.Height + Padding.VerticalThickness); | ||
|
||
DesiredSize = request; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Base method sets DesiredSize
so the fact this was missing was simply wrong.
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
b2874d6
to
a8780b1
Compare
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
a8780b1
to
3153543
Compare
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
- Do not bubble up `MeasureInvalidated` on pages - Invoke `MeasureInvalidated` just once when `BindingContext` is changing - Do not synchronously measure/arrange children on legacy layout upon child measure invalidated: simply wait for the next native layout pass
… switch branches
…parent correctly
…e to invalidate parent chain through the platform view on `ScrollView` (iOS)
2628e98
to
b9e69c7
Compare
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
/azp run |
Azure Pipelines successfully started running 3 pipeline(s). |
Closing in favor of #25664 |
Description of Change
Initial proposal to solve #24551 .
I executed a speedscope on davidortinau/AllTheLists
LearningPage
using the latest nightly8.0.99-ci.net8.24468.1
build.What I noticed is that #23052
OnChildMeasureInvalidatedInternal
was showing up and taking 2% of total time (recursive calls).What I've done:
Handler = null
)SetNeedsLayout
propagation issues and cleans up detection of autoSetNeedsLayout
parent propagation withIPropagatesSetNeedsLayout
internal interfaceWinUI Speedscope
Kindly provided by @MartyIX
Before
main
1726819823.MAIN.speedscope.json
After
PR
1726819948.PR.speedscope.json
Before
main
1726819865.MAIN.speedscope.json
After
PR
1726819973.PR.speedscope.json
iOS Speedscope
Before
main
before.speedscope.json.zip
After
PR
after.speedscope.json.zip
Issues Fixed
Fixes #24551