2014-12-02 2 views
1

Необходимо добавить в приложение .net Windows приложение для измерения скорости реакции и времени загрузки для окон.Как вы измеряете отзывчивость и время загрузки для WinForms

Что такое правильный способ измерения реакции на выигрыш и время загрузки?

+0

Класс System.Diagnostics.Stopwatch предлагает хорошую функциональность для этой цели .. http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch%28v=vs .110% 29.aspx – TDull

+0

Это правда, но в вашем ответе нет ответа на вопрос: какие события мне нужно отслеживать, чтобы измерить время отклика для приложения Windows. –

ответ

1

Я не уверен, как вы оцениваете отзывчивость, но для времени загрузки вы можете зарегистрировать StopWatch пропущенные миллисекунды последовательных событий, которые возникают при загрузке Формы. На основании 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 в Debug тайминги заключаются в следующем:

0 = Конструктора Start
19 = Конструктора - инициализируется
20 = Конструктора Конец
22 = HandleCreated
24 = BindingContextChanged
25 = Нагрузка
30 = активировано
31 = Показано

Смежные вопросы