优化程序性能

注意在一些循环中可以用到的提升程序性能的方法,并且避免一些不必要的内存访问。

#include<iostream>
using namespace std;

//实现一个功能:更新数组元素,更新值为此位置及前面元素之和。
//方法1
void test01(int *arr,int *sum,int len) {
    sum[0]=arr[0];
    for(int i=1;i<len;i++) {
        sum[i]=sum[i-1]+arr[i];
    }
}
//方法2,减少循环的次数,即充分利用每次循环所具备的资源
void test02(int *arr,int *sum,int len) {
    sum[0]=arr[0];
    //关于跳出边界的判断卡住最坏的情况:i=len-1-1的时候必须跳出来,因为循环中有arr[i+1],不然会越界
    int i;
    for(i=1;i<len-1;i+=2) {
        sum[i]=sum[i-1]+arr[i];
        sum[i+1]=sum[i]+arr[i+1];
    }
    if(i<len)
        sum[i]=sum[i-1]+arr[i];
}

//减少不必要的内存访问
//方法1
void test03(int *arr,int *sum2,int len) {
    for(int i=0;i<len;i++) {
        //这是一个很低效的代码,因为每次循环都要访问内存,而最后只是要一个结果,完全没有必要
        *sum2+=arr[i];//求数组的累积和
    }
}
//方法2
void test04(int *arr,int *sum2,int len) {
    int temp=0;
    for(int i=0;i<len;i++) {
        //用一个临时变量存放每次循环计算结果,省去对内存的访问
        temp+=arr[i];//求数组的累积和
    }
    *sum2=temp;
}
int main()
{
    int arr[5]={1,2,3,4,5};
    int sum[5];
    //test01(arr,sum,5);//1 3 6 10 15 
    test02(arr,sum,5);//1 3 6 10 15 
    //输出数组元素
    // for(int i=0;i<5;i++)
    //     cout<<sum[i]<<" ";
    int sum2=0;
    //test03(arr,&sum2,5);//15
    test04(arr,&sum2,5);//15
    cout<<sum2;
    return 0;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是浩浩子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值