Как наиболее точно рассчитать время выполнения страницы ASP.NET, а также отобразить ее на странице

Я хочу рассчитать время выполнения моих страниц ASP.NET и отобразить его на странице. В настоящее время я рассчитываю время выполнения с помощью System.Diagnostics.Stopwatch, а затем сохраняю значение в базе данных журнала.

Секундомер запускается в OnInit и останавливается в OnPreRenderComplete. Кажется, это работает вполне нормально, и время выполнения у него такое же, как и в трассировке страницы.

Теперь проблема в том, что я не могу отобразить время выполнения на странице, потому что секундомер останавливается слишком поздно в жизненном цикле.

Как лучше всего это сделать?


person henningst    schedule 23.03.2010    source источник


Ответы (3)


Я бы получил прошедшее время с секундомера во время рендеринга. К этому моменту истекла большая часть (вероятно, почти все) времени выполнения страницы. Идите вперед и остановите секундомер там, где вы сейчас находитесь, и используйте этот номер для входа в свою БД. Бьюсь об заклад, это не будет сильно отличаться от того, что отображается на странице.

person Matt Wrock    schedule 23.03.2010

Здесь рабочее решение, которое переопределяет методы Page_Init() и Page_preRender() для получения разницы во времени.

private int startTime; 

protected void Page_Init(object sender, EventArgs e) 
{ 
    startTime = Environment.TickCount; 
}
protected void Page_PreRender(object sender, EventArgs e) 
{ 
    int endTime = Environment.TickCount; 
    double executionTime = (double)(endTime - startTime) / 1000.0;

    lblLabel.Text = "Page Execution time is " + executionTime + " seconds."; 
}
person systempuntoout    schedule 23.03.2010

Сохраняйте информацию о времени выполнения на сервере (база данных, файловая система, кеш), а затем используйте ajax или jquery, чтобы асинхронно получить ее с сервера в область страницы.

person amelvin    schedule 23.03.2010