免费注册 查看新帖 |

Chinaunix

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

[文本处理] 关于二分法和HASH表效率比较的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-04-10 12:04 |只看该作者
数据库应该是最慢的吧。不如文件快。

论坛徽章:
0
12 [报告]
发表于 2013-04-10 12:19 |只看该作者
本帖最后由 闸北陆小洪 于 2013-04-10 12:30 编辑

这个问题  我来说下结论  亲测的

之前我是用最简单的方法在awk中遍历   大概耗时40分钟
使用二分查找后  只用了2分钟就完成了


至于楼主说的方法,当然没有问题。但是上哪里去找那么大的IP对照库是个问题啊。

论坛徽章:
0
13 [报告]
发表于 2013-04-10 12:31 |只看该作者
二分法用什么列表,主楼就用什么列表啊。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
14 [报告]
发表于 2013-04-10 12:34 |只看该作者
hash有个很郁闷的问题——查找存在方便,查找范围郁闷

论坛徽章:
0
15 [报告]
发表于 2013-04-10 12:42 |只看该作者
汗,感情我描述的这么不清楚啊。

列表                    HASH表(hash1)         
10.254.0.0/16             10.254               
10.2.0.0/10                 10.2
                                   10.3
                                    10.4
10.254.10.0/22            10.254.10
                                    10.254.11

不需要把所有的IP都列出来。
假设我要比较的IP是 10.254.1.2
只要 hash1{"10"},hash1{"10.254"},hash1{"10.254.1"},hash1{"10.254.1.2"} 中有一个成立就行。
再描述不清楚,我就死心了。

论坛徽章:
0
16 [报告]
发表于 2013-04-10 12:47 |只看该作者
你这么说  我就明白了  这样是可以的  没有任何问题   而且也很快

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
17 [报告]
发表于 2013-04-10 13:35 |只看该作者
回复 16# 闸北陆小洪


有测试的case么?


   

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
18 [报告]
发表于 2013-04-10 14:04 |只看该作者
@ouiki
设两个ip段
1.56.0.0 - 1.58.255.255 x
1.68.0.0 - 1.71.255.255 y
要找出ip 1.58.1.1属于x还是y

你的方法
建表
1.56 -> x
1.57 -> x
1.58 -> x
1.68 -> y
1.69 -> y
1.70 -> y  
#原来两笔数据现在变成6笔了

判断有无key为1的项,没有   or  判断有无key为1.58的项,有。
#这里又用了or 进行了多次判断。





论坛徽章:
0
19 [报告]
发表于 2013-04-10 14:06 |只看该作者
我这段时间没有环境,前几天改一段代码,突然想到这个做法。
大概改了下然后让同事帮忙测一下,同事说比整个循环(不用二分法)快点有限。
我想着应该是至少快一个数量级,结果却只是快一点。
我就想不明白了,才来问大家的。

论坛徽章:
0
20 [报告]
发表于 2013-04-10 14:41 |只看该作者
回复 18# cao627


   对于hash来说,2项和200项的差别基本可以忽略吧?
我以为就是最后判断IP or 的时候需要判断4次。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP