geomatics-io / ObjectListView

ObjectListView is a .NET ListView wired on caffeine, guarana and steroids. More calmly, it is a C# wrapper around a .NET ListView, which makes the ListView much easier to use and teaches it lots of neat new tricks.
http://objectlistview.sourceforge.net/cs/index.html
GNU General Public License v3.0
115 stars 59 forks source link

Performance problem with FastObjectListView #1

Open CanadianHusky opened 5 years ago

CanadianHusky commented 5 years ago

Hello,

are you able to resolve the scrolling performance issue mentioned in these threads of the original control ?

https://sourceforge.net/p/objectlistview/discussion/812922/thread/1d466b3b75/

Your ObjectListView fork suffers from the same Problem

Test case : FastObjectListview : 10 text columns, 1000 rows with a hardcoded most simple aspectgetter - a simple string

To create the Problem - Hold the Keyboard down arrow and watch what happens in Task Manager when the control needs to scroll. CPU Time maxes out on the main UI thread. The videos in the link above show the problem as well. Scrolling goes lines by line and UI Thread is locked so bad that no other meaningful operations can be performed when the down/up arrows are kept pressed and the control is scrolling.

Try the same with 20 columns and the control becomes unusable and is anything but "fast"

Try disabling all columns (hide) and leave only the first - scroll now...that is the desired scroll performance.

I am willing to make a donation to the Person/Team that can make a super responsive FastObjectListview (using the base ObjectListview 2.9.1+ code/features) that has no scrolling problem with 20 columns

Thank you kindly

christianjunk commented 4 years ago

@CanadianHusky The problem should now have been solved. I released v2.9.2 here at GitHub and at the MyGet feed: https://www.myget.org/feed/geomatics/package/nuget/ObjectListView.Official. For testing I have used an object with 10 properties and a list with 10.000 entries.

CanadianHusky commented 4 years ago

I am currently downloading your latest code and will report back, thank you very much

christianjunk commented 4 years ago

I will also upload a demo project in a few minutes ...

CanadianHusky commented 4 years ago

Unfortunately there is no significant performance improvement based on my test

Here is a minimalistic demo app in action image

holding the arrow button down shows an open/closed box on odd/even rows. as soon as the control needs to scroll on the vertical axis (downwards or upwards), CPU time is maxed out on the main thread and the box image does not change and any application events are not executed anymore

here is the demo app exe and your latest dll 2.9.2.21800 installed via NuGet https://www.dropbox.com/s/5k7u48awitkx0bi/Release.zip?dl=0

here is the source code of the demo app for your own testing. you will see that the aspect getters and the setup code of the Listview cannot get any simpler https://www.dropbox.com/s/qh0jifugraajw0k/PT_FOLV%20for%20PP.zip?dl=0

if you link my demo app against OLV 2.1 you will see lightning fast difference

christianjunk commented 4 years ago

Please take a look at the following demo code: https://www.dropbox.com/s/6al5e3k79c2df3t/2019-09-24%40143857_ObjectListViewIssue1.7z?dl=0

CanadianHusky commented 4 years ago

I reviewed your sample your sample scrolls indeed faster. It is however generated with generic objects and autogenerated columns, and no aspect getters. Meaning it is a proof of concept. I will investigate further as my sample, closer to a real world app, behaves different (and slower) than your sample. thank you

mat02 commented 4 years ago

To follow up this topic. Since introduction of FastListView in https://github.com/geomatics-io/ObjectListView/commit/268db1d8c484a3c0a0ec4069026cdd52384439eb FastObjectListView seems to have dropped support for features like Hot Items, Alternate row back color, Checkbox rendering in boolean columns and so on. Is this intentional? Is there any way to keep this features while still using FastListView as ObjectListView base for speed?

perplexityjeff commented 3 years ago

I would have liked to have a fix for this as well. The FastObjectListView could be so much better.