2013-09-30 64 views
0

我正在尋找方法來測量Fiddler中的服務調用響應時間,以便它包括進程的所有階段(創建請求,序列化爲xml,發送,獲取響應,反序列化它)。就像這樣:測量WCF服務調用Fiddler和C#應用程序的響應時間

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%,和提琴手的價值觀是令人驚訝的兩次較小(預計反之亦然它的代理服務器必須爲傳遞請求開銷)。
這更像是我在尋找ClientDoneResponse - Client * 開始 *請求在這裏,但這兩個計時器(ClientStartRequest和ClientDoneRequest)的值在我的情況下是完全相等的。任何想法如何獲得在提琴手至少近似數字?提前致謝。
編輯
嘗試過ClientBeginRequest,它根本不起作用。

回答

1

在您的代碼中,您使用的是DateTime.Now,它僅限於Windows時鐘分辨率(15.7ms)。爲了獲得更高的精度,您應該使用Stopwatch類。

我對你用Fiddler的定時器測量的東西不夠了解。 ClientDoneResponse - ClientBeginRequest測量客戶端發送第一個TCP/IP數據包到Fiddler與Fiddler發送最終TCP/IP數據包到客戶端的時間之間的時間。

+0

精度沒有問題(差別在150-200ms左右,這絕對不是時鐘問題)。我在Fiddler中測量的是與第一段代碼相同的值 - 在客戶端啓動請求之間花費的時間並獲得完全響應。 – Jaded

相關問題