2014-02-11 20 views
0

上清除Sort-/GroupDescriptions的性能在對應用程序進行分析後,我發現清除ICollectionViewGroupDescriptionsSortDescriptions集合非常昂貴,我不明白這是爲什麼。看起來清理似乎比應用組或分類描述要耗費更多的時間。在ICollectionView

爲了進一步調查,我用了一個秒錶,發現了1000個項目,清理了一批說明了只要〜300毫秒,同時增加了新的組描述了〜30毫秒。我還試圖推遲刷新視圖,同時更換組描述(即刪除舊的,添加一個新的),但這並沒有改變任何東西。單個添加/刪除調用立即返回,但刷新只要不推遲就可以進行。

我還觀察到,如果沒有一個組描述活性,排序行爲與預期相同,即結算和排序分別爲幾ms,結算是特別快。在應用組描述的情況下,清除排序描述(〜1000ms)需要使用新描述(〜300ms)的三倍。除了這是一般的糟糕表現之外,我只是看不到複雜性在這裏爆發的地方,尤其是清理。

所以,我會非常感激,如果有人可以解釋這種行爲給我。另外,如果你有一個想法如何加快速度,請分享。

+0

您能向我們展示您的演示嗎?有很多你可以做錯用ICollectionView。讓我們看看你是如何使用它。 –

+1

分組禁用UI虛擬化=>即使內容不可見,所有內容也將在內部呈現。如果您使用.NET Framework 4.5,請嘗試設置VirtualizingPanel.IsVirtualizingWhenGrouping爲true – pindumb

+0

@pindumb我嘗試了分組虛擬化設置,並且它對性能沒有顯着影響。掀起一個演示可能需要一段時間,我會嘗試 –

回答

1

正如評論所指出的pindumb,業績下滑從默認禁用虛擬化分組莖(即虛擬化是默認啓用的,但是下降,一旦你組的數據)。只需將VirtualizingPanel.IsVirtualizingWhenGrouping="True"[msdn](自.NET 4.5起可用)添加到顯示數據和性能的ListBox按預期工作。