Implement scrolling performance metrics
- Dominant language
- C#
- Stars
- 23.3k
- Forks
- 2k
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 290
Description
### Description
The current scrolling performance testing for MAUI is in a separate repository (https://github.com/jonathanpeppers/maui-scrolling-performance). This issue proposes to migrate this project into the dotnet/maui repository and establish proper performance testing infrastructure for scroll performance.
## Proposed Solution
1. Migrate the [maui-scrolling-performance](https://github.com/jonathanpeppers/maui-scrolling-performance) project to dotnet/maui repository
2. Integrate with existing test infrastructure
3. Create automated performance tests for scroll performance
4. Add documentation for the performance test methodology
## Implementation Details
### Migration Steps
1. Create a new directory under `src/TestUtils/src/Microsoft.Maui.PerformanceTests` or similar location
2. Port the existing code from jonathanpeppers/maui-scrolling-performance
3. Update project references and namespaces
### Test Infrastructure
1. Develop a standardized framework for measuring scrolling metrics:
- Frames per second (FPS)
- Frame time consistency
- Memory usage during scrolling
- CPU usage during scrolling
2. Add test cases for different scenarios:
- ListView with various item templates
- CollectionView with different layouts
- ScrollView with various content
- Grid-based scrolling
- Different platforms comparison (iOS, Android, Windows)
### Integration with CI/CD
1. Add performance tests to the testing pipeline
2. Establish baseline performance metrics
3. Configure alerts for performance regressions
## Benefits
- Early detection of performance regressions
- Better understanding of scrolling performance across platforms
- Ability to measure improvements in scrolling performance
- Standardized methodology for testing and reporting scroll performance
## Related Work
- [maui-scrolling-performance](https://github.com/jonathanpeppers/maui-scrolling-performance) repository
- Existing performance testing infrastructure in dotnet/maui
## Additional Information
The original repository uses a specialized UI testing approach with frame counting and provides detailed performance metrics for different control types. This approach should be preserved while integrating with the existing test infrastructure.
### Public API Changes
None
### Intended Use-Case
Currently, there's no standardized way to test and validate scroll performance in MAUI applications within the main repository. The external repository by Jonathan Peppers provides a solution for this, but having it integrated into the main repository would allow for:
1. Consistent performance testing as part of CI/CD
2. Early detection of performance regressions
3. Benchmark capabilities for performance improvements
4. Better documentation of scroll performance characteristics
Contributor guide
Research direction
Start by reviewing the external maui-scrolling-performance repository and the existing performance testing infrastructure in dotnet/maui. Inspect src/TestUtils/src/Microsoft.Maui.PerformanceTests or the appropriate location, then map the migration, platform scenarios, metrics, CI integration, baselines, alerts, and methodology documentation. Done means the project is integrated and automated scroll-performance coverage reports the proposed metrics across the stated platforms.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- ci-cd, mobile-dev, performance, testing-qa
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100