2016 - 2024

感恩一路有你

WPF平台Grid控件性能比较及测试结果

浏览量:2266 时间:2024-01-29 10:52:11 作者:采采

环境

本次测试的基准创建于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)

测试运行在ENVY-23 All-in-One Desktop环境中,配置如下:

  • 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

测试应用

基准应用程序允许选择和运行单独的测试,或按顺序运行所有测试。您可以选择每个测试运行的次数,以得到平均结果。为了减少其他因素的影响(如操作系统和其他应用程序的交互),所有结果都运行了10次。

基准测试步骤

每个基准测试按以下步骤进行:

  1. 移除上一次测试创建的所有UI,并调用和GC.WaitForPendingFinalizers方法,确保垃圾回收不会影响下次测试;
  2. 初始化下次测试和Stopwatch计时器;
  3. 按需要的次数执行测试;
  4. 测量总时间并计算平均结果;
  5. 记录结果。

基准1:创建控件并加载数据

该基准创建一个用户控件,包含一个用于测试的Grid,将其插入到可视化树中并填充数据。

基准2:重新加载数据到已存在的控件

该基准将DataGrid的ItemsSource设置为null,清空数据和自动生成的列,然后将ItemsSource设置为一个新的ListCollectionView。

基准3:排列单列

该基准通过IcollectionView接口实现排序,大多数情况下通过这种方式进行排列。但是Syncfusion的SfDataGrid没有内置支持,需要通过属性来实现排序。对于Infragistics的XamDataGrid,我们使用属性来实现排序。

基准4和5:滚动100行和整个表格

这两个基准模拟最终用户的交互,分别滚动100行和整个表格。每个Grid都有ScrollIntoView或类似方法来解决这个问题。

测试结果

在比较整个基准过程中,我们得出以下结论:

  • 初始化加载时间:不论数据规模,所有的控件几乎都有相似的启动时间。
  • 固定宽度基准:对于包含1,000、10,000和100,000条数据的数据源,测试结果非常相似。
  • 自动列宽基准:在运行固定

    版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。