我使用一个开源库连接到我的网络服务器。我担心 web 服务器运行得非常慢,然后我尝试用 Ruby 做一个简单的测试,得到了这些结果
Ruby 程序: 10 HTTP 的2.11秒 GET
Ruby 程序: 18.13秒,100 HTTP GET
C # 库: 10 HTTP 的20.81秒 GET
C # 库: 100 HTTP 的36847.46秒 GET
我分析并发现问题在于这个函数:
private HttpWebResponse GetRawResponse(HttpWebRequest request) {
HttpWebResponse raw = null;
try {
raw = (HttpWebResponse)request.GetResponse(); //This line!
}
catch (WebException ex) {
if (ex.Response is HttpWebResponse) {
raw = ex.Response as HttpWebResponse;
}
}
return raw;
}
标记的行需要1秒钟才能完成,而 Ruby 程序发出1个请求需要3秒钟。我还在127.0.0.1上做了所有这些测试,所以网络带宽不是问题。
是什么原因造成了如此巨大的减速
更新
查看更改后的基准测试结果。我实际上用10个 GET 测试了,而不是100个,我更新了结果。