关于编译器优化的问题 - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4452|回复: 3
打印 上一主题 下一主题

[未解决] 关于编译器优化的问题

[复制链接]

8

主题

31

帖子

160

积分

注册会员

Rank: 2

积分
160
跳转到指定楼层
楼主
发表于 2018-6-27 21:34:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做基于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个数求中值的函数)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

8

主题

31

帖子

160

积分

注册会员

Rank: 2

积分
160
沙发
 楼主| 发表于 2018-6-27 21:38:09 | 只看该作者
#  ======== toolchain macros ========
CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)

CC = $(CGTOOLS)/bin/cl6x -c
AR = $(CGTOOLS)/bin/ar6x rq
LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
ST = $(CGTOOLS)/bin/strip6x

CPPFLAGS =
CFLAGS = -qq $(CCPROFILE_$(PROFILE)) -I. $(COMPILER_OPTS)

LDFLAGS = -w -q -c -m $(@D)/obj/$(@F).map
LDLIBS = -l $(CGTOOLS)/lib/rts6740_elf.lib

CCPROFILE_debug = -D_DEBUG_=1 --symdebug:dwarf
CCPROFILE_release = -O2
COMPILER_OPTS = $(shell cat configuro/compiler.opt)

附上我DSP的makefile文件编译优化的代码段
回复 支持 反对

使用道具 举报

5

主题

17

帖子

1167

积分

金牌会员

Rank: 6Rank: 6

积分
1167
板凳
发表于 2018-6-28 21:01:08 | 只看该作者
这是CCS编译器优化选项的功能:

1.       –O0

         简化控制流图

         分配变量到寄存器

         进行循环旋转(loop rotation)

         删除未使用的代码

         简化表达式和语句

         内联声明为inline的函数

2.       –O2

         执行局部复制/常量传递

         删除未使用的赋值语句

         删除局部共有表达式

3.       –O2

         进行软件流水

         进行循环优化

         删除全局共有子表达式

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

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

         把循环展开

4.       –O3

         删除未使用的所有的函数

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

         内联小的函数

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

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

个参数。

         识别文件级别变量的特征

希望对您有帮助。

回复 支持 反对

使用道具 举报

8

主题

31

帖子

160

积分

注册会员

Rank: 2

积分
160
地板
 楼主| 发表于 2018-6-29 21:42:11 | 只看该作者
小晓筱伟 发表于 2018-6-28 21:01
这是CCS编译器优化选项的功能:

1.       –O0

好的,谢谢,可能是我的函数并不适合O3的优化。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-7 02:30 , Processed in 0.035010 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表