测量WCF服务调用Fiddler和C#应用程序中的响应时间

时间:2013-09-30 12:26:52

标签: c# wcf web-services fiddler response-time

我正在寻找测量Fiddler中服务调用响应时间的方法,因此它包括了进程的所有阶段(创建请求,将其序列化为xml,发送,获取响应,反序列化)。像这样:

var start = DateTime.Now;
// client is auto-generated C# SoapHttpClientProtocol proxy for WCF service
var response = client.GetWebMethod();
var finish = DateTime.Now;
var elapsed = (finish - start).TotalMilliseconds;

文档建议使用ClientDoneRequest和ClientDoneResponse计时器之间的区别:

var elapsed = (oSession.Timers.ClientDoneResponse - Session.Timers.ClientDoneRequest).TotalMilliseconds;

结果我的差异大约为100%,Fiddler的值出乎意料地小了两倍(反之亦然,因为它的代理必须有一些传递请求的开销)。 这更像是我在寻找ClientDoneResponse - Client * 开始 *请求,但这两个定时器的值(ClientStartRequest和ClientDoneRequest)在我的情况下完全相同。任何想法如何在Fiddler中得到至少近似的数字?提前致谢。
修改
试过ClientBeginRequest,它根本不起作用。

1 个答案:

答案 0 :(得分:1)

在您的代码中,您使用的是DateTime.Now,它仅限于Windows时钟分辨率(15.7ms)。为了获得更高的精度,您应该使用Stopwatch类。

我对Fiddler的计时器所测量的内容并不了解。 ClientDoneResponse - ClientBeginRequest测量客户端向Fiddler发送第一个TCP / IP数据包与Fiddler向客户端发送最终TCP / IP数据包的时间之间的时间。