Frank Niessink wrote:

> I've been working on better performance. Task Coach no longer uses the
> treemixin module. The "virtual" treemixin was pretty slow, slower even
> than simply recreating the tree whenever it changes. So I've
> simplified the tree controls. They now simply recreate the whole tree
> whenever items are added or removed or when the sort order changes.

> I think it's a bit faster now, but the difference is not that big. So,
> I want to introduce one more optimization by only adding children to
> tree items when the parent item is actually expanded.

Compared to the last time I tried, there are huge improvements. Showing 
completed tasks on my work todo list used to take minutes; now it takes 
about 6 seconds (to show 835 tasks). There are some actions that take 
much longer (~6s) when all 835 tasks are shown:

  * Opening the "View" menu
  * Marking a task complete/deleting it/creating a new one

Putting some traces, I can see that the ~6s are spent (when showing 
completed tasks) in RefreshAll(). Unfortunately, the HyperTreeCtrl 
control does not have a Freeze/Thaw pair (other than the one inherited 
from wx.Control), which would probably help. I'll try a quick hack to 
see if it does.

Cheers
Jérôme

Reply via email to