如何衡量WinForms的响应能力和加载时间

时间:2014-12-02 14:26:16

标签: winforms

需要在.net窗口应用程序中添加Windows窗体响应度和加载时间的测量值。

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

1 个答案:

答案 0 :(得分:1)

我不确定如何测量响应速度,但是对于加载时间,您可以记录表单加载时引发的连续事件的StopWatch已过去的毫秒数。基于MSDN上的Order of Events in Windows Forms,我们了解到(按顺序)引发的事件是:

  • 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");
    }
}

在Debug中使用.Net 4.0的笔记本电脑上,时间如下:

  

0 =构造函数开始
       19 =构造函数 - 已初始化
       20 =构造函数结束
       22 = HandleCreated
       24 = BindingContextChanged
       25 =负载
       30 =已激活
       31 =显示