ccs程序优化中删除全局子表达式是什么意思

ccs程序优化中删除全局子表达式是什么意思,第1张

应该是禁用其他页面的CSS对本页面的影响。

效果就是,如果改页面引用了其他页面的CSS,当本页面的CSS跟其他的CSS文件中的CSS一样的时候,就会判断,舍远求近,只会调用本页面的css

但是如果删除了全局表达式,这个时候页面就不会进行判断,只会用本页面的css其他页面的不管。加快执行速度

望采纳。

优化举个简单例子:int

ii=1i=2i=3i=4i=5i=6i=7i=8i=9i=10这段代码会被直接优化成

i=10连续10次给i赋值,只有最后一次才有意义。前面的赋值没有意义,会被直接优化掉。如果后面i也没有被使用,则变量i本身没有意义,直接优化掉。最后编译出来的代码就是空。进一步,把上面的赋值换成循环int

ifor(i=1i<10i++)这段代码也会被优化成i=10循环相当于连续给i赋值9次,循环里面i的值是多少,是没有意义的,最后循环退出时的i值才有意义,相当于最后一次的赋值i=10如果后面的程序没有用到i,则变量i本身没有意义,直接优化掉。最后编译出来的代码就是空。谨记:空循环是没有意义的,有点优化能力的编译器,都会将空循完全环优化掉。如果需要延时,请加上volatile,或者调用编译器的延时函数,或者用编译参数禁止优化,或者使用内嵌汇编。总之,不要使用没有volatile的空循环带实现延时,这是不规范的。

我用的是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里有代码消耗时钟周期的统计,如果你觉得某段代码效率低下的话,可以先分段进行消耗时钟周期的计算,这样优化比较有针对性。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11147502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存