Closed anton-yashin closed 11 months ago
@microsoft-github-policy-service agree
/azp run
Verified that it builds here: https://dev.azure.com/xamarin/public/_build/results?buildId=76544&view=results
Hey @anton-yashin thank you so much for this. I would LOVE to take this, but unfortunately at this point in the Xamarin.Forms lifecycle that's not possible because it adds new APIs and that's not something we still want to do.
I know it's been a while, but if you're interested, please have a look at .NET MAUI and see if this is the case there also as well, we would love to get these benefits there. Thank you again so much for your efforts. It's really appreciated!
Description of Change
Because Xamarin.iOS uses a reflection to provide arguments in callbacks as decribed here. This PR provides a custom NSIndexPath wrapper to avoid reflection calling in ItemsViewDelegator.GetSizeForItem. Performance boost is 12x on Simulator or 17x on iPhone.
Issues Resolved
API Changes
Added:
Changed:
Platforms Affected
Behavioral/Visual Changes
None
Before/After Screenshots
Not applicable
Testing Procedure
Test page for control gallery Issue13429 is provided, UITest included. You may able to run this test from VS. Because this is performance issue you may want to place some different timing depending on your hardware. Current timings is applicable for iPhone 11 and mac mini 2018 i5/16GB. See EXPECTED_TIMEOUT constant at Issue13429 test page. If you want to run this test through control gallery, then launch test, then tap "Add", "Remove" or "Replace" button. Test will show you how much time is taken by operation in milliseconds.
PR Checklist