使用HTTPWebRequest检查响应时间?

Ary*_*rya 11 .net c# httpwebrequest

我正试图找到一些代理的性能.我Ping在.net中尝试了这个类,但它不接受端口.有没有办法检查响应的持续时间httpwebrequest

Dam*_*ith 22

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri);
System.Diagnostics.Stopwatch timer = new Stopwatch();

timer.Start();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Close ();

timer.Stop();

TimeSpan timeTaken = timer.Elapsed;
Run Code Online (Sandbox Code Playgroud)

  • 如果启动备用线程有延迟,则这是不准确的.我遇到过这种情况,在你要求提出请求和实际提出请求之间有一段延迟.如果您尝试使用多个同步HttpWebRequests进行压力测试,这一点非常明显.这是因为支持ThreadPool. (2认同)

Jon*_*eet 17

为什么不从客户端计算它?

WebRequest request = BuildRequest();
Stopwatch sw = Stopwatch.StartNew();
using (WebResponse response = request.GetResponse())
{
    // Potentially fetch all the data here, in case it's streaming...
}
sw.Stop();
Console.WriteLine("Request took {0}", sw.Elapsed);
Run Code Online (Sandbox Code Playgroud)

  • @Xenophile:哪个“支持线程”?显示的代码都*不*启动新线程。有一个*连接*池(默认情况下)只允许四个并发连接到同一主机 - 这是您所想的吗? (2认同)
  • @Xenophile:我不知道IO完成端口背后的确切细节,但我认为连接时间*很多*更可能是重要的.与设置TCP连接的成本相比,创建线程的成本非常小 - 无论如何都要汇集线程. (2认同)
  • @Xenophile:此外,"不准确"是什么意思?如果在测试中设置它有延迟,可能会出现与"真实"客户端代码类似的延迟.当然,客户端测试只能正确测试完整的往返时间. (2认同)
  • @hellboy:根据我的回答,你会使用`秒表'.我不确定我明白你在问什么...... (2认同)