网站导航免费论文 原创论文 论文搜索 作业答案 网学软件 学术大家 资料中心 会员中心 问题解答 定作论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 设计资源 > 时间与效率 > 正文
优化时间效率的方法
来源:Http://myeducs.cn 联系QQ:3710167 作者: Admin 发布时间: 09/10/16

  1.       常数计算的优化

  一个表达式如果经常包含常数计算,则由于与数学表达式近似,易读性是很好,但是执行效率却不高.例如:

  for i:=1 to 100 do

  for j:=1 to 100 do

  begin

  tax:=a[i,j]-3200/12;

  int:=irate[j]/365/12-i;

  b:=tax/3*4;

  end

  在上面的程序中,常数表达式3200/12,365*12,4/3都要重复计算10000次,这样显然是没有必要的.于是可以改为

  c1:=3200/12;

  mc:=365*12;

  c2:=4/3;

  for i:=1 to 100 do

  for j:=1 to 100 do

  begin

  tax:=a[i,j]-c1;

  int:=irate[j]/mc –i;

  b:=tax*c2;

  end

  这样c1,c2,mc只计算一次并保持了原来的易读性.而且这样写即清楚有提高了程序的效率

  2.       算术运算的优化

  计算机中各种算术运算的效率相差很大,稍加注意就可以提高程序的效率.

  算术运算的速度由高到低为:加法>减法>乘法>除法>整数幂运算>实数幂运算

  所以提高效率的方法是:

  (1)    用加法代替乘法(仅对小整数而言)

  3*I不如I+I+I

  (2)    以乘法代替除法

  a/0.5不如a*0.2快

  (3)    对于多次除法运算使用下面的替换更有意义

  a:=2.0/x;

  c:=b+d/x;

  e:=(F-G)/x;

  改写为:

  PX:=1/x;

  a:=2.0*PX;

  c:=b+d*PX;

  e:=(F-G)*PX;

  (4)    尽量少用实数幂

  b3.0/2.0不如SQRT(b3)

  (5)    高次整数幂应该利用降阶操作

  p:=a*x^6+b*x^5-c*x^3+d*x^2+e;

  不如写为:

  p:=(((a*x+b)*x*x-c)*x+d)*x*x+e;

  前者为16次乘法和4次加减法,后者为6次乘法和4次加减法相差很多

  3.       利用非扩展循环

  相比之下在循环中,判断和增值运算比一个简单的赋值语句要费时,于是可以这样进行赋值:

  for i:=1 to 1000 do

  begin

  a[i]:=1;

  a[i+1]:=1;

  a[i+2]:=1;

  a[i+3]:=1;

  i:=i+4;

  end;

  这样就可以减少判断和增值运算3/4.但是这种方法也要适可而止不要写上100个赋值语句来让循环只有10次.

  在多层前套循环中应将循环数值大的放在内循环中,循环数值小的放在外面,这样也可以提高程序执行效率.

  还要将于循环无关的判断等操作放在循环的外面完成.

  4.       对于数组的访问优化

  我们知道计算机存放数组永远都是一维的,多维数组只是语言上面的约定,是为了易读易写而设置的,根据pascal的约定,数组的存放顺序是:

  后继元素的下标增量从右到左的.以数组x为例,x的顺序是

  x[1,1] 对应的地址是 1

  x[1,2] 对应的地址是2

  ****  对应的地址是 **

  x[1,500] 对应的地址是500

  x[2,1] 对应的地址是501

  x[2,2] 对应的地址是502

  ****  对应的地址是 **

  x[20,500] 对应的地址是10000

  如果我们存数组的顺序是按照x[1,1],x[2,1],x[3,1]…..的顺序的时候,所访问的地址为1,501,1001…...但是数据在机器里面存放是按照2KB为一个分页的,因此当寻址加上标值的位移量时还要查页码,反复查页码会耗费时间,所以当元素较多的时候应尽可能的按照顺序安排计算.

  • 上一篇资讯: 时间效率管理
  • 下一篇资讯: Flash课件制作的得与失
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 电话:013007313683 QQ:3710167 邮箱:Educs@163.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 Www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号