Как наиболее точно рассчитать время выполнения страницы ASP.NET и одновременно отобразить ее на странице - PullRequest
2 голосов
/ 23 марта 2010

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

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

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

Каков наилучший способ сделать это?

Ответы [ 3 ]

1 голос
/ 23 марта 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."; 
}
0 голосов
/ 23 марта 2010

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

0 голосов
/ 23 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...