需要在.net窗口应用程序中添加Windows窗体响应度和加载时间的测量值。
测量winform响应和加载时间的正确方法是什么?
答案 0 :(得分:1)
我不确定如何测量响应速度,但是对于加载时间,您可以记录表单加载时引发的连续事件的StopWatch已过去的毫秒数。基于MSDN上的Order of Events in Windows Forms,我们了解到(按顺序)引发的事件是:
您可以在表单的构造函数中连接这些事件,并使用简单的Log
方法来处理数据收集。请注意,收集数据也需要时间。
public partial class Form1 : Form
{
Stopwatch timing = new Stopwatch();
// naive data collection
void Log(string stage)
{
Trace.WriteLine(String.Format("{0} = {1}", timing.ElapsedMilliseconds, stage));
}
public Form1()
{
timing.Start();
Log("Constructor Start");
InitializeComponent(); // adding all designer generated stuff
Log("Constructor - Initialized");
// hookup events
this.HandleCreated += (s, e) => Log("HandleCreated");
this.BindingContextChanged += (s,e)=> Log("BindingContextChanged");
this.Load += (s, e) => Log("Load");
this.Activated += (s, e) => Log("Activated");
this.Shown += (s, e) => Log("Shown"); ;
Log("Constructor End");
}
}
在Debug中使用.Net 4.0的笔记本电脑上,时间如下:
0 =构造函数开始
19 =构造函数 - 已初始化
20 =构造函数结束
22 = HandleCreated
24 = BindingContextChanged
25 =负载
30 =已激活
31 =显示