【问题标题】:Examples of fast .NET WPF/WinForms apps? [closed]快速 .NET WPF/WinForms 应用程序的示例? [关闭]
【发布时间】:2011-01-16 03:20:17
【问题描述】:

我目前正在研究是使用非托管 C/C++ 还是在 .NET 中构建 Windows 应用程序,并且想知道托管 C#/.NET GUI 应用程序能够提供什么样的性能和响应能力?

毫不奇怪,看起来最快的响应速度最快的应用程序(例如 chrome、spotify 等)是用非托管 C/C++ 编写的。我很难找到真正优秀的 .NET 应用程序示例,因此我需要一些帮助。

快速响应的 .NET Windows 应用程序的最佳示例是什么?

【问题讨论】:

  • Windows 窗体应用程序与非托管应用程序一样快。当您调整其窗口大小时,WPF 应用程序重绘速度很慢,但在其他方面可能与非托管应用程序一样快。
  • @Cannibal:我不同意你的两个说法。 1. 许多 WPF 应用程序在处理大小调整方面与非托管应用程序一样敏捷。一般来说,当涉及动画时,WPF 应用程序处理重绘的速度比典型的非托管技术快得多(WPF 使用 Direct3D,这对于大多数非托管来说过于复杂)。 2. WinForms 也有它的减速,例如对于许多高级图形用途,如 3D、透明度等,它往往比非托管和 WPF 都慢。 3. 非托管代码有时可能是三者中最慢的,因为它是如此更多的工作来优化它。
  • 寻找基准和技术可能比可能与您计划的用例无关的任意应用更好。

标签: .net wpf user-interface winforms


【解决方案1】:

Greenshot is an OSS .NET app,很多人已经设置为从 windows 开始(取代 SnagIt 商业应用程序)。它是 Windows 窗体。来自进程资源管理器的快速检查确认他们使用 NGEN 来减少 JIT 时间/开销 (Greenshot.ni.exe)。

GitHub for Windows is WPF(IIUC 主要是手动编码的 XAML)。当然所有的 git 操作都是通过本地 libgit2 库。

大部分 Visual Studio UI 都是托管的。尽管将越来越多的 UI 从 C++/Win32/COM 移动到 C#/WPF/.NET ,但我会说它很快(对我来说足够快)并且在每个版本中都变得更快。 VS 确实使用了很多技巧来获得这个速度。 IL 布局在经过多次分析运行、构建后以及本地安装后针对使用模式进行了优化,然后在本地安装后,IL 是预抖动 (NGEN),因此在启动时运行的大多数代码已经是 NGEN 的本机代码。

【讨论】:

    【解决方案2】:

    Paint.Net 是一个用 .Net 编写的应用程序的开源示例。

    【讨论】:

      【解决方案3】:

      这是我的最爱之一。

      http://www.vertigo.com/familyshow.aspx

      安装后,打开 Windsor 系列并单击周围。请务必尝试:

      • 窗口左下角和右下角的“时间”和“缩放”滑块。
      • 在右下角的“过滤器”框中输入

      Family.Show 插入了几个有意的延迟,以提供更引人注目的用户体验,例如在家庭树中导航时使用动画。如果您编辑源代码并将所有动画的持续时间更改为“0”,您会发现一切都立即发生。

      【讨论】:

        【解决方案4】:

        DigiTweet 是用 WPF http://www.digitweet.com/ 编写的

        【讨论】:

          【解决方案5】:

          TOAD for MySQL 是一个 .NET 应用程序。它非常活泼。见http://www.toadsoft.com/toadmysql/faq.htm

          另外,即将发布的 Visual Studion 2010 版本有很多用 WPF 编写的 UI。候选版本的性能看起来不错 IMO。

          【讨论】:

            【解决方案6】:

            latest version of Bing 地图是用 Silverlight 编写的,属于托管代码。

            Live Mesh 是用某种形式的 .net 编写的(尽管我认为它附带了自己的 silverlight 版本,因此它没有其他依赖项)。

            几年前,大多数 RSS 阅读器都是用 .net 编写的。我认为响应能力将取决于您正在编程的内容,而不是您使用的内容。归根结底,借助多线程,无论您使用什么框架,您都可以让应用在处理时做出响应。

            【讨论】:

            • Bing 地图似乎有了突飞猛进的改进 - 看起来是这里最好的例子。
            【解决方案7】:

            WorldWide Telescope 是一个 .NET 图形密集型应用程序,可让您浏览虚拟夜空以及与天文学相关的许多其他项目。它处理大量数据。尽管它似乎处于永久测试阶段,但它提供了非常引人入胜的用户体验。

            Windows Live Writer 是另一个 .NET 应用程序。它可能不是一个非常大的应用程序,但它擅长于它的功能,而且我从来没有遇到过它的响应性问题。

            【讨论】:

            • 我不得不说,万维网望远镜看起来确实令人印象深刻。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-06
            • 1970-01-01
            • 2020-04-09
            • 1970-01-01
            • 2015-02-03
            • 2018-12-20
            • 1970-01-01
            相关资源
            最近更新 更多