似乎有很多朋友对于我说的“避免使用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 开源软件项目

提高软件执行效率的几条原则相关推荐

  1. 提高软件开发效率的方法

    一个开发任务下达以后,我们希望尽快的实现的,对软件开发工程师的要求是:多快好省 多--单位时间产量高 快--同样的产量所需的时间少 好--质量高 省--省钱,省时,省资源 这四个目标中最主要的又是&q ...

  2. improve php,解析提高PHP执行效率

    解析提高PHP执行效率 1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的 ...

  3. 提高SQL执行效率的几点建议

    提高SQL执行效率的几点建议: 1.尽量不要在where中包含子查询 2.关于时间的查询,尽量不要写成:where to_char(dif_date,'yyyy-mm-dd')=to_char('20 ...

  4. 提高python执行效率_关于提高python程序执行效率的思路和想法

    原博文 2016-06-09 22:25 − 相比编译型语言(C系列)python胜在简介的语法和优雅的动态编程体验,但是在执行效率上,python有解释性语言先天的劣势--执行效率较低,为了让编写出 ...

  5. 提高SQL执行效率的16种方法

    项目中优化sql语句执行效率的方法: 1)尽量选择较小的列 2)将where中用的比较频繁的字段建立索引 3)select子句中避免使用'*' 4)避免在索引列上使用计算.not in 和<&g ...

  6. 五十个小技巧提高PHP执行效率

    在项目开发过程中,经常遇到了一些PHP处理程序性能底下的情况,程序运行在centos+nginx环境,虽然这个有很多的原因如:服务器本身配置,运行环境nginx服务,php-fpm配置等等,更多有一点 ...

  7. C:提高C代码运行效率的方法有哪些?列举几个提高代码执行效率的方法

    文章目录 1.选择合适的算法 2.选择合适的数据结构 3.选择合适的数据类型 4.减少冗余拷贝或赋值次数 5.减少运算的强度 6.减少循环内耗时操作 7.其它 1.选择合适的算法 应该熟悉算法语言,知 ...

  8. 为什么CPU流水线会提高代码执行效率?

    关注.星标公众号,不错过精彩内容 素材来源:网络 编辑整理:strongerHuang 为什么有些CPU的主频更低,但运算效率却更高呢? 比如:51单片机30M主频,STM32单片机20M主频,执行相 ...

  9. javascript 执行效率 java_有效提高JavaScript执行效率的几点知识

    为了提供新鲜.别致的用户体验,很多网站都会使用 JavaScript 来改善设计.验证表单.检查浏览器,以及Ajax请求,cookie操作等等,实现无刷新动态效果 .但是,要将大量内容在浏览器呈现,如 ...

最新文章

  1. [NHibernate] Guid 作主键速度超慢的背后
  2. Shell-实际业务操作01
  3. 函数式编程的兴衰与当前之崛起
  4. ubuntu 打包压缩
  5. 【Linux开发】linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想...
  6. 动态构建LINQ表达式
  7. re模块中的非贪婪匹配
  8. [转载]在ASP.NET中使用Microsoft Word文档
  9. Ubuntu下实现双屏独立切换
  10. 一个简单的倒计时js插件
  11. 简单Java类和数据库操作及javafx的结合小项目(二)
  12. html中js怎么实现页面跳转页面,JavaScript实现页面跳转的几种常用方式
  13. 卷积神经网络(CNN)实现手写体识别
  14. Linux内核4.14版本:ARM64的内核启动过程(一)——start_kernel之前
  15. LeetCode练习题:斐波那契数列
  16. 油管视频目录正则整理
  17. 【科学文献计量】networkx绘制网络图的基本属性,图形读写以及无向/有向图形绘制详解
  18. 数分笔记整理25 - 数据处理项目 - 中国城市资本流动问题探索
  19. JavaWeb(Linux)
  20. 笔记本/台式机作为扩展屏

热门文章

  1. Censor (kmp)
  2. 数据结构与算法分析 3.43.5 — 链表的交与并算法
  3. 统计一段文字中的单词个数并按单词的字母顺序排序后输出
  4. win8系统笔记本装成win7
  5. OpenCV——问题解决:error: #error “This header with legacy C API declarations has been removed from OpenCV.
  6. 疲劳驾驶监测方案_一种疲劳驾驶检测方法
  7. 大学计算机专业未来四年的规划,大学生在大学四年怎么规划自己的未来?
  8. 微信4月份最新封号新规(重要)
  9. Spring+mybatis模拟银行转账
  10. 2021年中国IDC市场最新排行榜