热点:

    WPF Grid控件性能对比

      [   原创  ]   作者:
    收藏文章 暂无评论

    本文从环境配置、测试应用、基准指标及测试结果等方面,对ComponentOne在WPF平台下Grid控件的性能表现进行全面对比分析。

    1、 环境

    2、 该基准于2016年6月建立,采用当时最新的Grid控件试用版本。

    3、 属于PresentationFramework.dll的System.Windows.Control中的DataGrid组件

    4、 ComponentOne WPF版C1FlexGrid 4.4.0.20162.514

    5、 ComponentOne WPF版C1DataGrid更新至4.4.0.20162.514版本,功能更完善,性能更优。

    6、 Syncfusion Essential Studio WPF版本中的SfDataGrid组件,版本号为14.1400.0.41,提供高效的数据展示与交互功能,适用于Windows桌面应用程序开发。

    7、 RadGridView 2016.2.503.40 是Telerik公司推出的WPF用户界面控件,专为Windows平台设计,提供高效的数据展示与交互功能,适用于各类桌面应用程序开发。

    8、 该基准测试在ENVY-23一体台式机上运行,设备具备以下硬件配置。

    9、 所有Grid控件统一尺寸并采用默认样式显示。

    10、 测试应用程序

    11、 该基准程序支持单独选择并执行测试,也可依次运行全部测试。用户可设定同一测试的重复次数,以获取更稳定的平均结果。

    12、 此举可降低操作系统及其他应用交互带来的干扰,所有结果均经过10次运行验证。以下为应用程序的界面展示。

    13、 基准测试应用界面窗口

    14、 分析特定用例时,单独运行测试十分便捷。需注意在不同测试间进行对比时,运行过程中切勿调整窗口大小。实际显示区域的尺寸会直接影响性能,例如大屏幕需要更多时间与资源用于布局渲染,同时也会占用虚拟控件等系统资源,进而影响其他事件的执行效率。

    15、 该应用会将测试结果保存至working目录下的Excel文件。如需生成更详细的日志,可打开App.xaml.cs文件,取消输出到TraceListener的相关注释即可。

    16、 最有趣之处在于如何准确测量异步UI更新过程中复杂操作的执行耗时。经过多次尝试,我们发现杰阅方法最为有效,能精准捕捉Girder界面更新完成的时刻。完整的源代码已附上,欢迎下载体验。若您在使用中发现任何可优化之处,或有改进建议,我们都期待您的反馈,共同完善这一方案。

    17、 此处不提供任何控件的二进制文件。如需运行应用,请下载我们WPF版本的试用版及其他参与对比控件的试用版本,所有版本均提供30天免费试用,完全满足使用需求。

    18、 基准

    19、 采用ListCollectionView作为数据源,并通过下方定义的业务对象对其进行填充。

    20、 提供十二种不同类型列。

    21、 我们为Grid设定了统一条件,并调整部分控件的设置以满足需求。

    22、 智能生成列

    23、 列宽固定

    24、 可在底部新行处继续添加内容

    25、 隐藏分组与搜索面板

    26、 可修改的单元格

    27、 每个基准需按以下步骤进行

    28、 清除上一轮测试生成的全部界面元素,执行垃圾回收并等待所有待处理的终结操作完成,确保内存清理彻底,避免对后续测试造成干扰。

    29、 启动下一轮测试并重置秒表计时器

    30、 根据需求重复执行测试步骤。

    31、 测量总耗时并求平均值。

    32、 记录实验数据结果

    33、 详解指定基准的具体实现方法

    34、 初始化控件并导入数据。

    35、 该基准构建了一个包含测试用网格的用户控件,将其插入可视化树并加载数据。主要问题在于通过代码创建的Xceed DataGridControl无法正常运行,导致功能受限。因此,在实际应用中采用了XAML方式来定义该控件,以确保其正确初始化和显示,从而保障整体功能的稳定性和可用性。

    36、 基准2:将数据重新载入现有控件

    37、 将DataGrid的ItemsSource设为null,以清除现有数据及自动生成的列,随后将其重新赋值为一个新的ListCollectionView实例。该操作在代码中统一实现,适用于所有参与测试的控件,确保每次测试前数据状态干净、列结构重置,从而保证测试结果的准确性与一致性。

    38、 基准三:单列排序

    39、 为降低测试中自定义代码量,我们主要借助IcollectionView接口实现元素排列,提升代码通用性与维护效率。

    40、 这是常规需求,理想情况下每个表格控件都应原生支持。然而,Syncfusion的SfDataGrid并未提供内置排序功能,因此我们必须借助其SortDescriptions属性手动实现排序操作,以满足实际使用中的排序需要。

    41、 在测试Infragistics的XamDataGrid时,我们发现其虽支持ICollectionView排序,但在处理大量数据时性能明显下降。为获取各控件的完整对比结果,我们调整了实现方式,转而通过访问FieldLayout的SortedFields属性来完成排序操作,从而有效提升了效率并满足了测试需求。

    42、 基准四与五,滚动百行并遍历全表单。

    43、 在测试过程中,我们希望能有效模拟最终用户的交互行为,但尚未找到理想方案。虽然可通过操作可视化树中的滚动条实现,但相关代码可能影响性能。因此,我们选择采用让特定行进入可视区域的方式。目前主流的表格控件均提供类似ScrollIntoView的功能,能够稳定、高效地满足需求,确保测试准确性和执行效率。

    44、 测试结果已出

    45、 启动加载耗时

    46、 为确保测试中不计入JIT编译和XAML解析的开销,基准测试从每个控件独立运行开始,其方式与基准1基本一致。首次启动应用程序时的表现与后续运行存在差异,这一现象被记录为应用启动时间,对WPF而言尤为关键。后续多轮测试结果显示,无论数据规模如何变化,性能表现均保持高度一致,反映出系统在稳定状态下的运行特征。

    47、 等宽基准

    48、 以1,000、10,000和100,000项数据为源,得出如下结果。

    49、 自适应列宽标准

    50、 在完成固定列宽的测试后,我们进一步考察各控件在自动列宽模式下的表现。本次测试仅选取了四种支持实时自动调整列宽的表格组件。为确保比较的公平性与代表性,我们均采用各控件在自动列宽方面的最优默认设置:对MS DataGrid和Telerik RadGridView,选用其默认的SizeToHeader模式,使列宽依据表头内容自适应;对于C1DataGrid,则启用默认的AutoStar选项,实现基于内容的智能分配;而Infragistics XamDataGrid则使用其默认的FieldLength.InitialAuto设置,以确保列宽能根据字段初始内容自动调整。通过统一在各自最佳配置下运行,力求全面、客观地评估这四款Grid在自动列宽功能上的实际表现与差异,从而为后续选择提供可靠依据。

    51、 为何不将所有控件都纳入此项测试?原因在于我们所使用的C1FlexGrid、DevExpress的GridControl以及Xceed的DataGridControl均未提供即时列宽计算功能。这种缺失并非技术缺陷,而是设计上的权衡——开发者为了提升控件整体运行效率,主动放弃了这一特性。尽管这些控件均提供了可调用的方法来实现列宽的自动调整,但其执行时机需由使用者自行把握,这在实际测试中引入了较大的不确定性。由于无法统一调用时机,测试结果可能受到操作时序的影响,难以纯粹反映控件本身的性能差异。正因如此,为确保测试的公平性与准确性,我们在本次性能对比中选择排除这些控件,以避免干扰最终结论的可靠性。

    52、 相比之下,Syncfusion的SfDataGrid控件缺乏类似MS DataGrid及其他组件所具备的自动列宽计算功能。此外,在处理大量数据时,其可用选项运行速度明显变慢,性能远不及其他同类控件,因此在本次测试中未将其纳入评估范围。

    53、 我们对包含1,000、10,000和100,000条数据的数据源进行了测试,得到了相应结果,测试基准与固定列宽一致。

    54、 若干前提

    55、 当前控件已具备强大的可视化性能和处理大量数据的能力,这与早前关于WPF Grid性能的讨论已有明显不同。若为应用程序选择合适的Grid组件,我们的测试结果可作为有力的参考依据,帮助做出更准确的技术决策。

    56、 此外,我们并未测试其他使用场景,如分组、过滤及列数据可视化等功能。性能并非唯一衡量标准,您可能因控件的易用性、XAML定制能力或内置功能的丰富程度等因素而更青睐某一款产品。

    57、 在设定这些标准时,我查阅了大量控件对比资料,发现所有WPFGrid大致可归为以下两类,这一分类令我印象深刻。

    58、 基于性能的表格,未参与自动列宽计算测试。

    59、 注重易用性与XAML的高效应用。

    60、 我们的WPF版本提供了上述两款控件,您可根据实际需求灵活选用。如需了解C1FlexGrid、C1DataGrid与MS DataGrid的详细功能差异,请参阅附件中的对比说明,以便更好地做出选择。

    61、 在完成整体基准对比后,我们自然对自身控件进行了总结。结果显示,2016 v2版C1DataGrid性能显著提升,其运行速度比此前版本提高了35%以上,展现出更优的处理效率与技术进步。

    soft.zol.com.cn true https://soft.zol.com.cn/1210/12100408.html report 6688 本文从环境配置、测试应用、基准指标及测试结果等方面,对ComponentOne在WPF平台下Grid控件的性能表现进行全面对比分析。 1、 环境 2、 该基准于2016年6月建立,采用当时最新的Grid控件试用版本。 3、 属于PresentationFramework.dll的System.Windows.Control中的DataGr...
    不喜欢(0) 点个赞(0)
    随时随地资讯查报价 就上ZOL手机客户端,点击或扫描二维码下载
    立即下载

    XNote Stopwatch

    更新时间:2009年09月09日

    用户评分:0 | 0人点评

    软件类型:共享软件

    软件语言:英文

    XNote Stopwatch
    • 更新时间:2009年09月09日
    • 软件大小:0.4MB
    • 软件分类:美化增强
    • 语言种类:英文
    • 软件评级:0 人点评