易语言快速文本组合思路

简单的文本操作和字节集操作,这种基本操作,在编程语言中作用非常大。

    在日常工作中,可以帮助批处理很多数据。

    一般的操作非常简单,但是如果数据量巨大,就需要调整编程逻辑,才能做到高效处理。

    做seo的人最常用到的,就是文本组合和文本去重复。在以百万为单位的数据处理时,简单的命令就无法胜任了。

    对,不是效率慢,而是根本无法胜任。

    比如,你用有三组关键词,每组100个。将三组进行排列组合,那就100X100X100=1000000的数据。

    用一般的组合命令,如果是两组进行组合,那么可能速度还是可以接受的。但三组,就是指数级的递增。

    洪雨研究查阅很多资料,有说内存操作的,有说用数据库操作的。

    数据库操作通常指的是mysql操,洪雨不太懂。内存操作的确是速度最快的。可惜这两种方法洪雨都不太会,所以根本没研究。最终选择了快速文本对象和字节集操作。

    快速文本对象,我也不知道什么原理,但是当数据量大的时候,就能看出比普通的文本操作速度确实快很多。

    经过测试,1000000的数据用普通取文本操作,直接等到天荒地老。用快速文本对象用时70秒左右。

    虽然勉强处理完毕,但是这种 速度还是让人无法接受的。

    洪雨后来也尝试了字节集操作和快速快速字节集对象。速度确实又提高了一些,但是提高的非常有限。

    如果百万级别的数据组合速度无法控制在10秒以内,那么就没有达到效果。

    搞来搞去,找来找去,最终还是落在了多线程的头上。

    最终,通过多线程加快速文本对象,百万的数据处理在5秒左右,不超过6秒。

    为什么没有用字节集呢,因为最终你还是要转换成文本,这个转换过程也是会耗费时间的。

    说一下具体思路。

    首先,将第一组关键词和第二组关键词进行组合。就是100X100=10000不需要什么方法,因为数据量小,直接数组叠加就行了。运行时间半秒钟左右。

    生成好的结果再和第三组进行组合。10000X100=1000000这个数据量就大了,我们通过多线程进行处理。

    举例,我们调用100个线程进行操作。那么第一步,我们通过分割这10000个结果关键词,10000÷100=100。也就是一个线程处理100个关键词和第三组的组合。

    上面我们说了,100X100的处理速度不到半秒,也就是说,一个线程的处理时间不到半秒。100个线程同时处理,理论上说也不到半秒。最后将结果加起来。

    通过实际测试,1000000数据的实际处理时间在5秒左右。

    数据体积大概50M以上,如果你想显示在软件编辑框中,还需要10秒钟时间加载。就算你写到txt文档中,打开时间也不短。

    这中间还有一个问题。

    就是,数据通常都不能被100整除。所以,正常的逻辑是,1.第一组和第二组进行组合,生成一个结果。2.将这个结果除以100取余数,先将余数进行组合处理。3.将剩下的除以100,进行分组多线程处理。

    大概的速度,就是100万5秒,200万10秒这样。

    到此,问题基本解决。

    可以参看一下,我之前记录的单线程代码。https://www.cnblogs.com/hongyuyingxiao/p/11628058.html

原文转载自:http://www.zhizhuowz.com/post-676.html

posted @ 2021-10-31 10:14  洪雨  阅读(1180)  评论(0编辑  收藏  举报

友情链接

红尘修行笔记|钱度众生