6

我正在尝试分析我的应用程序的启动时间,因此我编写了一个小型 C# 程序,它将使用 Process.Start() 方法启动我的应用程序,并使用秒表计时。

当我尝试自己启动应用程序时(只需单击它),可能需要 2-3 秒。当我尝试使用我的测试程序启动应用程序时,需要 8-10 秒。启动时间在这个量级上始终不同。

知道为什么使用 Process.Start 启动可执行文件会如此影响启动时间吗?

4

3 回答 3

1

感谢你的帮助。我有答案,它与 Process.Start 无关。

在我开始这个过程之后,我正在等待一个特定的窗口句柄出现,以知道该应用程序实际出现了。环太紧了。我在while循环中引入了200毫秒的睡眠,启动时间又正常了。

于 2010-08-28T07:17:40.730 回答
0

您的线索应该Process.Start()是在System.Diagnostics名称空间中。当您以这种方式启动一个流程时,您将为其附加一堆监视器/检查器。这肯定会增加开销。

Dispose()您可能想在启动对象后立即尝试调用Process它(以避免不必要地延长进程监视),但您将无法完全避免相关的开销。

于 2010-08-27T01:54:02.977 回答
0

简而言之,您实际上正在启动两个过程,而不仅仅是一个过程。这就是为什么它需要更长的时间。

当您双击您的应用程序时,您只加载了一个应用程序,并且所有它都是 DLL。

当您运行您的诊断应用程序时,您首先加载第一个应用程序,其中包含必须是 JIT 的 .NET 程序集(即时编译:这不是免费的)。只有在这一切都完成之后,才能启动其他应用程序。如果您的目标应用程序也是一个 .NET 应用程序,那么整个循环就会重复。

于 2010-08-27T02:13:21.113 回答