易语言吧 关注:266,065贴子:1,663,116
  • 34回复贴,共1

昨天晚上12写完运行的,3代i

只看楼主收藏回复

昨天晚上12写完运行的,3代i5四核处理器开5个线程到现在9点半才处理了1500多个,80万*80万*4的机器提取有用学习文本看来我需要一台几百颗CPU的计算机,怎么破?怎么破!


IP属地:广东来自Android客户端1楼2017-06-09 09:39回复


    IP属地:广东4楼2017-06-09 10:05
    回复
      不明觉厉,大神买个网络服务器主机挂上去跑吧


      来自手机贴吧5楼2017-06-09 10:08
      收起回复
        菜。这种级别,先不论数组怎么来的,
        就字符串直接对比,呵了个呵,还有动态数组
        中途还有一个最低延时200ms,
        解决方案:
        动态数组一定要解决,易来回申请内存,释放内存,效率很低的问题,
        根据需求自写数组,链表或哈希表都成,目的是避免频繁的申请内存,释放内存,
        或者使用,重定义数组,提前定一个很大的数组,根据数组下标赋值进去,就不会有内存反复申请和释放。
        字符串不建议直接采用明文对比,如果非要明文对比,建议采用模糊对比的形式,直到整串字符串,
        线程那里有个延时的部分.将该处内容,用另外1条新线程在别的地方处理,不能让他影响后面的数据处理,
        最后,多线程程序,根据cpu线程数来启动线程,以,cpu线程数为最优方案,
        什么CPU线程数+1+2的都是***扯淡的,然后如果你的线程有长时间阻塞的行为,可以加大线程数,即保证发挥CPU最大性能,不让线程有空闲时间.


        IP属地:湖南6楼2017-06-09 15:14
        收起回复
          这个延时(200)最要命


          IP属地:广西来自Android客户端7楼2017-06-09 15:24
          收起回复


            来自WindowsPhone客户端8楼2017-06-09 15:53
            回复
              我这段代码是这样的:有一个80W成员的数组,单线程处理要8秒一个成员,所以改成多线程,延迟(200)不是问题所在,因为我开5个线程就会用掉98%左右的CPU,事实上改成延迟(1000)效果还是一样的。而且 延迟() 不是 延时() 不会干扰其他线程的运行。数组是一个程序集数组(数源数据),而另一个数组是保存结果的数组,并没有用动态数组啊,这个数组是这样的在线程中如果没有结果就写入一段文本,总控子程序就会根据这段文本将这个数组成员的操作权让下一个线程,所以不会来回申请内存,而且这个文本需要完全匹配,用模糊匹配会导致程序错误,还有就是易语言的就是一个一个字符去判断文本是否相等的,如果你可以从底层一步判断文本是否相等那你就神了,吴涛都做不到,C语言也做不到,那个延迟也不能在别的线程里,不然那还叫延迟?为什么那里要加延迟?因为需要等待数据确定传入了线程,当然你可以改小,但是这对于我这个程序效率不会有任何改变,因为每开启一个线程只用200多毫秒,而一个线程的返回时间是8秒以上,5个线程以上就会卡,而第一个线程返回时,总控程序已经启动了5个线程并且已经等待了6秒多了。链表难道不是一样,需要保存上一个和下一个链表的指针,按你的想法还需要在一个链表没有有效结果的时候去脱链然后再将上一个链表结构体里的指针重新指向下一个,这难道不增加计算开支?而我文本处理还没被阻塞过,等待事件是用于容易出现误操作时 用的,用在这里只会导致处理玩所有任务才返回,这不是一等就是8秒? 如果真要在超级计算机里运行,需要改成多线程分发,而延迟不需要太低,只要设为取出开启线程到参数传递完成所需时间+50%就可以了。虽然你可能一个都没说对,但是还是欢迎你有什说什么,不然不论证怎么有进步?


              IP属地:广东来自Android客户端9楼2017-06-09 21:35
              收起回复
                经过测试,延迟和延时每个两次第一次取每个3个运行完成所用额时间,第二次取每个5个运行完成所用的时间,第一次平均值延迟比延时快1.几秒,第二次延迟比延时快10.76秒,这是为什么?


                IP属地:广东来自Android客户端11楼2017-06-09 23:59
                收起回复
                  虽然从数学上讲C和E是完全等价的,但是由于底层实现方式问题,E的确慢,刚刚测了一下,同样的寻找文本E和原生Python3差不多,然而Python还有‘xxx’ in ‘yyy’这种东西,这种方式就比E快了,在加上pypy优化一下,再提升个五倍问题不大,所以换C/C++吧。
                  不想换的话
                  1.如果短时间内有多次调试输出的话,不要使用调试输出,真想看log输出到文件也行。
                  2.对于可能的需要多次使用的不变数组的数组数,提前取数组成员数。
                  3.不太明白你是线程慢,线程前预处理慢,线程慢的话发一下线程代码吧
                  令:你好像是在做机器学习?为什么不用tensorflow呢?如果不是就当我没说吧


                  IP属地:上海13楼2017-06-10 01:12
                  收起回复
                    楼主说话很有攻击性,
                    易语言的文本对比这个不多解释,模糊对比的问题,是我的错,
                    有空翻一翻BCB的strlen2,思维不要乱,想法不要跟书.
                    确实是菜,你不接受我的意见,我收回我的话,没问题,
                    如果不敢接收意见就不要发这种帖子,
                    我在易吧,以及论坛,潜水好几年,觉得你有前途,才出来给你回个帖子,
                    我是以"前辈"的身份来回你的帖子,说你一句,你不接受可以说明,
                    但是我的建议你先弄明白了,再来和我掰其他的.
                    给你提醒一下,加入成员,重定义数组,这2个支持库命令弄明白原理没有,
                    多线程编程是否深入了解?我没重点给你说延时,我说的是移到别的线程处理,
                    我仅仅看了你的一个片段代码,没有看完全部结构,如果有误,咋们可以再探讨探讨?
                    不要拿别的语言说事,我在易语言吧,说的必然是易语言,


                    IP属地:湖南14楼2017-06-10 01:37
                    收起回复
                      用c语言效率或许会高点


                      IP属地:广东来自iPhone客户端15楼2017-06-10 09:40
                      收起回复
                        我准备建立一个拼音(文本)和位置(数组)的数据结构数组, 开始处理前把所有成员的位置按首拼音分类,按常用拼音有400多个算的话,这样可能只会用到原来300分之1的时间,你们认为可不可行? @gmxdngc @依旧W如此 @坠落陀螺 @花小魂T


                        IP属地:广东来自Android客户端16楼2017-06-10 10:32
                        收起回复
                          换E3 1230 V2


                          17楼2017-06-13 15:52
                          回复
                            神威之光啊


                            IP属地:广西来自Android客户端19楼2017-07-10 09:38
                            回复