免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xtthnfr
打印 上一主题 下一主题

[算法] 我对算法的一点感触 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-09-03 18:13 |只看该作者
原帖由 nully 于 2007-9-3 13:20 发表
我的算法:

1.重排URL变量
2.md5一次,16个字节128位
3.将16字节运算得到34位数据
4.34位数据刚好使用2G文件(* 8 bit)来记录是否出现过

可能有重叠情况发生,但16G的位空间应该够用了。


用MD5的话.....其实本质上就是自己的Hash函数,用MD5来代替.

但是,MD5运算过于复杂,每运算一次需要的CPU运算次数,过多.....可做个实验....50亿次的MD5运算....花费时间太长.

所以,自己来设计的HASH函数一定要简单,速度很重要.



[ 本帖最后由 xtthnfr 于 2007-9-3 18:19 编辑 ]

论坛徽章:
0
22 [报告]
发表于 2007-09-03 18:18 |只看该作者
原帖由 lemosa 于 2007-9-3 17:49 发表
算法就像登山中寻找的路。
找对了,能省很多力气!



对头.....这个比喻很形象.

爬到山顶,是我们程序设计的最后目的.但如何爬上去,路线选择就是算法之路了.

我能想到的爬山路线有...

1.自己走路.

2.找个人背我上去.

3.开车上去.

4.坐缆车.

5.坐直升机...

论坛徽章:
0
23 [报告]
发表于 2007-09-03 18:23 |只看该作者
原帖由 xtthnfr 于 2007-9-3 18:13 发表


用MD5的话.....其实本质上就是自己的Hash函数,用MD5来代替.

但是,MD5运算过于复杂,每运算一次需要的CPU运算次数,过多.....可做个实验....50亿次的MD5运算....花费时间太长.

所以,自己来设计的HASH函数 ...


就我这个算法,I/O才是瓶劲,对于整个爬虫来说,网络I/O是瓶颈。
自己写出来效果很难比md5好,重叠率较高

论坛徽章:
0
24 [报告]
发表于 2007-09-03 19:04 |只看该作者
原帖由 nully 于 2007-9-3 18:23 发表


就我这个算法,I/O才是瓶劲,对于整个爬虫来说,网络I/O是瓶颈。
自己写出来效果很难比md5好,重叠率较高


MD5肯定玩不转的.....运算一次,耗费时间太长.

现在的网络速度,对于搜索引擎公司来讲,不是啥问题.

如果,你抓取的URL总数是50亿....那么你要处理的URL估计就会是 50 X N 亿次.

把所有的URL排重都放到一个MD5里面来考虑....

可以算一下时间.....可以找些URL来做实验....看看1万个URL,全部MD5运算,需要多少时间....

如果抓取回来的URL为200亿....可以大概估算出来MD5的运算时间.

有时间的写个小程序,运算一下单条URL做MD5的平均时间.

论坛徽章:
0
25 [报告]
发表于 2007-09-03 20:07 |只看该作者
原帖由 xtthnfr 于 2007-9-3 19:04 发表


MD5肯定玩不转的.....运算一次,耗费时间太长.

现在的网络速度,对于搜索引擎公司来讲,不是啥问题.

如果,你抓取的URL总数是50亿....那么你要处理的URL估计就会是 50 X N 亿次.

把所有的URL排重都放到 ...


我错了....

MD5的运算速度是很快的....

写了调用MD5的小程序,速度真的很快.

论坛徽章:
39
2017金鸡报晓
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16赛季CBA联赛之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
26 [报告]
发表于 2007-09-03 20:26 |只看该作者
原帖由 xtthnfr 于 2007-9-3 11:16 发表


我都说了是自己写HASH了....

搜索引擎里面很多地方都用到HASH.


终于说到用HASH了!我觉得也是。50亿个地址用多少位HASH比较合适?128?160?还是更短点就行?

论坛徽章:
39
2017金鸡报晓
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16赛季CBA联赛之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
27 [报告]
发表于 2007-09-03 20:28 |只看该作者
原帖由 xtthnfr 于 2007-9-3 20:07 发表


我错了....

MD5的运算速度是很快的....

写了调用MD5的小程序,速度真的很快.



相对于提取网页数据,MD5的计算时间只是一小点点而已,网络再快,提取网页速度也是秒级的,计算MD5时间可以忽略不计。

论坛徽章:
0
28 [报告]
发表于 2007-09-03 20:47 |只看该作者
不参与论战~~~~~~··

论坛徽章:
0
29 [报告]
发表于 2007-09-06 15:13 |只看该作者
个人对于算法的看法是:
人机部分以人为本,机器处理部分以效率为本。

论坛徽章:
0
30 [报告]
发表于 2007-09-06 15:41 |只看该作者
原帖由 benjiam 于 2007-9-1 16:41 发表
以后再遇到瓶颈,采用B+树算法构建索引文件

并不合适, 多个客户端 一起用 也是非常麻烦的。


使用B树是一种可选的路径。
作HASH当然效率比B树高,但是需要大内存阿。
B树只要磁盘够大就行了。还是比内存便宜很多很多的。


如果是一个要卖给客户的产品的话,只要效率完全够用,
这一点上就会增强产品竞争力了。

当然这个选型要结合具体情况分析,本身是一个权衡的过程。

多个客户端的问题没看明白,是说要同步多个客户端吗,
那这个问题无论采用哪种方式来组织都是不可避免的阿。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP