即使是最简单的窗口最基本的应用程序也需要几秒钟的时间才能启动,而其等效的Win32等待时间在瞬间加载。为什么.Net应用程序启动较慢?
我读到延迟不是由于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。另一个可能的问题:如果您的应用程序从冷启动状态开始有点慢,请确保它仅在启动时加载最小值。
你是如何运行应用程序,它是什么类型的应用程序?你有没有试过一个简单的控制台应用程序,从命令行运行(就像一个最小的测试)? – 2012-07-06 08:14:53
您可以尝试使用[Process Monitor](http://technet.microsoft.com/zh-cn/sysinternals/bb896645.aspx)查看实际发生的情况,直至看到应用程序的UI。这将包括DLL加载,文件和/或网络访问等事件。 – 2012-07-06 08:15:27
由于问题中显然存在冲突/不正确的信息,很难回答。谁告诉你最初的延迟不是由于JIT造成的? – 2012-07-06 08:21:38