提高软件执行效率的几条原则
似乎有很多朋友对于我说的“避免使用WITH语句”持反对意见。理由是With语句可以提高执行效率。
的确With是可以稍微提高一些执行效率,但是这是以破坏代码可读性的代价来换取的,尤其是多个WITH语句嵌套在一起的时候。
其实,如何提高执行效率主要还是在你所写下的代码里。以下是我总结的几条提高执行效率的例子,请大家指正:
一、尽量避免使用重复的语句块:
我们来看一段代码:
//假设已经有var的声明: Loop, LoopChild: Word;
//ArrayA, ArrayB: array[0..100] of Char;
//Value: Char;
for Loop := 0 to 100 do
ArrayA[Loop]:= ArrayB[Loop];
for Loop := 0 to 100 do
begin
Value:= ArrayA[Loop];
for LoopChild := 0 to 100 do
...
end;
其实这个就是重复的语句块的执行了,上面的代码我们可以写成:
CopyMemory(@ArrayA[0], @ArrayB[0], SizeOf(ArrayA));
for Loop := 0 to 100 do
begin
Value:= ArrayA[Loop];
for LoopChild := 0 to 100 do
...
end;
二、尽量不要使用 i:= i + x;这样的语句
在DELPHI里高效率的替代语句是Inc(i, x);等同于C中的i += x;
三、尽可能的减少运算次数
如复制字符串的右边部分:s:= Copy(Text, 3, Length(Text) - 2);
我们可以替代成:s:= Copy(Text, 3, MaxInt);
因为不管你传进去的拷贝长度是否越界,COPY函数内部都会做一次检查,反正都是要检查的,干脆用长一点不是很好吗,而且LENGTH()这里多调用了一次函数判断字符串的长度。
四、不使用if Flag = True then 这样的语句
原因很简单,因为FLAG本来就是BOOLEAN类型的变量,完全没有必要提取他的值来和True比较,直接写成
if Flag then 可以有效的减少执行时间;
同理:
if Value = 0 then
Result:= True
else
Result:= False;
这样的语句也可以直接写成: Result:= Value = 0;
五、尽量减少子程序间的嵌套调用
其实这和提高可读性是矛盾的,过多的在子程序内部嵌套调用其他子程序是会影响执行效率的;
(所谓嵌套调用就是,比如有10个函数a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; 那么在a1中调用a2,在a2中调用a3...这就叫嵌套调用)
至于怎么和可读性去协调,那么就要看实际情况了,不过我还是推荐以注意可读性为优先
六、尽可能使用整数运算来替代浮点运算
比如 Trunc(a / b) 如果可能的话,优先选择写成 a div b比较好(前提a, b都是整数)
七、循环次数多的循环尽可能的放在循环嵌套的内部
如:for i := 0 to 100 do
for j := 0 to 5 do
...
应该尽量写成:
for j := 0 to 5 do
for i := 0 to 100 do
...
因为每次循环前都需要对循环变量进行初始化操作,把循环次数多的循环放在内循环可以有效的减少这个操作,从而提高执行效率。
另外,大数据量的分页显示;直接的内存操作等等都可以有效的提高软件的执行效率……
以上是我暂时所能想到的了,呵!或许还有没有想到的,希望大家补充,也欢迎大家批评错误,谢谢!
本文已阅读 4607 次
来自: CnPack 开源软件项目
提高软件执行效率的几条原则相关推荐
- 提高软件开发效率的方法
一个开发任务下达以后,我们希望尽快的实现的,对软件开发工程师的要求是:多快好省 多--单位时间产量高 快--同样的产量所需的时间少 好--质量高 省--省钱,省时,省资源 这四个目标中最主要的又是&q ...
- improve php,解析提高PHP执行效率
解析提高PHP执行效率 1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的 ...
- 提高SQL执行效率的几点建议
提高SQL执行效率的几点建议: 1.尽量不要在where中包含子查询 2.关于时间的查询,尽量不要写成:where to_char(dif_date,'yyyy-mm-dd')=to_char('20 ...
- 提高python执行效率_关于提高python程序执行效率的思路和想法
原博文 2016-06-09 22:25 − 相比编译型语言(C系列)python胜在简介的语法和优雅的动态编程体验,但是在执行效率上,python有解释性语言先天的劣势--执行效率较低,为了让编写出 ...
- 提高SQL执行效率的16种方法
项目中优化sql语句执行效率的方法: 1)尽量选择较小的列 2)将where中用的比较频繁的字段建立索引 3)select子句中避免使用'*' 4)避免在索引列上使用计算.not in 和<&g ...
- 五十个小技巧提高PHP执行效率
在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...
- C:提高C代码运行效率的方法有哪些?列举几个提高代码执行效率的方法
文章目录 1.选择合适的算法 2.选择合适的数据结构 3.选择合适的数据类型 4.减少冗余拷贝或赋值次数 5.减少运算的强度 6.减少循环内耗时操作 7.其它 1.选择合适的算法 应该熟悉算法语言,知 ...
- 为什么CPU流水线会提高代码执行效率?
关注.星标公众号,不错过精彩内容 素材来源:网络 编辑整理:strongerHuang 为什么有些CPU的主频更低,但运算效率却更高呢? 比如:51单片机30M主频,STM32单片机20M主频,执行相 ...
- javascript 执行效率 java_有效提高JavaScript执行效率的几点知识
为了提供新鲜.别致的用户体验,很多网站都会使用 JavaScript 来改善设计.验证表单.检查浏览器,以及Ajax请求,cookie操作等等,实现无刷新动态效果 .但是,要将大量内容在浏览器呈现,如 ...
最新文章
- [NHibernate] Guid 作主键速度超慢的背后
- Shell-实际业务操作01
- 函数式编程的兴衰与当前之崛起
- ubuntu 打包压缩
- 【Linux开发】linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想...
- 动态构建LINQ表达式
- re模块中的非贪婪匹配
- [转载]在ASP.NET中使用Microsoft Word文档
- Ubuntu下实现双屏独立切换
- 一个简单的倒计时js插件
- 简单Java类和数据库操作及javafx的结合小项目(二)
- html中js怎么实现页面跳转页面,JavaScript实现页面跳转的几种常用方式
- 卷积神经网络(CNN)实现手写体识别
- Linux内核4.14版本:ARM64的内核启动过程(一)——start_kernel之前
- LeetCode练习题:斐波那契数列
- 油管视频目录正则整理
- 【科学文献计量】networkx绘制网络图的基本属性,图形读写以及无向/有向图形绘制详解
- 数分笔记整理25 - 数据处理项目 - 中国城市资本流动问题探索
- JavaWeb(Linux)
- 笔记本/台式机作为扩展屏
热门文章
- Censor (kmp)
- 数据结构与算法分析 3.43.5 — 链表的交与并算法
- 统计一段文字中的单词个数并按单词的字母顺序排序后输出
- win8系统笔记本装成win7
- OpenCV——问题解决:error: #error “This header with legacy C API declarations has been removed from OpenCV.
- 疲劳驾驶监测方案_一种疲劳驾驶检测方法
- 大学计算机专业未来四年的规划,大学生在大学四年怎么规划自己的未来?
- 微信4月份最新封号新规(重要)
- Spring+mybatis模拟银行转账
- 2021年中国IDC市场最新排行榜