如何衡量应用程序在C#中启动所需的时间?

时间:2010-10-07 08:54:46

标签: c# .net performance-testing

我有一个GUI应用程序需要一段时间才能加载所有插件,然后才能供用户使用。

我想编写一个C#程序来测量此应用程序启动所需的时间。我认为Process.WaitForInputIdle()方法可以解决问题,但事实并非如此。它会在流程开始后立即退出。

我现在拥有的是:

DateTime startTime = DateTime.Now;

Process myAppUnderTest = Process.Start("C:\\Program Files\\My App\app_under_test.ext");

myAppUnderTest.WaitForInputIdle();   //Wait until the application is idle.

DateTime endTime = DateTime.Now;

int elapsedTimeInSecs = endTime.Subtract(startTime).Seconds;

Console.WriteLine("Start up time (sec): {0}", elapsedTimeInSecs);

如何获得我想要的启动时间?

2 个答案:

答案 0 :(得分:2)

我说这很难。

如何对已加载并准备好的应用程序进行分类?如果有办法(我不这么认为),那就很容易了。

但是,如果您正在加载的应用程序以某种方式(IPC /文件/网络)发出信号,那么您可以捕获该信号并说明该应用已加载。在这种情况下,您可以使用计时器/秒表/性能计数器。

如果您可以修改定时应用,那么您可以通过各种方式实现。如果它在你的外部,我怀疑有任何简单的方法。

答案 1 :(得分:0)

Process.WaitForInputIdle()响应主窗口。一旦该过程启动,它将继续前进。您可以在主窗口上看到一条消息,指示应用程序处于就绪状态吗?如果是这样,你可以尝试在存在的循环单元中放置或应用程序或经过这么多时间。正如已经指出的那样,您可能还想查看秒表课程的时间安排。

当你这样做时,还有其他一些想法。确保此进程是唯一正在运行的进程。否则你有时会遇到一些冲突。你可能需要玩arround,找出触发器在应用程序满载时告诉你的内容。