我被要求优化程序的一小部分.特别是在不使用内置优化器的情况下,使用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的结果执行,并且处理器可以同时调度循环中的两条线.
总结以上是内存溢出为你收集整理的在c中优化数组循环全部内容,希望文章能够帮你解决在c中优化数组循环所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)