为什么WebRequest.Create方法非常慢?

时间:2013-11-04 22:12:15

标签: c# .net http

我已经实现了一个简单的方法,定期轮询服务以获取公共IP地址。

Stopwatch sw = new Stopwatch();

while (true)
{
    Console.WriteLine("(HttpWebRequest)WebRequest.Create...");

    sw.Restart();
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://checkip.dyndns.org/");
    sw.Stop();

    Console.WriteLine("HttpWebRequest was created in {0} ms", sw.ElapsedMilliseconds);

    request.Proxy = null;

    sw.Restart();
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
        sw.Stop();
        Console.WriteLine("Response was received in {0} ms", sw.ElapsedMilliseconds);

        StreamReader sr = new StreamReader(response.GetResponseStream());
        string responseStr = sr.ReadToEnd().Trim();

        string ipStr = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")).Matches(responseStr)[0].ToString();
        IPAddress address = IPAddress.Parse(ipStr);

        Console.WriteLine("IP: {0}", address.ToString());
    }

    Console.WriteLine();
    Thread.Sleep(60000);
}

方法WebRequest.Create第一次创建HttpWebRequest需要将近10秒钟,而在后续调用中,几乎是即时创建相同的实例。这种行为的原因是什么?

UPDATE。当我从Visual Studio启动可执行文件(发布模式)时,这是我的输出。

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 9758 ms
Response was received in 683 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 617 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 1034 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 641 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 652 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 672 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 658 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 655 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 1067 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 651 ms

(HttpWebRequest)WebRequest.Create...
HttpWebRequest was created in 0 ms
Response was received in 643 ms

修改
我在具有2 GB RAM,Intel Core 2 Duo T7500的计算机上使用32位Windows 7 SP1,下载速度为7 Mbps,上传速度为640 Kbps。

0 个答案:

没有答案