如何最准确地计算ASP.NET页面的执行时间,同时在页面上显示它

时间:2010-03-23 14:19:39

标签: asp.net performance page-lifecycle diagnostics

我想计算ASP.NET页面的执行时间并将其显示在页面上。目前我正在使用System.Diagnostics.Stopwatch计算执行时间,然后将值存储在日志数据库中。

秒表在OnInit中启动并在OnPreRenderComplete中停止。这似乎工作得很好,并且它提供了与页面跟踪中显示的执行时间类似的执行时间。

现在的问题是我无法在页面上显示执行时间,因为秒表在生命周期中停止得太晚。

这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

Here一个工作解决方案,重新定义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."; 
}

答案 1 :(得分:0)

将执行时间信息保留到服务器(数据库,文件系统,缓存),然后使用ajax或jquery将其从服务器中异步拉入页面区域。

答案 2 :(得分:0)

我会在渲染时间内从秒表中获取经过的时间。此时,大多数(可能几乎所有)页面执行时间已经过去。继续并停止现在停止监视并使用该号码登录到您的数据库。我敢打赌它与页面上显示的内容没什么不同。