.net2.0,如何获取页面执行时间?就像搜索引擎那样的.

解决方案 »

  1.   

    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.Runtime.InteropServices;
    /// <summary>
    /// GetTimerClass 的摘要说明
    /// </summary>
    public class GetTimerClass
    {
        public GetTimerClass()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }    [DllImport("kernel32.dll")]
        static extern bool QueryPerformanceCounter([In, Out] ref long lpPerformanceCount);
        [DllImport("kernel32.dll")]
        static extern bool QueryPerformanceFrequency([In, Out] ref long lpFrequency);    static long _f = 0;    static public long GetTickCount()
        {
            long f = _f;        if (f == 0)
            {
                if (QueryPerformanceFrequency(ref f))
                {
                    _f = f;
                }
                else
                {
                    _f = -1;
                }
            }
            if (f == -1)
            {
                return Environment.TickCount * 10000;
            }
            long c = 0;
            QueryPerformanceCounter(ref c);
            return (long)(((double)c) * 1000 * 10000 / ((double)f));
        }    //GetTickCount()为0时的DateTime.Ticks值
        static long _tc = 0;    //这个返回的不是真正的精确时间,但时间与时间的差是精确的。
        //GetExactNow与DateTime.Now的偏差比DateTime.Now的精度还要小,所以该偏差
        static public DateTime GetExactNow()
        {
            if (_tc == 0)
            {
                long tc = GetTickCount();
                DateTime dt = DateTime.Now;
                _tc = dt.Ticks - tc;
                return dt;
            }        return new DateTime(_tc + GetTickCount());
        }
    }
    //Global.asax
        void Application_BeginRequest(Object sender, EventArgs e)
        {
            Utility.Login();
            Context.Items["BeginRequestTickCount"] = GetTimerClass.GetTickCount();
            //string img = @"<div id=img style=position:absolute;><img src=images/xxx.gif border=1></div>";
            //System.Web.HttpContext.Current.Response.Write(img);    }页面执行时间:<%=new TimeSpan(GetTimerClass.GetTickCount() - (long)Context.Items["BeginRequestTickCount"]).TotalMilliseconds%>
      

  2.   

    DateTime BeginTime = DateTime.Now;
    //........执行长时间的代码DateTime EndTime = DateTime.Now;
    this.lblInfo.Text = 共执行 " + EndTime.Subtract(BeginTime) + "!";