一个110 kb的.NET 4.0应用程序需要10秒才能进行冷启动,这是不可接受的!

msf*_*boy 8 .net wpf performance startup

我正在为我的应用程序使用.NET 4.0客户端配置文件,我运行带有4 GB Ram和快速硬盘的双核.

在wpf listview中只显示一个通用List,一开始没什么大不了的.

如何让我的装配更快地冷启动?

我现在又做了一个冷启动并在我的\ obj\x86\Debug文件夹中运行windowsapplication.exe,我的硬盘像地狱一样运行,花了10,5秒???

怎么了?

寒冷之后的温暖启动耗时1秒.

Java 6应用程序没有那个问题,根本没有比较...

更新:

我删除了创建ViewModel时读取数据的所有方法.

还有10秒钟才能出现.它不是从RAM读取数据的问题.问题是繁忙的硬盘除了运行.net 4.0 wpf应用程序之外从未如此响亮......

我没有提到任何第三方dll.

这些是我参考的程序集:

Microsoft.CSharp Presentation.Core PresentationFramework System System.Core System.Data System.Xaml System.Xml System.Xml.Ling WindowsBase

更新2:

我现在从头开始创建一个.NET 4.0 wpf项目,只有一个空窗口和绿色背景;-)

冷启动需要3秒钟(硬盘非常繁忙)

然后我运行我的其他wpf应用程序,花了较早的10秒.现在只需1.5秒即可显示在屏幕上.

现在我的情况很清楚:

我的应用程序没有什么可以使它变慢.它只是加载了第一个wpf应用程序.

我想我会像ADOBE Reader那样做.把一个应用程序加速器...放在自动启动作为一个小的hello world wpf app ...

Run*_*tad 4

您可以使用ngen预编译程序集。那应该有帮助。

编辑:可能有一件事可以提供帮助。如果这是一个基于 Visual Studio 中的“新 wpf 应用程序”模板的 wpf 应用程序,您的应用程序将引用一堆您可能不会使用的程序集。尝试从应用程序引用中删除所有未使用的程序集,看看是否有帮助。

  • 应该如此,但问题是如何使冷启动(即应用程序第一次运行)更快。只要应用程序在启动时不做太多事情,我认为除了 ngen 之外没有其他任何东西会有帮助。 (7认同)
  • 小型应用程序上的 Ngen 会使冷启动速度变慢。要加载更大的 DLL。 (3认同)