WPF和Winforms之间有性能差异吗?

WPF和Winforms之间有性能差异吗?,wpf,winforms,Wpf,Winforms,标题几乎说明了一切。我在谷歌上搜索了一下,但我能找到的唯一信息至少是一年前的,有些信息比Windows7还要旧。所以我很好奇,使用WPF会有性能损失吗 它在某些方面(比如数据绑定)的工作速度是否比您在WinForms上必须一起破解的更快 这将是一个用.NET创建的项目,以防对任何人都有影响 编辑 我正在看的这个项目将有一个基本的UI样式,但是可能会显示很多信息(它查询文件/目录并在屏幕上显示它们)。我还没有决定它是否会自动刷新屏幕,但我想可能会 可能会有相当数量的控件,但是任何人都不应该考虑“图

标题几乎说明了一切。我在谷歌上搜索了一下,但我能找到的唯一信息至少是一年前的,有些信息比Windows7还要旧。所以我很好奇,使用WPF会有性能损失吗

它在某些方面(比如数据绑定)的工作速度是否比您在WinForms上必须一起破解的更快

这将是一个用.NET创建的项目,以防对任何人都有影响

编辑

我正在看的这个项目将有一个基本的UI样式,但是可能会显示很多信息(它查询文件/目录并在屏幕上显示它们)。我还没有决定它是否会自动刷新屏幕,但我想可能会

<>可能会有相当数量的控件,但是任何人都不应该考虑“图形化”的强度。

然后,我从业务应用程序的角度来看性能

我不打算使用第三方控件。

对此没有有意义的“是”或“否”答案。这取决于许多因素,包括但不限于:

  • 您正在构建什么样的UI

    显然,您正在设计的视图的复杂性将影响两种平台上的性能。它们具有不同的布局和渲染管道

  • 如何有效地优化每个平台上的性能

    当然,在这两种平台上都很容易实现性能差的UI。实现一个复杂的UI以使其性能非常好,需要知道如何有效地利用每个平台的优缺点

  • 您使用的是现成控件还是第三方控件,以及这些控件的质量

    第1项和第2项也结转至任何第三方组件

  • 如果您是一名经验丰富且有能力的WinForms开发人员,那么您可能已经知道如何在WinForms中创建性能视图。WPF的学习曲线陡峭;任何经验丰富的WPF开发人员都可以告诉您这一点。他们还会告诉您,您可以使用它来构建性能良好的富UI。这也是事实。WinForms也是如此

    这两个平台都很成熟。两者都被广泛使用。除了bug修复之外,他们都不太可能看到任何未来的改进

    综上所述,如果你还没有在这两个平台上投入巨资,我会选择WPF路线。这是一个丰富的(尽管是重量级的)框架,可以让它表现良好。使其运行良好所需的工作量在很大程度上取决于您创建的视图类型,但我已经使用WPF构建了许多高容量、高频率的数据视图。我还用WPF构建了一个视觉丰富的战略游戏。但不要觉得被迫去做;如果您的开发人员已经熟悉WinForms,那么它仍然是一个完全可行的选择



    更新:我认为WinForms支持不太可能在未来几年内从.NET中删除,但如果这是一个问题,那么我会选择WPF。您描述的视图类型可以很容易地在WPF中创建。为了比较,我有几个视图能够显示50000到500000行,60+列;每秒数千行更新;应用自定义、多级排序和分组;自定义过滤;自定义摘要;所有这些都以伪实时(“人类”实时)方式保持最新。要达到这样的性能水平并不容易,但这是可以做到的。无论使用哪种平台,并且只使用内置的控制套件,您所描述的数据量和频率都应该更容易实现。

    如果您使用的是复杂的UI,那么WPF就是一个不错的选择。winforms不支持任何东西

    如果您使用的是简单的UI,那么WPF就是最佳选择,因为:

    • 它允许一个更干净的模式(MVVM),而不是可怕的“万事俱备”程序化winforms方法
    • 它具有更强大的数据绑定功能
    • 如果您需要自定义任何内容,您可以
    • 它有内置的
    • 默认情况下,它与分辨率无关

    如果您关心长期利益:

    WPF是一个好办法。当前/未来的Windows UI框架是WinRT XAML。最终将WPF应用程序移植到WinRT XAML要比winforms应用程序容易得多。而且,由于MVVM实际上是技术不可知论者,您最终可以在任何其他UI技术中重用ViewModels

    编辑:由于我收到了很多反对票,而且围绕这个答案有很多讨论,我将特别关注OP的问题,并尝试提供一个相当客观的答案:


    性能:当您将WPF的内存使用情况与winforms进行比较,以获得真正简单的UI时(例如,
    窗口或
    表单
    仅包含
    文本框
    ),WPF似乎比winforms消耗更多内存。这是因为WPF框架比winforms大得多,因此为了工作,它有更多的“要加载的东西”。当比较冷启动时间时(同样,在单控制情况下),也是如此

    相反,当您创建由多个控件/按钮/数据网格/组合框/文本框等(在业务应用程序中非常常见的东西)组成的更重的UI时,差异开始减小,直到它支持WPF为止。这是因为WPF的系统将默认属性值存储在单个内存空间中,而不是每个实例

    WPF从一开始就打算用于复杂/丰富的UI,并经过优化,以适用于有数千个控件的情况,而不是单控件情况

    当从数据中心的角度比较WPF和WiFrm之间的性能时,考虑到另一个非常重要的方面,如上所述。只要看看