如何优化程序性能

如何去优化程序性能:

1.通过优化编译器
可以通过用带命令选项“-Og”调用gcc来编译程序,也可以选项“-O1”或者更高的“-O2”“-O3”调用gcc让程序更大量的优化。

2.优化程序代码
程序的优化可以从三个方面考虑:

  1. 循环次数越小越好
  2. 减少过程调用, 迭代的计算次数越少越好
  3. 减少对储存单元的读取

利用局限性对程序进行优化
良好的计算机程序更倾向于引用最近引用过的数据或数据项。

局限性的简单原则

  1. 重复引用相同变量的程序,具有良好的时间局限性
  2. 步长越小,空间局限性越好
  3. 循环体越小,循环迭代次数越多,局限性越好

举一个例子
下面三段代码的比较:

for(i=0;i<n;i++){
   for(j=0;j<n;j++){
     p[i].v[j]=0;
      for(j=0;j<n;j++)
          p[i].a[j]=0;
     }
   }
for(i=0;i<n;i++){
   for(j=0;j<n;j++)
      for(i=0;i<n;i++){
       p[i].v[j]=0;
       p[i].a[j]=0;
       }
     }
for(j=0;j<n;j++){
   for(i=0;i<n;i++)
   p[i].v[j]=0;
   for(i=0;i<n;i++)
   p[i].a[j]=0;
 }

上面三个代码:

代码1,以步长为1的引用模式访问数组,明显具有很好的空间局限性。
代码2,步长不为1,跳转为0,12,4,16,8,20,代码2的空间局限性比代码1的差。
代码3,不仅在每个结构中跳来跳去,而且还在结构与结构之间跳跃,代码3是最差的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值