给web网页加上生成时间,并在页面方法执行或者控件方法执行中查找性能瓶颈...

在很多时候我们需要调整网站的性能,通过iis日志分析网站的执行速度,在执行速度有问题时,我们不得不调试,调试的时候就用到了当前页面的执行时间。

我站点中的所有网页都从一个PageBase继承,所以我把统计执行时间的功能放到了PageBase中,首先我声明一个long类型的成员变量_startTimeTicks,此成员变量记录开始执行的时间Tick,在页面Render完成时我再用DateTime.Now.Ticks减去开始的startTimeTicks,这样便得到了整个页面的执行时间。

 1       public   class  PageBase : Page
 2      {
 3           protected   long  _startTimeTicks;
 4 
 5           protected   override   void  OnInit(EventArgs e)
 6          {
 7              _startTimeTicks  =  DateTime.Now.Ticks;
 9 
10               base .OnInit(e);
11          }
12 
13           #region  执行时间
14           public   string  ExecTime
15          {
16               get
17              {
18                  TimeSpan ts  =   new  TimeSpan(DateTime.Now.Ticks  -  _startTimeTicks);
19                   return  ts.TotalMilliseconds.ToString()  +   " ms " ;
20              }
21          }
22 
23           public   int  ExecTimeTicks
24          {
25               get
26              {
27                   long  ticks  =  DateTime.Now.Ticks  -  _startTimeTicks;
28                   return  ticks;
29              }
30          }
31           #endregion
32      }
33 

这样PageBase基类就有了,他里面有两个Public的属性,可以随时记录执行到某个方法的时间段,这样对于调试程序,查看性能瓶颈很有用。

 1  public   class  _Default:PageBase
 2  {
 3       protected   void  Page_Load( object  sender, EventArgs e)
 4      {
 5          SomeClassInstance.method();
 6  #if  DEBUG
 7           this .Controls.Add( new  LiteralControl(ExecTime));
 8  #endif      
 9          SomeClassInstance.methodA();
10  #if  DEBUG
11           this .Controls.Add( new  LiteralControl(ExecTime));
12  #endif      
13      }
14  }
同样如果怀疑某个控件的执行中有可能有性能瓶颈,也可以统计它的方法的执行时间
     public   class  ControlA : UserControl
    {
        
protected  PageBase PageBase
        {
            
get
            {
                
return  Page  as  PageBase;
            }
        }

        
protected   override   void  OnLoad(EventArgs e)
        {
            SomeMethodA();
            
this .Controls.Add( new  LiteralControl(PageBase.ExecTime));

            SomeMethodB();
            
this .Controls.Add( new  LiteralControl(PageBase.ExecTime));

            
base .OnLoad(e);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值