我试图分析我的应用程序的启动时间,所以我编写了一个小的C#程序,它将使用Process.Start()方法启动我的应用程序,并使用秒表对其计时。
当我尝试自己启动应用程序(只需单击它)时,可能需要2-3秒。当我尝试使用我的测试程序启动应用程序时,需要8-10秒。启动时间在大小上始终不同。
你知道为什么使用Process.Start启动可执行文件会对启动时间产生如此大的影响吗?
发布于 2010-08-28 15:17:41
谢谢你的帮助。我有答案了,而且它与Process.Start无关。
在我开始这个过程后,我在等待一个特定的窗口句柄出现,以知道应用程序实际出现了。环路太紧了。我在while循环中引入了200ms的睡眠,启动时间又恢复正常了。
发布于 2010-08-27 09:54:03
您应该知道Process.Start()
位于System.Diagnostics
名称空间中。当您以这种方式启动一个进程时,您会将一堆监视器/检查器附加到该进程。这肯定会增加开销。
您可能希望在启动Process
对象后立即对其调用Dispose()
(以避免不必要的长时间进程监控),但无法完全避免相关的开销。
发布于 2010-08-27 10:13:21
简单地说,你实际上是在启动两个进程,而不仅仅是一个进程。这就是为什么它需要更长的时间。
当你双击你的应用程序时,你只加载了一个应用程序,所有的都是DLL的。
当你运行你的诊断应用程序时,你首先加载的是第一个应用程序,它的.NET程序集必须是即时编译(Just in time compilation: Just in time compilation:这不是免费的)。只有在所有这些都完成之后,其他应用程序才能启动。如果你的目标应用程序也是一个.NET应用程序,那么整个循环就会重复。
https://stackoverflow.com/questions/3580733
复制相似问题