因为朋友再移动外包公司上班,有手机号码去重删选的需要,朋友用的python,也是用的哈希去重方式,大概1000W手机数据去重处理速度在5到6秒左右,于是乎我也想用易语言实现以下,想试下易语言能否实现大数据的处理以及实现速度,论坛各种哈希表试了个便,最终得出结论,速度最快的是ASM哈希表,1000W处理时间在4到5秒之间,可以说是非常的快的了,但是用哈希表在易语言运行存在一个问题,我实测1000W号码占用内存大约是400多M,也就是说易语言最大能处理不过三四千万的数据,由于易语言是32位的,最大支持内存仅1.7G这样,内存占用到达1.7G就会自动程序崩溃,无法处理上亿的手机号码,不论你内存条有10G还是100G,但是易语言程序最大仅支持1.7G,实在是非常的限制。但是单从处理速度而言,论坛大神ASM哈希表确实是效率极高的了。后面网上看到bitmap处理上亿级别的手机号码处理,于是到易语言论坛查了下,发现还没人实现过,那我就来做下把。在特定的数据处理情况下,使用bitmap方式去重效率就会显得比哈希表去重更加高效,不仅速度有极大的提升,内存占用方面,即使999亿的手机号码,也仅仅占用1.2G的内存即可处理,极大的节省内存,能够在低配置的电脑上也能运行起来,具体的就不吹嘘,有兴趣的可以自行百度搜索bitmap了解下
最后上代码,cpu为i7 8700实测1000W手机号码数据用bitmap方式去重耗时1.9秒左右,论坛ASM哈希表方式去重4.5秒左右,一亿手机号码数据用bitmap方式去重耗时31秒左右,论坛ASM哈希表无法处理过大数据因而未知,如有更高效率的欢迎留言交流
处理耗时 包含读入文档,载入数据,去重,最后写出。论坛许多噱头都是只谈去重过程,无视读入和写出过程的评测都是耍流氓行为。
压缩包包含源码,请编译后测试,哈希表去重方式调用的论坛ASM哈希表模块,还有生成手机号码的源码一一附上,有兴趣的可以自己测试下