为什么.Net 应用程序启动速度较慢?

Gul*_*har 5 .net vb.net

即使是带有简单窗口的最基本应用程序也需要几秒钟才能启动,而其 Win32 等效应用程序则在瞬间加载。

我读到延迟并不是由于 JIT 将操作码转换为机器代码所花费的时间,而是由于 Windows 加载 .Net 框架所花费的时间。

因此,使用 MS 的tasklist.exe CLI 应用程序,我检查了 mscoree.dll 是否已加载:

C:\>tasklist /m mscoree.dll

Image Name                   PID Modules
========================= ====== =====================
explorer.exe                 368 mscoree.dll
BSQLServer.exe               652 mscoree.dll
TOTALCMD.EXE                 408 mscoree.dll
Uedit32.exe                  260 mscoree.dll
OUTLOOK.EXE                 1912 mscoree.dll
Run Code Online (Sandbox Code Playgroud)

接下来,我仅使用“确定”按钮运行了基本应用程序,但仍然需要几秒钟才能显示。

假设 mscoree.dll 确实是 .Net 已加载的证据,至少可以处理基本的 Windows,那么为什么会延迟呢?FWIW,它位于 XPSP3 主机上。

即使为每个进程加载了整个 .Net 框架,因为它已经为其他进程启动并运行,我认为它只会从 RAM 中的其他进程复制代码?

谢谢。


编辑:初始启动时间较慢似乎是由于使用防病毒/防火墙应用程序所致,而不是由于 JIT 或加载 .Net。另一个可能的问题:如果您的应用程序从冷状态启动有点慢,请确保它在启动时仅加载最低限度的内容。

Ivo*_*ops 2

我在 Windows 7 上有一个简单的 C# 测试应用程序,它可以立即启动,没有延迟。这是我在资源管理器中双击可执行文件的时候。在 VisualStudio 中,这需要几秒钟的时间,因为 VS 然后会检查是否需要编译,可能会进行一些调试等操作。