HttpWebResponse图像流性能下降

时间:2014-11-24 13:22:53

标签: c# performance httpwebresponse

我有以下代码。

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
 request.Proxy = WebRequest.DefaultWebProxy; //or skipped
 request.UserAgent = "Mozilla";
 request.Referer = "http://google.com;
 request.Accept = "image/png,image/*;q=0.8,*/*;q=0.5";
 request.Host = "google.com";
// request.KeepAlive = false;
 request.Headers.Add(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.5");
 request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
 request.CookieContainer = cookieContainer;

 using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
 {
     using (Stream stream = response.GetResponseStream())
     {
         Bitmap bmp = new Bitmap(Image.FromStream(stream));

         return bmp;
     }
 }

它在多个线程中执行。每个线程使用上面的代码运行单独的循环我运行简单的性能测试(秒表)并观察到3-5分钟后 Image.FromStream(流)的时间比开始时多10倍。

我尝试在请求对象中设置KeepAlive和Proxy设置。还在app.config中添加了以下内容:

<system.net>
    <connectionManagement>
        <add address="*" maxconnection="5000"/>
    </connectionManagement>
    <defaultProxy enabled="false">
        <proxy/>
        <bypasslist/>
        <module/>
    </defaultProxy>
</system.net>

不幸的是,随着时间的推移,我的性能仍会下降我的性能工具(dotTrace)表明,很大一部分时间是花费Image.FromStream(stream)

任何想法都在哪里?

0 个答案:

没有答案