怎样计算页面执行的时间?

第一步:建立所有页面的基类


PageBase.cs

using System;
using System.Data;
using System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.Collections.Generic;
using
System.Text;
using
System.IO;
/// <summary>
///
PageBase 的摘要说明
///
</summary>
public class PageBase : Page
{
public PageBase()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
#region
Overriden
protected override void
OnInit(EventArgs
e)
{
base.OnInit(e);
//计算时间执行时间
if
(this.MeasureExecutionTime)
{
watch = new System.Diagnostics.Stopwatch();
watch.Start();
this.RecordTimeStamp("页面开始执行……");
}
}
protected override void OnLoad(EventArgs
e)
{
base.OnLoad(e);
}
protected override void OnPreRenderComplete(EventArgs e)
{
base.OnPreRenderComplete(e);
if (this.MeasureExecutionTime)
{
this.RecordTimeStamp("Page execution
complete...");
watch.Stop();
Control
addExecutionTo = this.Form;
if (addExecutionTo == null)
addExecutionTo = this;
addExecutionTo.Controls.Add(new
LiteralControl("<br /><br />"));
StringBuilder timestampsOutput = new StringBuilder(50 * this.ExcutionTimeStamps.Count);
for (int i = 0; i
< this.ExcutionTimeStamps.Count;
i++)
timestampsOutput.AppendFormat("<b>Timestamp {0}</b>: {1:N0} ms
({2})<br />{3}",
i + 1, this.ExcutionTimeStamps[i].TimeStamp,
this.ExcutionTimeStamps[i].Description, Environment.NewLine);
addExecutionTo.Controls.Add(new LiteralControl(timestampsOutput.ToString()));
}
}
#endregion
#region Members
#endregion
#region
FindControlRecursive  迭代查找控件
protected
virtual Control
FindControlRecursive(string
id)
{
return
FindControlRecursive(id, this);
}
///
<summary>
/// 迭代查找控件
/// </summary>
/// <param
name="id">查找控件的编号</param>
///
<param name="parent">控件容器</param>
/// <returns>Control</returns>
protected virtual Control
FindControlRecursive(string id, Control parent)
{
//
if parent is the control we‘re looking for, return it
if
(string.Compare(parent.ID, id, true) == 0)
return
parent;
//search through
children
foreach (Control
child in parent.Controls)
{
Control match =
FindControlRecursive(id, child);
if (match
!= null)
return
match;
}
//if we reach here then no
control width id was found.
return
null;
}
#endregion
#region
ExecutionTime 执行时间
///
<summary>
/// 是否开启计算页面计算时间
///
</summary>
public virtual bool
MeasureExecutionTime
{
get
{
object o = ViewState["MeasureExecutionTime"];
return o == null ?
false : (bool)o;
}
set
{
ViewState["MeasureExecutionTime"] = value;
}
}
private System.Diagnostics.Stopwatch
watch = null;
private
List<TimeStampInfo>
timeStamps = null;
///
<summary>
/// 页面执行时间集合
///
</summary>
protected virtual
List<TimeStampInfo>
ExcutionTimeStamps
{
get {
if (timeStamps == null)
timeStamps = new
List<TimeStampInfo>();
return timeStamps;
}
}
///
<summary>
/// 记录页面执行时间
///
</summary>
/// <param name="desc"></param>
protected virtual void RecordTimeStamp(string
desc)
{
if (watch == null)
throw new ArgumentException("要记录页面的执行时间
MeasureExecutionTime 必须设置为 true.");
ExcutionTimeStamps.Add(new TimeStampInfo(watch.ElapsedMilliseconds,desc));
}
#endregion
}

首先用一个变量MeasureExecutionTime来保存页面是否需要计算出执行的时间,然后重写页面的OnInit事件 ,当需要计算页面执行的时间则启动Stopwatch。
最后在OnPreRenderComplete中输出计算的结果。
 

第二步:建立需要计算页面执行时间的页面

其页面的测试如下:
Default.aspx.cs
 using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default :PageBase
{
protected void Page_Init(object sender, EventArgs e)
{
base.MeasureExecutionTime = true;
}
protected void Page_Load(object sender, EventArgs e)
{
// Record timestamp
base.RecordTimeStamp("Starting long running process");
// Do long running process
Random rnd = new Random();
System.Threading.Thread.Sleep(rnd.Next(1000) + 1000);
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
for (int i = 0; i < 20; i++)
{
DataRow dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = "Name" + i.ToString();
dt.Rows.Add(dr);
dt.AcceptChanges();
}
gv.DataSource = dt;
gv.DataBind();
}
// Record timestamp
base.RecordTimeStamp("Completed long running process");
}
}

怎样计算页面执行的时间?,布布扣,bubuko.com

时间: 2024-10-18 19:53:33

怎样计算页面执行的时间?的相关文章

3.怎样计算页面执行的时间?

页面执行时间:就是从这页的开始执行一直到这页执行完毕所用的时间. 许多网站的的页尾都会显示一个页面执行时间,下面说说如何实现: 首先在一个网页的开头定义一个变量: dim startime startime=timer() 在显示页面执行时间的地方,这个地方应该是页尾的地方: dim endtime endtime=timer() 页面执行时间:<%=FormatNumber((endtime-startime)*1000,3)%>毫秒 3.怎样计算页面执行的时间?,布布扣,bubuko.co

[fw]Linux系统使用time计算命令执行的时间

Linux系统使用time计算命令执行的时间 当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短的.所有类UNIX系统都包含time命令,使用这个命令可以统计时间消耗.例如: [[email protected] ~]# time ls anaconda-ks.cfg install.log install.log.syslog satools text real 0m0.009s user 0m0.002s sys 0m0.007s 输出的信息分别显示了该命令所花

C# .Net计算函数执行的时间

C#计算函数执行的时间 protected void StopwatchTest() { System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); // 开始监视代码 //_________________要执行的函数______________________ //Code…… stopwatch.Stop(); // 停止监视 TimeSpan timeSpa

利用Navigation Timing测量页面加载时间

最近在看一本名为<web性能实践日志>的书籍,其中第十三章"网络计时"中介绍了一种比较新的计算页面各部分加载时间方法,这也是W3C Web性能工作小组正在做的事情,接下来我就给大家大概介绍一下: 首先先撇开这篇文章所要介绍的,如果要你来写一段代码来计算整个页面加载的时间的话,我们一般都会这样做:获得页面开始加载的时间和结束加载的时间,两个一减便是页面加载的时间了,没错,代码如下: 1 <html> 2 <head> 3 <script type

Yii查看(输出)当前页面执行的sql语句

在Yii框架下查看当前页面执行的所有sql语句的方法,主要是通过配置相关文件来达到调试sql的目的,具体方法如下: (1)修改 index.php 开启调试模式 在 index.php 文件内增加如下两行代码(如果不存在的话): 查看代码 打印 1 //开启调试模式 2 defined('YII_DEBUG') or define('YII_DEBUG',true); 3 //设置日志记录级别,YII_TRACE_LEVEL的数字越大,信息越清楚 4 defined('YII_TRACE_LEV

[转载]Python &amp; Selenium -- 页面加载时间过长&amp;启动指定FF

原文链接:https://my.oschina.net/u/2344787/blog/400507?p={{page}} 1. selenium webdriver在get方法会一直等待页面加载完毕才会执行后面的,可如果加载时间太长会导致后续操作无法进行. 例如:get 汽车之家页面时会等待很长时间,其实页面基本元素都已加载,可进行后续操作 可以通过set_page_load_time()方法来设定时间, 然后捕获timeout异常 并 通过执行Javascript来停止页面加载 window.

减少页面加载时间的方法

减少页面加载时间的方法? 加载时间:指感知的时间或者实际的加载速度. 方法: A.减少http请求(合并图片.合并文件) B.优化图片文件,减小其尺寸,特别是缩略图. [一定要按尺寸生成缩略图然后调用,不要在网页中用resize方法实现,虽然这样看到的图片外形小了,但是其加载的数据量一点也没减少.曾经见过有人在网页中加载的缩略图,其真实尺寸有10M之巨-普通图像.icon也要尽可能压缩后,可以采用web图像保存.减少颜色数等等方法实现.] C.图像格式的选择(GIF:提供的颜色较少,可用在一些对

Python & Selenium -- 处理页面加载时间过长的问题

selenium webdriver在get方法会一直等待页面加载完毕才会执行后面的,可如果加载时间太长会导致后续操作无法进行. 例如:get 汽车之家页面时会等待很长时间,其实页面基本元素都已加载,可进行后续操作 可以通过set_page_load_time()方法来设定时间, 然后捕获timeout异常 并 通过执行Javascript来停止页面加载 window.stop() from selenium.common.exceptions import TimeoutException s

JavaScript实现页面实时显示时间

今天尝试了一下JavaScript实现页面实时显示时间 运用了 setInterval() 函数 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式 setInterval("getTime()",1000); 以1000毫秒间隔调用函数有一个问题就是刚打开页面时的1s会不显示 为此我们可以在之前先调用一遍函数 getTime(); 这样无论何时都能实时显示时间啦 .html代码如下 <!DOCTYPE html> <html lang