在使用 wcf 時,為了更好地進行調試,我都選擇了 http 協定進行資料傳輸。最近項目對性能要求比較高,是以就換成了使用 tcp 協定。并對二者的性能進行了一個簡單的測試。以下是測試結果:
環境:
cpu: e5800 3.20ghz+3.19ghz
ram: 7.97gb
64 bit os, 64 bit processor
把服務端、用戶端都部署在本機進行資料傳輸測試。分如下場景進行測試:
1. 1000次請求,每次請求傳輸 1 個對象,每個對象 80 個屬性:
http 平均耗時:6.2s左右。
tcp 平時耗時:3.9s左右。
結論:使用 tcp 連接配接,可以節省在建立連接配接時的性能消耗。對于進行大量連接配接時,相對 http 有比較明顯的性能提升。
2. 100次請求,每次請求傳輸 500 個對象,每個對象 80 個屬性:
http 平均耗時:19s左右。
tcp 平時耗時:18s左右。
結論:
當使用單個連接配接傳輸大資料量時,速度則主要取決于資料序列化及網絡傳輸速度,由于 http 也是基于 tcp 進行傳輸的,是以作用較小。
反思:
由于第一次使用了外網,會有防火牆等不确定因素,造成資料失真。第二次在本地時,由于進行了資料庫通路,同樣可能導緻資料失真。是以以上結論基于全記憶體資料,本地環境進行資料傳輸測試。
之前由于需要也進行過各種性能測試。經常懶得進行最直接的測試,而是直接使用應用程式中的環境進行測試。由于許多不确定因素:伺服器、網絡、資料庫等,造成了資料經常失真,又不得不排除各種原因,最後還是得使用最直接最純淨的方式來進行資料測試。得不償失啊!
以後要做性能測試,就一定要嚴謹,要在測試前想好純淨的測試用例,編寫正式、直接的測試代碼,這樣其實是最省時的方法。