2010-10-19 34 views
3

This guide優化數據綁定說:如何避免「綁定到大型CLR對象」?

有一個顯著的性能影響時,數據綁定到成千上萬性質的單片CLR對象。您可以通過將單個對象劃分爲具有較少屬性的多個CLR對象來將這種影響降至最低。

  1. 這是什麼意思?我仍然試圖熟悉DataBinding,但我的類比是屬性就像SQL表字段,對象是行。然後這個建議轉化爲「避免大量字段的問題,使用更少的字段並創建更多的行」。由於這對我來說沒有任何意義,可能我對數據綁定的理解是完全歪斜的?

  2. 這個建議是否適用?我不確定它是否特定於.NET 4/WPF,而我正在使用3.5和基於自定義WinForms的控件庫(DevExpress)

  3. 另外:我正確思考DataBinding在使用IList時使用反射風格的數據源?

這不只是一個學術問題。我目前正在嘗試加速使用大約50個屬性的約100,000個對象加載XtraGridView(DevExpress控件)。

回答

2

這個建議,然後轉化爲「以避免出現問題有大量的字段,使用較少的領域,創造更多的行」

我認爲應該翻譯成「用更少的字段,創建更小「(即使用較少的字段)。原來的建議應該是「將單一課程分成多個課程」,而且屬性較少。正如你正確地指出,創建更多的「行」是沒有意義的...

無論如何,如果你有一個暴露數百或數千屬性的類,你有一個更嚴重的問題比裝訂性能...這是一個嚴重的設計缺陷,你應該在閱讀some OO principles後修復。

這個建議是否適用?我不能確定它是否是特定於.NET 4/WPF,而我使用的3.5和基於定製的WinForms控件庫(DevExpress的)

嗯,你提到的是關於WPF,但頁面我認爲這個想法結合更小的物體可以應用到的WinForms太(因爲更多的屬性需要被關注,就越慢會)

順便說一句:我在想數據綁定正確使用IList的風格數據源時使用反射?

你是部分正確的......它實際上使用了TypeDescriptor,它反過來使用反射來檢查常規的CLR對象。但是這種機制比反射更靈活:一種類型可以實現ICustomTypeDescriptor來提供自己的描述,成員列表等等(DataTable就是這種類型的一個例子)

+0

該類可能暴露50個 - 但它專門存在於數據綁定中,實際上由一系列其他共享語義鏈接的類組成 – fostandy 2010-10-19 13:35:08

2

你正在解決錯誤的問題。這將需要一個典型的用戶遠遠超過找回她正在尋找什麼時,她有5 百萬字段進行搜索。你的用戶界面的速度變得無關緊要。只有一臺機器才能更好地找回數據。

你有一個。通過讓用戶輸入搜索條件來幫助用戶縮小搜索範圍,以便總查詢結果不超過100行。數據庫引擎可以幫助您快速完成任務。它會自動解決您的網格性能問題。

+0

我不確定在哪裏給出了我使用DataGridView允許的印象一個用戶搜索的東西 - 我不是。我用它來顯示一大堆信息。用戶目前正在查看具有100k行和50個場的大型Excel電子表格。我想在我的應用程序中顯示相同的信息,並添加一些增值(能夠將每個對象/行鏈接回我的應用程序的其他元素) – fostandy 2010-10-19 13:28:50