即使是带有简单窗口的最基本应用程序也需要几秒钟才能启动,而其 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
接下来,我只用一个 OK 按钮运行了我的基本应用程序,但仍然需要几秒钟才能显示出来。
假设 mscoree.dll 确实是加载 .Net 的证据,至少可以处理基本的 Windows,那么为什么会延迟呢?FWIW,它在 XPSP3 主机上。
即使为每个进程加载了整个 .Net 框架,因为它已经为其他进程启动并运行,我假设它只会从 RAM 中的其他进程复制代码?
谢谢你。
编辑:似乎较慢的初始启动时间是由于使用了防病毒/防火墙应用程序,而不是由于 JIT 或加载 .Net。另一个可能的问题:如果您的应用程序从冷状态启动有点慢,请确保它仅在启动时加载最低限度。