程序优化之循环展开

来源:互联网 发布:fluent python mobi 编辑:程序博客网 时间:2024/04/27 21:36

硬件环境:DSP TMS320C6670开发板

时钟频率:1.2GHz

注:该型号DSP具有两条数据通路和两套寄存器,在测试结果中会体现。

代码版本1:

for(i=0;i<12;i++)
{
result*=a[i];
}

测试Cycles:101

代码版本2:

for(i=0;i<12;i+=2)
{
result*=a[i];
result*=a[i+1];
}

测试Cycles:59

代码版本3:

for(i=0;i<12;i+=2)
{
result1*=a[i];
result2*=a[i+1];
}

执行Cycles:54

代码版本4:

for(i=0;i<12;i+=4)
{
result1*=a[i];
result2*=a[i+1];
result1*=a[i+2];
result2*=a[i+3];
}

测试Cycles:30


结果分析:

版本1是最简单最原始的代码,版本2利用了两条数据计算通路的特点,性能得到了近1倍的提升,

版本3相较版本2,利用了两次计算结果不相关的方法(result1、result2),流水线性能稍有提升。

版本4则充分利用了数据通路、流水线处理等,并减少了循环次数,因而性能更优越。


0 0