感谢。
答案 0 :(得分:7)
这取决于编译器。许多较旧的编译器一次只优化了一个函数,因此编写更大的函数(达到某个限制)可以改善优化 - 但是(大多数)超过该限制会完全关闭优化。
最合理的当前编译器可以为函数生成内联代码(并且C99添加了ineline
关键字以促进这一点)并进行全局(跨函数)优化,在这种情况下它通常没有任何区别。< / p>
答案 1 :(得分:1)
@ twain249和@Jerry都是正确的;将程序分解为多个函数会对性能产生负面影响,但这取决于编译器是否可以将函数优化为内联代码。
唯一可以确定的方法是检查程序的汇编输出并进行一些分析。例如,如果您知道特定的代码路径导致性能问题,您可以查看汇编程序,查看调用的函数数量,参数被压入堆栈的次数等。在这种情况下,您可能希望将小功能合并为一个较大的功能。
这在过去一直是我关注的问题:对嵌入式项目进行非常严格的优化,我有意识地尝试减少函数调用的次数,特别是在紧密循环中。然而,这确实产生了笨拙的功能,有时几页长。为了降低维护成本,您可以使用宏,我已经大量利用并成功地确保没有函数调用,同时保持可读性。