熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

在頁面方法執行或控件方法執行查找性能瓶頸

2013-11-13 10:08:33  來源: .NET編程 

  在很多時候我們需要調整網站的性能通過iis日志分析網站的執行速度在執行速度有問題時我們不得不調試調試的時候就用到了當前頁面的執行時間

  我站點中的所有網頁都從一個PageBase繼承所以我把統計執行時間的功能放到了PageBase中首先我聲明一個long類型的成員變量_startTimeTicks此成員變量記錄開始執行的時間Tick在頁面Render完成時我再用DateTimeNowTicks減去開始的startTimeTicks這樣便得到了整個頁面的執行時間

   public class PageBase : Page
{
protected long _startTimeTicks;

protected override void OnInit(EventArgs e)
{
_startTimeTicks = DateTimeNowTicks;

baseOnInit(e);
}

#region 執行時間
public string ExecTime
{
get
{
TimeSpan ts = new TimeSpan(DateTimeNowTicks _startTimeTicks);
return tsTotalMillisecondsToString() + ms;
}
}

public int ExecTimeTicks
{
get
{
long ticks = DateTimeNowTicks _startTimeTicks;
return ticks;
}
}
#endregion
}

    這樣PageBase基類就有了他裡面有兩個Public的屬性可以隨時記錄執行到某個方法的時間段這樣對於調試程序查看性能瓶頸很有用

   public class _Default:PageBase
{
protected void Page_Load(object sender EventArgs e)
{
Sthod();
#if DEBUG
thisControlsAdd(new LiteralControl(ExecTime));
#endif
SthodA();
#if DEBUG
thisControlsAdd(new LiteralControl(ExecTime));
#endif
}
}同樣如果懷疑某個控件的執行中有可能有性能瓶頸也可以統計它的方法的執行時間 public class ControlA : UserControl
{
protected PageBase PageBase
{
get
{
return Page as PageBase;
}
}

  protected override void OnLoad(EventArgs e)
{
SomeMethodA();
thisControlsAdd(new LiteralControl(PageBaseExecTime));

  SomeMethodB();
thisControlsAdd(new LiteralControl(PageBaseExecTime));

  baseOnLoad(e);
}
}


From:http://tw.wingwit.com/Article/program/net/201311/12683.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.