创龙科技
直播中

康选谦

7年用户 228经验值
私信 关注

编译器优化后DSP的运行速度完全没有变化

最近在做基于OMAPL138的一个图像处理的项目,在ARM端和DSP端都运行一些数据,参考的是创龙基于共享内存的例程ex04_sharedregion(在LINUX完成工程的编译工作)。由于想加快数据处理速度,想使用编译器优化的方法。在ARM的makefile文件中将优化选项由O2改为O3,ARM的运行速度提升了50%,很欣慰;但是把DSP的makefile文件中优化选项由O2改为O3,DSP的运行速度完全没有变化,再由O2改为O0,DSP的运行速度立刻降低为原来的50%左右。。。。难道对于DSP来说O2就是最高的优化了吗?(DSP中会反复调用5个数求中值的函数)

回帖(1)

马慧霞

2019-9-27 08:47:17
这是CCS编译器优化选项的功能:

1.       –O0

         简化控制流图

         分配变量到寄存器

         进行循环旋转(loop rotation)

         删除未使用的代码

         简化表达式和语句

         内联声明为inline的函数

2.       –O2

         执行局部复制/常量传递

         删除未使用的赋值语句

         删除局部共有表达式

3.       –O2

         进行软件流水

         进行循环优化

         删除全局共有子表达式

         删除全局未使用的赋值语句

         把循环中的对数组的引用转化为递增的指针形式

         把循环展开

4.       –O3

         删除未使用的所有的函数

         当函数的返回值没用到时,简化函数的返回形式

         内联小的函数

         重新对函数的声明进行排序。这样当优化调用代码时,被调用函数的属性是已知的

         当所有调用都传递一个相同的参数时,把这个参数直接放到函数体中去,不在通过寄存器/存储器的方式传递这

个参数。

         识别文件级别变量的特征

希望对您有帮助。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分