cogentcore / core

A free and open source framework for building powerful, fast, elegant 2D and 3D apps that run on macOS, Windows, Linux, iOS, Android, and the web with a single Go codebase, allowing you to Code Once, Run Everywhere.
http://cogentcore.org/core
BSD 3-Clause "New" or "Revised" License
1.73k stars 82 forks source link

Table performance with 100,000 rows #1128

Open runrc opened 2 months ago

runrc commented 2 months ago

Describe the feature

I have been experimenting with Cogent Core for our needs and have encountered possible performance issues which would be useful if addressed. Our requirements deal with large amounts of data.

For example, create a table with two fields and 100,000 rows and scroll the table, the redraw is laggy. Now, I know 100,000 rows is a lot, but just wondering, as the API stabilises - is now is the time to address and improve performance across all widgets?

An interim solution is to filter the data before adding to the table which is probably what we'll do, but I was interested in the thoughts of the team regarding profiling and improving performance and whether this is planned?

Relevant code

No response

kkoreilly commented 2 months ago

We have plans to optimize performance in general soon (#659), although we are currently focusing on more pressing feature additions and bug fixes (mostly WebGPU (#507) and GopherJS (#974) right now). However, independent of that, the table is designed to only configure and render the widgets currently being viewed, so the performance should be good even with 100,000 rows. However, when I tested it (using the same code as #1130), it does seem to be pretty laggy. We will look into that and see why it is not performing as it should.