在很多时候我们需要调整网站的性能通过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); } } |