dotnet / dotnet/maui

Implement scrolling performance metrics

Open
#29,065 5 comments 2 reactions 0 assignees View on GitHub
area-testing proposal/open s/triaged
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.