gpt4 book ai didi

c# - HttpWebRequest 还是 Webclient 更快

转载 作者:可可西里 更新时间:2023-11-01 07:51:15 27 4
gpt4 key购买 nike

我需要获取特定 URL 的内容。这是一项简单直接的任务,但我希望它尽可能高效。

WebClient 或 HttpWebRequest 占用的内存更少吗?哪个类(class)完成同样的任务会更快?哪个类的初始化时间更短?

最佳答案

WebClient 只是 HttpWebRequest 的包装器。使用 WebClient 可能比直接使用 HttpWebRequest 稍微(大约几毫秒)慢。但这种“低效率”带来了巨大的好处:它需要更少的代码,更容易使用,而且你在使用它时不太可能犯错误。例如,考虑使用 WebClient 检索网页的文本:

var client = new WebClient();
var text = client.DownloadString("http://example.com/page.html");

对比 HttpWebRequest:

string text;
var request = (HttpWebRequest)WebRequest.Create("http://example.com/page.html");
using (var response = request.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
text = reader.ReadToEnd();
}
}

如果您想下载并保存到文件,事情就会变得非常有趣。使用 WebClient,只需调用 DownloadFile 即可。使用 HttpWebRequest,您必须创建一个读取循环等。使用 HttpWebRequest 时可能出错的方式数量之多确实令人震惊。我知道,因为我做了很多。

现在考虑下载两个不同的页面。使用 WebClient,您可以编写:

var client = new WebClient();
var page1 = client.DownloadString(page1Url);
var page2 = client.DownloadString(page2Url);

完成。使用 HttpWebRequest,您必须复制上面的代码,或者将该代码包装在一个方法中。但是,如果您打算将其包装在一个方法中,那么为什么不使用已经为您完成的 WebClient 呢?

当您认为对快速网站的请求可能需要 100 到 500 毫秒的数量级时,WebClient 添加的几毫秒开销将达到至多 占总时间的个位数百分比。

WebClient 用于简单的事情。如果您需要它提供的额外低级控制,请仅使用 HttpWebRequest。两者之间的速度考虑是无关紧要的。

关于c# - HttpWebRequest 还是 Webclient 更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22791376/

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