c# – 准确测量Asp.Net MVC应用程序的请求/响应时间的方法

请考虑以下用于测量Asp.Net应用程序中的请求/响应时间的代码
protected void Application_EndRequest()
{
    Trace.WriteLine(string.Format("{0}:{1}",(DateTime.Now - HttpContext.Current.Timestamp).TotalMilliseconds,HttpContext.Current.Request.RawUrl));
}

根据MSDN,DateTime.Now的近似分辨率为10毫秒.

此外,从MSDN HttpContext.Timestamp description开始,

The timestamp returned from the Timestamp property is the local time of the server and is set during the instantiation of the HttpContext object. The local time is equal to the UTC time plus the UTC offset.

理论上,上面的代码应该以毫秒为单位给出总的请求/响应时间.

我的问题是,这将是多么准确?还有更准确/更好的方法吗?

解决方法

StopWatch类的精度可能低至几微秒,具体取决于硬件和操作系统.如果您处于高分辨率模式,则可以读取IsHighResolution属性.如果没有,那么你的系统计时器的准确性就达到了.

http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx

使用这个类的好处是你肯定不会比上面的代码更糟糕.如果在高分辨率,你会得到更多的准确性.

但是,如果您正在尝试衡量性能并更好地了解您的服务,那么就有更好的工具.

例如,perfview是一个很好的工具:

http://blogs.msdn.com/b/dotnet/archive/2012/10/09/improving-your-app-s-performance-with-perfview.aspx

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...