【新手求助】高分求个超快的多线程算法,高手来看看

wooolsf 2012-05-01 11:10:48
我现在有5亿多个网址

我想用xmlhttp.open的方式快速的把他们访问一遍

我做这个程序的功能大致是:每访问一个网址会返回此网页的源码,根据此网页的源码来判断此网址是否可用。

关键点:求超快的多线程算法!一天最多能访问多少个网址?

我上网用的是光纤(下载文件一般是5M以上每秒),速度上应该够用。

先谢谢各位高手了!
...全文
170 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2012-05-01
  • 打赏
  • 举报
回复
不是说了吗,单cpu和多核的区别吗,你这个如果仅仅获得网页内容,根本谈不上什么算法,你用c#的自己的线程池即可
wooolsf 2012-05-01
  • 打赏
  • 举报
回复
大哥,能不能给出具体的算法代码?

我还有个疑问:就是利用多线程,是直接开就可以加快速度?还是需要有特定的算法?谢谢!
bdmh 2012-05-01
  • 打赏
  • 举报
回复
理论上对于单核cpu,单线程会快于多线程,多线程在cpu数量多于线程数量时,效果最优
根据你的总数量,大概估算一下开多少个线程,每个线程负责一部分网址,c#有线程池,你可以用
足球中国 2012-05-01
  • 打赏
  • 举报
回复
如果理想状态下。假设这5亿个都存在而且状态良好。1秒钟 100个。应该没有啥压力。
足球中国 2012-05-01
  • 打赏
  • 举报
回复
楼主有件事没搞清楚。你的网速的快慢和访问别人的网站关系并不大。下行速度一般都比上行要快很多的。
上行速度一般都是比下载慢好几倍的。而且你的这个5E还不一定每个都能建立连接。能建立的速度还很快。如果不能建立连接的。那个速度是很慢的。
还有5E网站,如果有国外的。很多都会被墙掉的。
dianond 2012-05-01
  • 打赏
  • 举报
回复
并行计算
http://msdn.microsoft.com/zh-cn/library/dd783747.aspx
自己写个处理方法,参数就是一个网址
EnForGrass 2012-05-01
  • 打赏
  • 举报
回复
5亿个网址,你的宽带是5M,就算不考虑网络延迟等因素,你自己算算吧
苏二 2012-05-01
  • 打赏
  • 举报
回复
我曾经做过一个刷票的程序,帮一个同学刷票.
需要刷 点击数和投票数. 投票数用流量精灵刷的,有IP和时间限制.
点击数就是用100K的网刷的,开30个线程,妥妥的,几分钟就刷到3W了...吓的都不敢开了
苏二 2012-05-01
  • 打赏
  • 举报
回复
5E的网址,看样子肯定不是同一个站点的.你是5M的光纤.
平均一个下载用20-50K/S(最多100K)的样子,5000/50 = 100.
我觉得100个线程是一个比较合理的数据,而且CPU毫无压力
烈火蜓蜻 2012-05-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

理论上对于单核cpu,单线程会快于多线程,多线程在cpu数量多于线程数量时,效果最优
根据你的总数量,大概估算一下开多少个线程,每个线程负责一部分网址,c#有线程池,你可以用
[/Quote]

主要速度的瓶颈不会在CPU上,因为单核开多线程,肯定还是会快的,毕竟有时候,就算你的网速非常看,还是要看对方的网络,因此开多线程,是必要的,不过呢,你自己可以做个测试,看看开多少个线程比较合似,没什么高不高效。
evelyn_green 2012-05-01
  • 打赏
  • 举报
回复
估计楼上大虾说的对
软件再快都快不过硬件
threenewbee 2012-05-01
  • 打赏
  • 举报
回复
这程序不是你的知识层次能搞的。该花点钱就花点钱。
ohkuy 2012-05-01
  • 打赏
  • 举报
回复
你可以去看下爬虫程序

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧