WPF和Winforms之间有性能差异吗?
标题几乎说明了一切。我在谷歌上搜索了一下,但我能找到的唯一信息至少是一年前的,有些信息比Windows7还要旧。所以我很好奇,使用WPF会有性能损失吗 它在某些方面(比如数据绑定)的工作速度是否比您在WinForms上必须一起破解的更快 这将是一个用.NET创建的项目,以防对任何人都有影响 编辑 我正在看的这个项目将有一个基本的UI样式,但是可能会显示很多信息(它查询文件/目录并在屏幕上显示它们)。我还没有决定它是否会自动刷新屏幕,但我想可能会 <>可能会有相当数量的控件,但是任何人都不应该考虑“图形化”的强度。 然后,我从业务应用程序的角度来看性能 我不打算使用第三方控件。对此没有有意义的“是”或“否”答案。这取决于许多因素,包括但不限于:WPF和Winforms之间有性能差异吗?,wpf,winforms,Wpf,Winforms,标题几乎说明了一切。我在谷歌上搜索了一下,但我能找到的唯一信息至少是一年前的,有些信息比Windows7还要旧。所以我很好奇,使用WPF会有性能损失吗 它在某些方面(比如数据绑定)的工作速度是否比您在WinForms上必须一起破解的更快 这将是一个用.NET创建的项目,以防对任何人都有影响 编辑 我正在看的这个项目将有一个基本的UI样式,但是可能会显示很多信息(它查询文件/目录并在屏幕上显示它们)。我还没有决定它是否会自动刷新屏幕,但我想可能会 可能会有相当数量的控件,但是任何人都不应该考虑“图
更新:我认为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之间的性能时,考虑到另一个非常重要的方面,如上所述。只要看看