开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 6933|回复: 22
收起左侧

【心得分享】超大次数循环速度越来越慢的解决办法

[复制链接]

结帖率:100% (53/53)
发表于 2017-6-15 21:29:39 | 显示全部楼层 |阅读模式   福建省宁德市
很多新人可能在处理一些文本之类的数据时会遇到这样一种情况:

小明最近在写一个数据处理软件,他有一个文本数据要处理,大概要使用计次循环 处理10W次左右吧
刚开始循环的时候速度非常快,大概每秒处理好 n万次吧,可是他发现,慢慢的速度越来越慢了,从一秒一万的速度,到1秒1千,到最后一秒几百的速度
越到后面,速度越慢,简直惨不忍睹啊,怎么会这样?

他的代码是这样的:
  
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
n整数型 
缓存数据文本型 
启动时间整数型 
启动时间 = 取启动时间 ()
计次循环首 (900000, n)
处理事件 ()
缓存数据 = 缓存数据 + 12345678@qq.com----123456789”
标题 = 到文本 (n)
计次循环尾 ()
缓存数据 = “”
启动时间 = 取启动时间 () - 启动时间
信息框 (到文本 (启动时间 ÷ 1000), 0, , )


执行效果:(开始1秒约1-2W,渐渐的就只有几百了)
效果1.gif


于是小明在百度搜索 “易语言计次循环 越来越慢 ”  的问题,试过各种循环处理,效果依旧啊,都有一个共同点,开始速度开飞机,后面就变拖拉机了
那么,问题到底出在哪里呢?为何循环到后面速度会越来越慢呢?
明明没有什么特殊的地方,都是变量赋值啊!按道理来说不应该啊!

那么为何速度越到后面越来越慢,到底是人性的扭曲,还是道德的沦丧呢?
各位易友有好的写法帮助小明解决这个问题么?


























下面我们来看看小小明写的代码,那速度真是跟坐飞机似的,一泻千里啊!!!
效果图:(从头到尾速度一直保持在高速状态)
效果2.gif
那么小小明这个到底是怎么实现的呢?为何它的循环速度不受人性和道德的限制呢?
我们来来看看小小明写的代码:

  
子程序名返回值类型公开备 注
_按钮2_被单击  
变量名类 型静态数组备 注
n整数型 
缓存数据文本型 
启动时间整数型 
计次整数型 
启动时间 = 取启动时间 ()
计次循环首 (900000, n)
处理事件 ()
计次 = 计次 + 1
缓存数据 = 缓存数据 + 12345678@qq.com----123456789”
如果真 (计次 = 100)
计次 = 0
缓存数据 = “”
标题 = 到文本 (n)
计次循环尾 ()
缓存数据 = “”
启动时间 = 取启动时间 () - 启动时间
信息框 (到文本 (启动时间 ÷ 1000), 0, , )


从小小明的代码中,我们看到了他在循环中做了这样的处理:
每循环100次,就将缓存数据保存起来(假设加上这句代码),然后将缓存数据给清空

为什么要这么写呢?我们一起来分析下原因:
首先,每循环一次,代码中就将 缓存数据 = 缓存数据 + “12345678@qq.com----123456789”

缓存数据 进行赋值了,开始的时候缓存数据 的内容 是“” 空的,所以赋值效率非常快,当缓存数据被赋值越来越多数据的时候,这个过程就会越来越慢
所以他在赋值的时候做了个计次 统计,每     “计次”    到100次的时候,就将数据保存一下,然后将缓存数据清空,使得每次这个“缓存数据变量” 体积达到
一定程度的时候进行了及时的处理释放,所以他的循环速度 不受限制,可以一直高速的处理下去。

不知各位易友们是否明白了 “计次循环” 命令,循环到后面越来越慢的原因了呢?
如果觉得我的心得对你有帮助,请在帖子下方进行“评分”和“打赏”,作为对分享心得的我的奖励支持,鼓励更多的朋友分享自己的小心得,让广大易友更上一层楼
高效计次循环 例子.e (3.61 KB, 下载次数: 136)

评分

参与人数 4好评 +3 精币 +11 收起 理由
叶斯 + 1 + 2 YYDS~!
陽陽陽 + 1 超列越来越多的表项也会造成卡顿
知情人士 + 1 感谢分享,很给力!~
单身汪 + 1 + 8 感谢分享,很给力!~

查看全部评分


结帖率:83% (39/47)

签到天数: 20 天

发表于 2017-6-15 22:51:52 | 显示全部楼层   福建省宁德市
这种其实可以自己申请内存来操作,或者直接 快速文本对象

点评

申请内存、快速文本对象 等 只是相对会好一些,但是数据累计到一定程度,还是一样   福建省宁德市  发表于 2017-7-5 18:53

评分

参与人数 1好评 +1 收起 理由
知情人士 + 1 新技能已get√

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:63% (31/49)
发表于 2017-6-16 00:52:20 | 显示全部楼层   江西省景德镇市
数据大了自然慢
回复 支持 反对

使用道具 举报

发表于 2017-6-19 11:24:59 | 显示全部楼层   江苏省淮安市
学习了.......................
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 2 天

发表于 2017-6-20 21:21:13 | 显示全部楼层   湖北省宜昌市
学习了.......................
回复 支持 反对

使用道具 举报

发表于 2017-7-5 14:07:35 | 显示全部楼层   上海市上海市
了解了这节知识了,很好
回复 支持 反对

使用道具 举报

发表于 2017-7-5 17:12:20 | 显示全部楼层   陕西省安康市
讲的非常不错。
回复 支持 反对

使用道具 举报

结帖率:63% (32/51)

签到天数: 1 天

发表于 2017-7-8 19:22:26 | 显示全部楼层   山东省德州市
了解了这节知识了,很好
回复 支持 反对

使用道具 举报

发表于 2017-9-27 16:14:56 | 显示全部楼层   河南省南阳市
挺好,又长知识了,顶
回复 支持 反对

使用道具 举报

发表于 2017-11-12 14:40:00 | 显示全部楼层   四川省成都市
真有用好呗                 
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表