对于大型"for"循环来说哪个更快:函数调用还是内联编码?

zap*_*lec 1 c embedded runtime inline-code function-call

我编写了一个嵌入式软件(当然使用C语言),现在我正在考虑改善系统运行时间的方法.我系统中最重要的单个模块是一个非常大的嵌套for循环模块.

该模块由两个嵌套的for循环组成,循环最多122500次.这还不是很多,但问题是嵌套for循环内部我有一个函数调用另一个源文件中的函数.该特定函数主要由两个嵌套for循环组成,循环总循环次数为22500次.所以现在我必须拨打122500次函数.

我已经使这个函数被称为更轻和更短(但仍然可以正常工作)现在我开始认为,扯掉该函数调用并将该进程直接写入前两个函数中会更快循环?

该系统中的处理器是ARM​​7TDMI,其频率为55MHz.系统本身并不是非常重要的时间,因此它不必具备实时能力.然而,处理其职责的速度越快越好.

使用while循环而不是fors也会更快吗?关于如何改善运行时间的任何建议都值得赞赏.

-zaplec

Sho*_*og9 19

尝试一下!!

它几乎肯定会有所作为.函数调用开销通常不是那么大的问题,但是重复超过100K时它开始累加起来.

...但是,它是否会产生任何现实世界的差异只有你可以在尝试并对结果进行计时后才能回答.

至于forvs while...除非你在更改循环时实际改变行为,否则无关紧要.如果有疑问,请让编译器为两者编译汇编代码并进行比较......或者只是更改它并为其计时.