大家好:
我用CCS5.2,编译3359的程序,发现:我的程序中调用的函数层数越多,程序运行速度越慢,并且,同样的代码,只是调换代码的顺序,执行的时间也不一致。
请问这个问题该如何处理?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好:
我用CCS5.2,编译3359的程序,发现:我的程序中调用的函数层数越多,程序运行速度越慢,并且,同样的代码,只是调换代码的顺序,执行的时间也不一致。
请问这个问题该如何处理?
这个和编译器没关系,层数越多,压栈越多,速度会慢。
你问的都属于代码的优化,建议你google下arm 代码优化,应该有些技巧。
跟编译器有关系
(1)我同样的一段用于测试消耗时间的代码,在CCS中如果在优化栏中,不选择优化的情形下,会慢很多。选择了优化后会快一些。
(2)还是同样的代码,在CCS和IAR编译器,测试运行的时间不一致,IAR编译出来运行的时间要短。
(3)我有套协议栈,在3359平台上(720M主屏),用CCS编译器,数据处理运行时间 竟然比在STM32F103平台上(72M的主屏,用keil编译器)还要长?
这套协议栈,子函数层数比较多,如果减少函数的调用层数,STM32当然跑不过3359。
在子函数层数较多的情况下,STM32运行时间比3359要短。
请问,在这种情形下,要如何设置编译器才能将应用程序提速?
在编译后的“xxxx.i”文件中有这样的语句
#line 1 "..\\..\\..\\..\\..\\Objdicts\\DS401_3P\\Objdict.c"
#line 1 "..\\..\\..\\..\\..\\Include\\copinc.h"
#line 1 "..\\..\\..\\..\\..\\Include\\cop.h"
#line 1 "..\\..\\..\\..\\..\\Include\\global.h"
这种算不算是将函数inline?
在程序文件中没有见到“inline”之类的关键字!