WPF平臺(tái)Grid控件性能比較及測(cè)試結(jié)果
環(huán)境 本次測(cè)試的基準(zhǔn)創(chuàng)建于2016年6月,使用了以下Grid控件: 下的DataGrid (PresentationFramework.dll的一部分) C1FlexGrid 4.4
環(huán)境
本次測(cè)試的基準(zhǔn)創(chuàng)建于2016年6月,使用了以下Grid控件:
- 下的DataGrid (PresentationFramework.dll的一部分)
- C1FlexGrid 4.4.0.20162.514 (ComponentOne WPF版)
- C1DataGrid 4.4.0.20162.514 (ComponentOne WPF版)
- XamDataGrid v16.1.16.1.20161.1000 (WPF Controls - Infragistics)
- GridControl v15.2.15.2.10.0 (WPF Controls | DevExpress)
- SfDataGrid 14.1400.0.41 (Syncfusion Essential Studio WPF版)
- RadGridView 2016.2.503.40 (Telerik WPF Controls | UI WPF版)
- DataGridControl v5.9.5.9.16204.15420 (Xceed DataGrid for WPF)
測(cè)試運(yùn)行在ENVY-23 All-in-One Desktop環(huán)境中,配置如下:
- Intel i7 quad-core CPU @ 3.10 GHz
- 8 GB RAM
- NVIDIA GeForce GT 630M display adapter, Full HD (1920 x 1080) resolution
- Windows 10 Pro 64-bit OS
測(cè)試應(yīng)用
基準(zhǔn)應(yīng)用程序允許選擇和運(yùn)行單獨(dú)的測(cè)試,或按順序運(yùn)行所有測(cè)試。您可以選擇每個(gè)測(cè)試運(yùn)行的次數(shù),以得到平均結(jié)果。為了減少其他因素的影響(如操作系統(tǒng)和其他應(yīng)用程序的交互),所有結(jié)果都運(yùn)行了10次。
基準(zhǔn)測(cè)試步驟
每個(gè)基準(zhǔn)測(cè)試按以下步驟進(jìn)行:
- 移除上一次測(cè)試創(chuàng)建的所有UI,并調(diào)用和GC.WaitForPendingFinalizers方法,確保垃圾回收不會(huì)影響下次測(cè)試;
- 初始化下次測(cè)試和Stopwatch計(jì)時(shí)器;
- 按需要的次數(shù)執(zhí)行測(cè)試;
- 測(cè)量總時(shí)間并計(jì)算平均結(jié)果;
- 記錄結(jié)果。
基準(zhǔn)1:創(chuàng)建控件并加載數(shù)據(jù)
該基準(zhǔn)創(chuàng)建一個(gè)用戶控件,包含一個(gè)用于測(cè)試的Grid,將其插入到可視化樹中并填充數(shù)據(jù)。
基準(zhǔn)2:重新加載數(shù)據(jù)到已存在的控件
該基準(zhǔn)將DataGrid的ItemsSource設(shè)置為null,清空數(shù)據(jù)和自動(dòng)生成的列,然后將ItemsSource設(shè)置為一個(gè)新的ListCollectionView。
基準(zhǔn)3:排列單列
該基準(zhǔn)通過IcollectionView接口實(shí)現(xiàn)排序,大多數(shù)情況下通過這種方式進(jìn)行排列。但是Syncfusion的SfDataGrid沒有內(nèi)置支持,需要通過屬性來實(shí)現(xiàn)排序。對(duì)于Infragistics的XamDataGrid,我們使用屬性來實(shí)現(xiàn)排序。
基準(zhǔn)4和5:滾動(dòng)100行和整個(gè)表格
這兩個(gè)基準(zhǔn)模擬最終用戶的交互,分別滾動(dòng)100行和整個(gè)表格。每個(gè)Grid都有ScrollIntoView或類似方法來解決這個(gè)問題。
測(cè)試結(jié)果
在比較整個(gè)基準(zhǔn)過程中,我們得出以下結(jié)論:
- 初始化加載時(shí)間:不論數(shù)據(jù)規(guī)模,所有的控件幾乎都有相似的啟動(dòng)時(shí)間。
- 固定寬度基準(zhǔn):對(duì)于包含1,000、10,000和100,000條數(shù)據(jù)的數(shù)據(jù)源,測(cè)試結(jié)果非常相似。
- 自動(dòng)列寬基準(zhǔn):在運(yùn)行固定