加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在c中优化数组循环

发布时间:2020-12-16 10:29:18 所属栏目:百科 来源:网络整理
导读:我已经在网上看了我的书,但我似乎无法得到这个. 我被要求优化程序的一小部分.特别是在不使用内置优化器的情况下,使用vi和 gcc在一小段时间内获取数组并添加其内容. 我尝试过循环展开和其他一些针对产品的优化.你能帮忙吗? int length = ARRAY_SIZE;int limi
我已经在网上看了我的书,但我似乎无法得到这个.
我被要求优化程序的一小部分.特别是在不使用内置优化器的情况下,使用vi和 gcc在一小段时间内获取数组并添加其内容.
我尝试过循环展开和其他一些针对产品的优化.你能帮忙吗?

int length = ARRAY_SIZE;
int limit = length-4;
for (j=0; j < limit; j+=5) {
    sum += array[j] + array[j+1] + array[j+2] + array[j+3] + array[j+4];
}
for(; j < length; j++){
    sum += array[j];    
}

数组值是非常量整数,所有值都已初始化.

解决方法

创建子总和,然后加总和.

这是它的外观的基本版本

for (j=0; j < limit; j+=4) {
    sum1 += array[j];
    sum2 += array[j+1];
    sum3 += array[j+2];
    sum4 += array[j+3];
}
sum = sum1 + sum2 + sum3 + sum4;

这避免了一些写后读依赖性 – 也就是说,每次循环迭代中sum2的计算不需要等待sum1的结果执行,并且处理器可以同时调度循环中的两条线.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读