gpt4 book ai didi

c# - HttpWebRequest/HttpWebResponse 的速度

转载 作者:行者123 更新时间:2023-11-30 16:27:44 25 4
gpt4 key购买 nike

对于将 http 响应转换为字符串,是否有比下面代码更快的替代方法?

string req = "http://someaddress.com";
Stopwatch timer = new Stopwatch();
timer.Start();
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream dataStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(dataStream);
reader.ReadToEnd();
}
}
timer.Stop();
Console.WriteLine(timer.Elapsed);

响应非常大 - 大约 2MB,并且是 XML 格式。此代码完成后,计时器等于约 50 秒。当我将相同的 url 粘贴到浏览器窗口时,它需要大约 35 秒才能显示 xml 文档。

最佳答案

(顺便说一下,您应该有一个using 语句作为响应...我同意 asbjornu 的评论。您应该更新您的问题并提供更多详细信息。)

你应该使用类似 Wireshark 的东西查看每种情况下的请求和响应是什么样的。例如,浏览器是否指定它支持压缩响应,而 WebRequest 不支持?如果是通过慢速连接,那很可能是重要的部分。

要测试的另一件事是字符串解码是否在 .NET 代码中占用大量时间...如果您只是将流中的数据读入字节数组(可能只是在读取时将其丢弃)是明显更快?例如:

using (var response = request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
// Just read the data and throw it away
byte[] buffer = new byte[16 * 1024];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
// Ignore the actual data
}
}
}

关于c# - HttpWebRequest/HttpWebResponse 的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com