ETO gridview slow on windows

In this tool I’m developing I am using an ETO GriedView to display data.

The tool uses a form (ETO.Forms.Dialog) , modeless by setting it to Rhino.UI.RhinoEtoApp.MainWindow if that matters.
The table work well, is sortable, but feels very slow, with just a couple of columns and about 200 rows. I compared the same tool on a macbook (i9) and it’s much, much faster there. Is there anything I need to be aware of to get the table to behave fluently on Windows as well?
If I switch from just a few rows to about 200 it takes more than 2 seconds to refresh. If needed I can share the script in pm.

Hi @Gijs,

how do you draw the alternating row colors ? Does it get faster without ?

_
c.

hi @clement thanks for having a look. I disabled it but it makes no difference. In fact I measured the execution time of the code that runs to refresh the list and it takes <0.1 seconds but then it still takes a while for the list to refresh. Here’s a screen recording showing the behavior:

see how much faster it is on the Mac:

Maybe @curtisw could help here.

Maybe this topic can help you …

@kitjmv thanks but I don’t see in that thread a pointer for a solution?
I might be able to truncate the data and speed it up this way. But still 200 items isn’t that many.

@curtisw I noticed while testing on the Mac that the scrollbars don’t work well, I had to scale the window to make them show up, and after clicking outside, they disappear and only reactivate once I scale the window again.

Yes me neither :slight_smile: except that there are some side effects with using WPF in ETO.
In my case if a row was selected the scrolling was horrible.

In your case.
When starting the application (if the “All” option is selected by default) does the display appear quickly ?
If so, your issue is resolved like mine, find the setting (or settingS) to “reset” before making any changes to the list.

no, it makes no difference, the slowness is linear with the amount of items I’m surprised though that you can display 600.000 items

you can test with a very bad and old code source:

I cloned your repository but it says it was missing stuff…:

Libx.Blender.Viewer\Libx.Blender.Viewer.csproj : error : Project file is incomplete. Expected imports are missing.

I see, let’s wait for response from @curtisw.

_
c.

@Gijs - do you have a sample, that we can run here, that demonstrates the ‘slowness’?

Thanks,

– Dale

@dale, see attached example (400 rows) is already unworkable here:
test_dialog.py (4.2 KB)

Thanks @Gijs, I’m looking at this.

– D

Hi @Gijs, this line is causing the slowdown:

#layout.BeginScrollable(forms.BorderType.None, drawing.Padding(0), drawing.Size(15,5))

once i commented it out, it loads and sorts much faster, tested on windows. Did you add this for mac ?
_
c.

good find! :slight_smile:

That’s a huge difference, thanks. What I noticed though is that with the BeginScrollable the scrolling is more fluent than without, do you see that too?

@clement but there’s a catch: if I disable it in my tool, the grid will not be scrollable, since I only want the grid to be scrollable and the rest to stay in place.

Yes, same here… still poking around. EndScrollable() is missing btw. but that’s not causing the slowdown.

Yeah, this is of course different in this example where the grid fills the whole dialog, it automatically adds the scrollbars without the Scrollable. I’ve first tried to make only a forms.Scrollable() and then set the grid to it’s Content, then add it to the layout, but this also causes the slowdown…

_
c.

strangely enough, in my tool, removing the scrollable does not help… :man_facepalming: