C语言循环优化二三事(二)

在前一篇博客里,我们提出了三种常见的循环优化的方法,美国空间,主要包括:减少不必要的计算,减少不必要的函数调用,减少不必要的内存访问。这三种方法跟特定的机器的特性无关,具有很强的通用性。今天,香港虚拟主机,我们本着榨干机器最后一滴性能的原则,再进一步提出几种跟指令执行有关系的优化方法。

一.循环展开

循环展开可以减少循环的次数,对程序的性能带了两方面的提高。一是减少了对循环没有直接贡献的计算,比如循环计数变量的计算,分支跳转指令的执行等。二是提供了进一步利用机器特性进行的优化的机会。

例子:

优化前的代码见前一篇博客里的sum3.

优化后:

void sum4(vec_ptr v,data_t *dest){int i;int len=vec_length(v);int limit=len-3;data_t *data=get_vec_start(v);data_t acc=0;for(i=0;i<limit;i+=4){acc=acc+data[i]+data[i+1];acc=acc+data[i+2]+data[i+3];}for(;i<len;++i)acc+=data[i];*dest=acc;},香港虚拟主机摘抄美文4、承诺是一件美好的事情,但美好的东西往往不会变为现实。

C语言循环优化二三事(二)

相关文章:

你感兴趣的文章:

标签云: