我正在尝试分析应用程序的启动时间,因此我编写了一个小型C#程序,它将使用Process.Start()方法启动我的应用程序,并使用秒表计时。
当我尝试自己启动应用程序时(只需单击它),可能需要2-3秒。当我尝试使用我的测试程序启动应用程序时,需要8-10秒。启动时间的大小始终不同。
任何想法为什么使用Process.Start启动可执行文件都会影响启动时间?
答案 0 :(得分:1)
感谢您的帮助。我有答案,它与Process.Start无关。
在我开始这个过程之后,我正在等待一个特定的窗口句柄,看起来知道应用程序实际出现了。循环太紧了。我在while循环中引入了200 ms的睡眠,启动时间再次正常。
答案 1 :(得分:0)
您的线索应该是Process.Start()
名称空间中的System.Diagnostics
。当您以这种方式启动进程时,您将附加一堆监视器/检查器。这肯定会增加开销。
您可能希望在启动Dispose()
对象后立即尝试调用Process
(以避免不必要地延长进程监控),但您将无法完全避免关联开销。
答案 2 :(得分:0)
简单地说,你实际上是开始两个过程而不仅仅是一个过程。这就是为什么需要更长的时间。
当您双击应用程序时,您只加载一个应用程序及其所有DLL。
运行诊断应用程序时,首先要加载第一个带有.NET程序集的应用程序,这些程序集必须是JIT(即时编译:不是免费的)。只有在完成所有操作之后,才能启动OTHER应用程序。如果你的目标应用程序也是一个.NET应用程序,那么整个循环就会重复。