我需要获取特定URL的内容。这是一个简单而直接的任务,尽管我想尽可能高效。HttpWebRequest或Webclient更快
WebClient或HttpWebRequest会占用较少的内存吗? 哪个班会更快地完成相同的任务? 哪个类需要较少的时间来初始化?
我需要获取特定URL的内容。这是一个简单而直接的任务,尽管我想尽可能高效。HttpWebRequest或Webclient更快
WebClient或HttpWebRequest会占用较少的内存吗? 哪个班会更快地完成相同的任务? 哪个类需要较少的时间来初始化?
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
,它已经为你做了呢?
当你考虑到快速的Web站点的请求可能会花费100到500毫秒的量级,在几毫秒开销WebClient
增加将在总时间最个位数百分比达。
使用WebClient
为简单的事情。如果您需要其提供的附加底层控制,请仅使用HttpWebRequest
。两者之间的速度考虑是无关紧要的。
我会说性能的差异是在几微秒的数量级,而不是毫秒...好的答案! – Loudenvier
“这取决于”。为什么不尝试并找出答案?在易用性和功能方面也有差异。 –
@JohnSaunders它只是一个更快的问题。老实说,我不知道如何衡量我在问题中提到的内容。 – niklon
如果你不能测量它,那么你不需要知道它。没有简单的“更快”的概念。充其量,“特殊情况下更快”。基本上,不要过早地优化。 –