wget为什么那么快?

上网、浏览、聊天、下载等
头像
SWX
帖子: 181
注册时间: 2006-07-30 9:31

wget为什么那么快?

#1

帖子 SWX » 2008-08-27 14:46

在我看来觉得简直有点不可思议

明明是一个单线程的下载工具,在从ftp或者http上抓东西的时候,大部分的情况下都不比多线程的下载工具要慢

有懂的朋友能讲一下为什么吗?
头像
shellex
帖子: 2180
注册时间: 2007-02-18 19:33
系统: OSX
来自: lyric.im
联系:

#2

帖子 shellex » 2008-08-27 14:47

wget不快.
既然你诚心诚意地问了
我就大慈大悲地告诉你
为了防止世界被破坏
为了维护世界的和平
贯彻爱与真实的罪恶
可爱而又迷人的反派角色
武藏,小次郎
我们是穿越银河的火箭队,白洞白色的明天在等着我们。就是这样!!喵~~
头像
shellex
帖子: 2180
注册时间: 2007-02-18 19:33
系统: OSX
来自: lyric.im
联系:

#3

帖子 shellex » 2008-08-27 14:48

多线程首先有线程开销; 其次网速最大的瓶颈在带宽;
既然你诚心诚意地问了
我就大慈大悲地告诉你
为了防止世界被破坏
为了维护世界的和平
贯彻爱与真实的罪恶
可爱而又迷人的反派角色
武藏,小次郎
我们是穿越银河的火箭队,白洞白色的明天在等着我们。就是这样!!喵~~
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

#4

帖子 yjcong » 2008-08-27 14:51

人家ee是推荐axel的, 你也可以试试aria2c
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
头像
SWX
帖子: 181
注册时间: 2006-07-30 9:31

#5

帖子 SWX » 2008-08-27 15:09

我的带宽不大,1M

一般用wget总能达到满负荷
头像
yaoms
帖子: 4952
注册时间: 2007-10-19 14:51
来自: 深圳

#6

帖子 yaoms » 2008-08-27 15:16

wget 是个忠实的,安分的,好用的,强大的,简单的,下载工具,呵呵
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#7

帖子 aBiNg » 2008-08-27 16:09

axel 要强于它。屡比不爽。
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

#8

帖子 yjcong » 2008-08-27 16:13

aBiNg 写了:axel 要强于它。屡比不爽。
比比aria2c
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
头像
luojie-dune
帖子: 22033
注册时间: 2007-07-30 18:28
系统: Linux
来自: 空气中

#9

帖子 luojie-dune » 2008-08-27 16:15

我这里axel经常输给wget
『这个世界都是我的 ,我爱你们』

ENTP ⥂ INTP ⥄ INFP ⇦ INTJ

在此发布的文章使用 Creative Commons Attribution-ShareAlike 4.0 协议
头像
foolegg
帖子: 249
注册时间: 2007-12-01 14:56

Re: wget为什么那么快?

#10

帖子 foolegg » 2008-08-27 17:26

SWX 写了:在我看来觉得简直有点不可思议

明明是一个单线程的下载工具,在从ftp或者http上抓东西的时候,大部分的情况下都不比多线程的下载工具要慢

有懂的朋友能讲一下为什么吗?
首先,为什么单线程会比多线程慢?

下载时候,速度受两方面限制,你的下行带宽和服务器的上行带宽(说白了就是你的下载速度和服务器的上传速度)

分情况来看

情况a.下载速度>服务器带宽

比如你的下载速度是100k,服务器则只能提供20k的带宽。于是你用单线程下载,就只有20k的速度
但问题是,一般来说,服务器的最大带宽肯定不止20k,只是服务器端会限制单个访问的带宽(带宽都给一个访问者用了,别人用什么去)。这时多线程下载就可以同时n次访问服务器,获得20k*n的速度,当然,不会大于100k。

情况b.下载速度<=服务器带宽

你的下载速度是100k,而服务器则能提供>100k的带宽,这个时候,你用单线程就能达到100k的极限速度,而多线程同时维护多个访问连接,会把你100k的下载带宽花费在一些没用的地方,反而会比单线程慢。

前几年,情况a比较多见,所以多线程比较牛x,这几年,随着硬件成本降低,国内网络基础设施建设发展,还有p2p的分流,情况b就多了起来,像我是512k的adsl,只有50k的下行带宽,基本上都是情况b

这样就可以理解,为什么wget经常不比多线程慢的原因了

另外还有一个问题,就是服务器比较远的情况,比如国外的服务器,由于包传送中的延迟与丢失,服务器可能提供了很大的带宽,但是到了下载端,就要缩水不少,这时就等于情况a了。不过另一方面,发达国家服务器带宽通常比较大(人家有钱$_$),这方面会有所弥补,比如我在ubuntu.com下iso,用wget就能达到下载速度的极限。

所以现在开太多的线程下载,不仅浪费你的下载带宽,也增加了你的机器和服务器的负荷,完全没有必要。

推荐先用wget下下看,如果能到极限就直接下,不能到极限的话,就做个除法,计算下开几个线程合适再下。
上次由 foolegg 在 2008-08-27 17:44,总共编辑 2 次。
头像
jarodlau
帖子: 501
注册时间: 2005-09-06 20:34
联系:

Re: wget为什么那么快?

#11

帖子 jarodlau » 2008-08-27 17:42

foolegg 写了:
首先,为什么单线程会比多线程慢?

下载时候,速度受两方面限制,你的下行带宽和服务器的上行带宽(说白了就是你的下载速度和服务器的上传速度)

分情况来看

情况a.下载速度>服务器带宽

比如你的下载速度是100k,服务器则只能提供20k的带宽。于是你用单线程下载,就只有20k的速度
但问题是,一般来说,服务器的最大带宽肯定不止20k,只是服务器端会限制单个访问的带宽(带宽都给一个访问者用了,别人用什么去)。这时多线程下载就可以同时n次访问服务器,获得20k*n的速度,当然,不会大于100k。

情况b.下载速度<=服务器带宽

你的下载速度是100k,而服务器则能提供>100k的带宽,这个时候,你用单线程就能达到100k的极限速度,而多线程同时维护多个访问连接,会把你100k的下载带宽花费在一些没用的地方,反而会比单线程慢。

前几年,情况b比较多见,所以多线程比较牛x,这几年,随着硬件成本降低,国内网络基础设施建设发展,还有p2p的分流,情况a就多了起来,像我是512k的adsl,只有50k的下行带宽,基本上都是情况a

这样就可以理解,为什么wget经常不比多线程慢的原因了

另外还有一个问题,就是服务器比较远的情况,比如国外的服务器,由于包传送中的延迟与丢失,服务器可能提供了很大的带宽,但是到了下载端,就要缩水不少,这时就等于情况a了。不过另一方面,发达国家服务器带宽通常比较大(人家有钱$_$),这方面会有所弥补,比如我在ubuntu.com下iso,用wget就能达到下载速度的极限。

所以现在开太多的线程下载,不仅浪费你的下载带宽,也增加了你的机器和服务器的负荷,完全没有必要。

推荐先用wget下下看,如果能到极限就直接下,不能到极限的话,就做个除法,计算下开几个线程合适再下。
强,解惑了
头像
lll9p
帖子: 1806
注册时间: 2007-07-18 18:56
联系:

#12

帖子 lll9p » 2008-08-27 21:42

axel
头像
SWX
帖子: 181
注册时间: 2006-07-30 9:31

Re: wget为什么那么快?

#13

帖子 SWX » 2008-08-28 0:26

foolegg 写了:
SWX 写了:在我看来觉得简直有点不可思议

明明是一个单线程的下载工具,在从ftp或者http上抓东西的时候,大部分的情况下都不比多线程的下载工具要慢

有懂的朋友能讲一下为什么吗?
首先,为什么单线程会比多线程慢?

下载时候,速度受两方面限制,你的下行带宽和服务器的上行带宽(说白了就是你的下载速度和服务器的上传速度)

分情况来看

情况a.下载速度>服务器带宽

比如你的下载速度是100k,服务器则只能提供20k的带宽。于是你用单线程下载,就只有20k的速度
但问题是,一般来说,服务器的最大带宽肯定不止20k,只是服务器端会限制单个访问的带宽(带宽都给一个访问者用了,别人用什么去)。这时多线程下载就可以同时n次访问服务器,获得20k*n的速度,当然,不会大于100k。

情况b.下载速度<=服务器带宽

你的下载速度是100k,而服务器则能提供>100k的带宽,这个时候,你用单线程就能达到100k的极限速度,而多线程同时维护多个访问连接,会把你100k的下载带宽花费在一些没用的地方,反而会比单线程慢。

前几年,情况a比较多见,所以多线程比较牛x,这几年,随着硬件成本降低,国内网络基础设施建设发展,还有p2p的分流,情况b就多了起来,像我是512k的adsl,只有50k的下行带宽,基本上都是情况b

这样就可以理解,为什么wget经常不比多线程慢的原因了

另外还有一个问题,就是服务器比较远的情况,比如国外的服务器,由于包传送中的延迟与丢失,服务器可能提供了很大的带宽,但是到了下载端,就要缩水不少,这时就等于情况a了。不过另一方面,发达国家服务器带宽通常比较大(人家有钱$_$),这方面会有所弥补,比如我在ubuntu.com下iso,用wget就能达到下载速度的极限。

所以现在开太多的线程下载,不仅浪费你的下载带宽,也增加了你的机器和服务器的负荷,完全没有必要。

推荐先用wget下下看,如果能到极限就直接下,不能到极限的话,就做个除法,计算下开几个线程合适再下。
多谢。我觉得wget非常直接,不像其他得下载工具那么拖泥带水……我自己得带宽不大,极限也才150多,所以我估计服务器给得带宽多半是比我得要大得。
头像
itux
帖子: 223
注册时间: 2008-01-10 14:03

#14

帖子 itux » 2008-08-28 21:19

恩,axel比wget快很多呢,不妨试试
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

#15

帖子 xiooli » 2008-08-28 21:41

axel 有些时候 不能下载,但是wget 却可以。
回复