许多小型功能

时间:2012-04-25 19:41:16

标签: c optimization compiler-construction

在计算机文献中,通常建议尽可能多地编写短函数。我知道它可能会增加可读性(虽然并非总是如此),这种方法也提供了更大的灵活性。但它与优化有关吗?我的意思是 - 编译器编译一堆小例程而不是几个大例程是否重要?

感谢。

2 个答案:

答案 0 :(得分:7)

这取决于编译器。许多较旧的编译器一次只优化了一个函数,因此编写更大的函数(达到某个限制)可以改善优化 - 但是(大多数)超过该限制会完全关闭优化。

最合理的当前编译器可以为函数生成内联代码(并且C99添加了ineline关键字以促进这一点)并进行全局(跨函数)优化,在这种情况下它通常没有任何区别。< / p>

答案 1 :(得分:1)

@ twain249和@Jerry都是正确的;将程序分解为多个函数会对性能产生负面影响,但这取决于编译器是否可以将函数优化为内联代码。

唯一可以确定的方法是检查程序的汇编输出并进行一些分析。例如,如果您知道特定的代码路径导致性能问题,您可以查看汇编程序,查看调用的函数数量,参数被压入堆栈的次数等。在这种情况下,您可能希望将小功能合并为一个较大的功能。

这在过去一直是我关注的问题:对嵌入式项目进行非常严格的优化,我有意识地尝试减少函数调用的次数,特别是在紧密循环中。然而,这确实产生了笨拙的功能,有时几页长。为了降低维护成本,您可以使用宏,我已经大量利用并成功地确保没有函数调用,同时保持可读性。