2015-06-10 136 views
6

什麼是一個大集合,例如結合更快,個人觀察集合VS篩選觀察到的集合表現

要求 - 電子交易應用:

價格吸墨紙 - 顯示行情/供應商對於不同的證券,例如。

主視圖 - 顯示所有引號。

Country View - 顯示屬於特定國家的證券的報價/交易。例如。英國/法國等。

當前 - 我們有可觀察到的每個視圖的集合,並且當價格從服務器到達時,我們會根據過濾器發送副本給每個Observable集合,即一個到Master視圖,並基於國家例如國家視圖。

問題:即使CollectionViewsource在添加/刪除價格時需要刷新,過濾的observable集合也會優於此模型。刷新CollectionView源是否會增加任何性能損失。

上面的例子僅供參考,可以有多達20個不同的視圖,多達20-50K,具有5-6K獨特價格,每個價格的盤中價格都非常大。應用程序對GUI性能的要求很高。

我打算用輕量級Tableview替換當前的Datagrid,想知道單個主Observable集合是否也會有所幫助。

很多感謝您的意見。

+0

您希望用戶在任何時刻打開多少個視圖?如果您有一個主觀察集合,並且您從集合中添加/刪除項目,那麼對該集合的所有**引用將更新其綁定元素。假設您已打開20個視圖,即需要使用20個UI更新。 –

+0

我們假設 - 所有20個視圖。記事簿是每個視圖都是Tab的控件。 所有對視圖的引用都會更新綁定的元素,這很好 - 但底層的「Filtered」CollectionView將會過濾記錄,不是嗎? 例如Master Observable Collection有5個記錄(英國,德國,美國,西班牙,意大利) - 主視圖顯示全部5個英國顯示器1等。添加了新的元素(英國),Master將有6個,英國將有2個,其他的仍然爲空,等等。 目前已經實現使用每個視圖具有它自己的ObS上傳消息層根據國家和視圖類型路由到適當的視圖,例如。 –

+0

您是否嘗試過使用ICollectionView來顯示單個可觀察集合的過濾表示形式。在UI控件上啓用虛擬化,即使有大量數據,性能也應該很好。 – kenjara

回答

0

刷新CollectionViewSource對性能可能非常不利,因爲它會導致重新生成視圖中的項目和項目容器(請參閱下一句中的鏈接以供參考)。這就是WPF中有Editable Collections的全部原因。我曾經爲產品實施了大量可修改的集合,而我在使用IEditableCollectionView時從未遇到性能問題,但這並不是說它對於您的應用來說可能不夠快。

我的猜測是,如果您使用的是IEditableCollectionView,如果您將集合拆分或將它們放在一個應用了不同過濾器的巨型集合中,則無關緊要。