Opened 4 weeks ago

Last modified 4 weeks ago

#2758 reviewing enhancement

RunCollectionView is too slow

Reported by: mkommend Owned by: abeham
Priority: medium Milestone: HeuristicLab 3.3.15
Component: Optimization.Views Version: 3.3.14
Keywords: Cc:


I recently create run collection with over 100K runs. With the current implementation of the RunCollectionView it is impossible to work with such run collections, although the table view or bubble chart handle those amounts just fine.

Therefore, the RunCollectionView must be sped up. For testing purpose I have attached a run collection with ~ 10,000 runs.

Attachments (1)

RunCollection Test 10K.hl (798.3 KB) - added by mkommend 4 weeks ago.

Download all attachments as: .zip

Change History (4)

Changed 4 weeks ago by mkommend

comment:1 Changed 4 weeks ago by mkommend

  • Status changed from new to accepted

comment:2 Changed 4 weeks ago by mkommend

Maybe related to #1719 that talks about using virtual mode for the RunCollectionView.

comment:3 Changed 4 weeks ago by mkommend

  • Owner changed from mkommend to abeham
  • Status changed from accepted to reviewing

r14793: Improved performance of RunCollectionView and added runs counter.

The performance has been improved by the following changes:

  • Used a fixed image list containing only two images (run and empty) and reused those images. As a result I could remove the UpdateListViewItemImage method and the RunCollectionView does not react to image changes anymore. However, this has never been support for runs.
  • Accessed run.Name directly instead of run.ToString() in listview item creation
  • Used a fixed tool tip instead of accessing the ItemAttribute for every run
  • Used AddRange and Clear methods of itemlistView when adding or resetting the run collection. Removed AddListViewItem method.

Addditional thought: Item.ItemImageChanged is only support for optimizers (execution state overlay). However, every view has to register to this event and act accordingly. Maybe an interface IImageItem with the event would be appropriate.

Note: See TracTickets for help on using tickets.