2014-12-02 69 views
1

需要添加到.net Windows应用程序中,以测量Windows窗体的响应速度和加载时间。如何测量WinForms的响应速度和加载时间

什么是测量winform响应和加载时间的正确方法?

+0

的System.Diagnostics.Stopwatch类提供了良好的功能,为了这个目的.. http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch%28v=vs .110%29.aspx – TDull 2014-12-02 18:18:52

+0

确实如此,但在您的回答中没有回答问题:为了衡量Windows应用程序的响应时间,需要跟踪哪些事件。 – 2014-12-03 08:17:12

回答

1

我不知道如何衡量响应能力,但是对于加载时间,您可以记录在加载表单时引发的连续事件过去的毫秒数。基于Order of Events in Windows Forms MSDN上我们学习提高(按顺序)的事件是:

  • Control.HandleCreated
  • Control.BindingContextChanged
  • Form.Load
  • Control.VisibleChanged
  • Form.Activated
  • Form.Shown

你可以将这些连接起来事件在窗体的构造函数中,并有一个简单的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"); 
    } 
} 

在我的笔记本电脑与.NET 4.0在调试的定时如下:

0 =构造开始
19 =构造函数 - 初始化
20 =构造完
22 = HandleCreated在
24 = BindingContextChanged
25 =加载
30 =激活
31 =所示