对DSP而言,CCS用C语言编程和汇编编程,二者的效率相差多少?

对DSP而言,CCS用C语言编程和汇编编程,二者的效率相差多少?假定编程者能熟练使用C与汇编。DSP为C67**有人说CCS的将C编译成汇编的效率能达到90%,是这样吗?... 对DSP而言,CCS用C语言编程和汇编编程,二者的效率相差多少?假定编程者能熟练使用C与汇编。DSP为C67**
有人说CCS的将C编译成汇编的效率能达到90%,是这样吗?
展开
 我来答
moosewoler
2010-09-21 · TA获得超过827个赞
知道小有建树答主
回答量:203
采纳率:75%
帮助的人:106万
展开全部
我用的是28XX系列的,不知道经验对你有没有用,因为不同系列的芯片多少有些差别。
TI提供的库已经相当可以了,兼顾易用与效率。我当时做过这样的测试
1. 用IQMATH实现
2. 直接C语言实现
3. C语言优化实现
4. 原生汇编实现
IQMATH的运行周期在1000左右,比方案3快几十个周期,比方案4慢几个周期,方案2是10000多个周期。
另外,因为只是单独测的算法,汇编之所以快是快在寄存器的使用上,操作数可以直接入寄存器,但是考虑到程序其他部分是用C语言编写的话,把操作栈的时间也加上,并不比方案1快。毕竟我对TI的汇编吃的也不透。
在编写上,无疑是方案1提供了最接近C语言风格的实现,几乎不用考虑ISA方面的问题。
另外对于执行效率,我觉得主要考虑三点:
1.分支的使用
CCS对C语言的优化我没做过太多比对。其实单从反汇编的结果看,我接触过的嵌入式开发环境的编译器都能做出很好的优化。但是几乎每个编译器都会在逻辑的优化上有欠缺——它只能对一些显而易见的判断条件进行优化,而在写程序的过程中,我们经常出于易读性的考虑,或者稳定性的考虑,或者其他的考虑加入几乎不会发生的分支,这样的分支判断会消耗一定比率的代码段执行效率,视乎代码段内有用功能的长度而定,越长这个比率越小,越短这个比率越高。
2.一般操作,就是各种赋值操作
在一般的操作上,编译器的优化已经很令人满意了,基本上可以作为编写汇编的范本。我觉得所谓效率能达到90%就是针对这个部分说的。
3.特殊操作,比如对整块内存的操作,或者是浮点运算上。
在一些特殊的操作上,就要看是否有现成的库,或者看硬件是否支持。比如对整块内存操作就别用循环一个字节一个字节的搬了。
以上三点都能考虑到的话,相信执行效率方面已经没有太大的提升空间了。

另外如果你的代码发生在初始化部分,也就是只在系统运行开始的时候运行一次,那么优化不优化其实没有太大的必要,除非你对系统初始化的时间有严格的要求。但是如果你的代码是作为任务要被反复运行的,那就有优化的必要了。

在CCS里有代码消耗时钟周期的统计,如果你觉得某段代码效率低下的话,可以先分段进行消耗时钟周期的计算,这样优化比较有针对性。
晓网科技
2024-10-17 广告
数据传输速率低:10Kb/s~250Kb/s,专注于低速率传输应用  功耗低:在低功耗待机模式下,两节普通 5号电池可使用 6~24 个月。成本低:Zigbee 数据传输速率低,协议简单,所以大大降低了成本  网络容量大:网络可容纳 65,... 点击进入详情页
本回答由晓网科技提供
ojlvo
2010-09-14
知道答主
回答量:18
采纳率:0%
帮助的人:0
展开全部
C上手很快的,汇编上手比较慢,汇编很麻烦,适合一些接口编程用,汇编的效率比C高,但是不会高太多的,建议用C,现在的例程大都用C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangm0601
2010-09-14
知道答主
回答量:6
采纳率:0%
帮助的人:3.2万
展开全部
一般都是用C的,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chensuchang
2010-09-14 · TA获得超过6399个赞
知道大有可为答主
回答量:6655
采纳率:50%
帮助的人:4878万
展开全部
C好开发些。
汇编麻烦多了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式