开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 4097|回复: 6
收起左侧

[图文资料] 从数值运算看易语言程序代码的优化

[复制链接]
结帖率:92% (12/13)
发表于 2013-10-27 01:37:30 | 显示全部楼层 |阅读模式   山西省忻州市
有人说易语言不讲究算法,不是这样的。易语言的编程原理跟其他编程语言一样,哪有不讲究算法的道理?易语言跟其他编程语言一样都要优化代码、讲究编程效率。下面试举一例说明在易语言中如何优化代码。
我们还在读书的时候,常会接触一些数学智力题,比如当最大数为n时计算下面算式的值:
1-2+3-4+5-6+7……+n         
我相信没有哪个同学会这样计算:先算1-2的结果,再算1-2+3的结果……一步一步这样算下去。这种计算方法很慢,太笨了。有些计算能力比较强的同学可能会较快找到好的方法得到正确的结果。
编程的运算原理跟我们数学的计算方法差不多,一般来说,在数学中好的运算方法用到编程中也是好的,在数学中不好的方法在编程中也会不好。下面我们就用编程的方法计算上面算式的值来说明这一点,我们编制一个子程序“运算最大值”来完成这项功能。
可能一般人首先想到的是下面这种方法:
前天 22:13 上传
下载附件 (70.05 KB)



上面的步骤肯定可以得到正确的答案。但是只要你测试一下,就会发现:当最大值为很大时,程序的执行速度非常慢。在程序开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,让我们看看这个程序还有什么可以修改的地方,把程序优化一下。
我们修改为下面的代码看看:
前天 22:13 上传
下载附件 (39.21 KB)



经测试上面代码的执行速度比第一种代码快了一点点,原因是加法运算会比乘法运算快,而代价仅仅是增加了一个整数型变量。但是当最大值为很大时,运算速度仍然很慢。也就是说这个程序仍然不能达到要求,还应该有更优的方案。
更优的方案是:

运用上面的方法,计算结果好像即算即出。在数学中的最好计算方法是不是这种方法?怎么样?想到了吗?没错,当最大值很大的时候这三种程序的运行时间简直是天壤之别!所以,不要认为CPU运算速度快就把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们程序员服务的

点评

http://bbs.eyuyan.com/read.php?tid=32262 我很想说,转载也不带这样的吧?我几个小时前刚刚找到这个帖子。9年了吧?。。。。。。   河南省信阳市  发表于 2013-10-27 01:50

结帖率:32% (6/19)

签到天数: 1 天

发表于 2024-1-27 10:12:48 | 显示全部楼层   贵州省黔东南苗族侗族自治州
感谢分享,易友因你更精彩
回复 支持 反对

使用道具 举报

发表于 2016-4-6 06:27:32 | 显示全部楼层   广东省佛山市
的双方的首发
回复 支持 反对

使用道具 举报

发表于 2016-4-4 07:10:05 | 显示全部楼层   广东省佛山市
S分
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)
发表于 2013-10-27 08:38:12 | 显示全部楼层   河北省衡水市
屌炸天的帖子
回复 支持 反对

使用道具 举报

结帖率:89% (8/9)
发表于 2013-10-27 01:51:37 | 显示全部楼层   河南省信阳市
http://bbs.eyuyan.com/read.php?tid=32262 我很想说,转载也不带这样的吧?我几个小时前刚刚找到这个帖子。9年了吧?。。。。。。

不知道怎么想的点评了。。。还是回个复吧
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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