Skip to content
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

Performance issue #130

Closed
sensboston opened this issue Nov 1, 2023 · 6 comments
Closed

Performance issue #130

sensboston opened this issue Nov 1, 2023 · 6 comments

Comments

@sensboston
Copy link

sensboston commented Nov 1, 2023

I planned to use Maui.DataGrid as a simple and easy to use data logger: receive some data, add data to the ObservableCollection, and scroll data grid to the end (i.e. to the added row, without pagination), i.e. display dynamical data. Sounds like a pretty simple and straightforward task, isn't it?

But it looks like Maui.DataGrid redraws all data collection all the time 😒 and of course it's a huge performance and UI usability (it "blinks" all the time) issue.

Might be, I'm using this control improperly or this control isn't good for dynamic data. Any suggestions?

P.S. As far as I remember, it wasn't issue at all on UWP, WPF and WinForms; even 25 years ago I was able to add thousands values per second to MS Excel from the external application (using C API). There is NO REASON at all redraw all items if new record/row added, you need to redraw just a visible ones (if they are changed).

@symbiogenesis
Copy link
Collaborator

This is largely a MAUI issue because we are just using standard MAUI controls. Nothing too fancy. Open up a bug report with MAUI if you care to.

You can fork this repo and use the Sample project as a demonstration.

@sensboston
Copy link
Author

I've switched to Syncfusion's SfDataGrid (also got a free community license for all their controls) - it works like a charm, performance is great and have a way more features. There is nothing wrong with the Maui but architecture and implementation of this datagrid is bad.

@symbiogenesis
Copy link
Collaborator

symbiogenesis commented Nov 23, 2023

SfDataGrid wrote its own custom platform-specific renderers, and doesn't make use of the built-in MAUI controls. By contrast, Maui.DataGrid is a free and open source library that is intentionally just making use of the official MAUI controls. These controls do have numerous known performance issues.

The built-in CollectionView control we are using has multiple open Issues and PRs that are not in the released version of MAUI for .NET 8

dotnet/maui#18813
dotnet/maui#18464
dotnet/maui#18856

dotnet/maui#18505
dotnet/maui#18510

I'm happy you solved your problem by using a proprietary control, instead of our free and open source library.

Please don't insult our work.

PRs welcome.

@enkaradag
Copy link

I've switched to Syncfusion's SfDataGrid (also got a free community license for all their controls) - it works like a charm, performance is great and have a way more features. There is nothing wrong with the Maui but architecture and implementation of this datagrid is bad.

i tested syncfusion's sfdatagrid component afew months ago. It had performance problems for ios and maccatalyst like laggy scroll behavior (add 1000 rows and 10 columns see what happens) so given up using it. I don't know they fixed it or not after that

for .net8 collectionview, when a sample data is binded to generic maui CollectionView, control loads visible rows at first, than in a few seconds it starts to load all data. That behavior freezes ui and lacks performance. That is an obvious bug of maui. Added to sr1 plan already. Waiting for a solution for this.

See

dotnet/maui#18639
dotnet/maui#18913

Regards

@sensboston
Copy link
Author

@enkaradag, currently I'm using SfDataGrid for Android & Windows, no performance issues found. Yesterday I keep apps running overnight to collect data, this morning I was able to scroll/continue acquisition etc. with more than 46,000 data records. Haven't tried on iOS or Mac.

@symbiogenesis
Copy link
Collaborator

symbiogenesis commented Mar 23, 2024

I was able to make various performance improvements. The current main branch of this library should be a lot faster, upstream issues notwithstanding. But these changes are not in the latest release that is available on nuget (4.0.1)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants