在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的结果执行,并且处理器可以同时调度循环中的两条线. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |