我考虑将长期功能分解为几个较小的功能,并且我关注性能。假设我们有很多代码行的长函数:
void f(){
....
}
现在,如果我们将工作内容提取到单独的函数中:
void f(){
f1();
f2();
f3();
}
它通常会影响性能吗?我正在寻找一般 策略来平衡性能和良好的软件设计。拥有小功能总是一个好习惯吗?假设一个具有私有成员变量int something
的类。可以通过致电get_something()
而不是公开something
来免费退货吗?
假设/O3
上的非虚拟和优化级别的功能。问题的重要性在于,如果第一个版本更快,我们将面临可维护性和性能之间的权衡。
答案 0 :(得分:6)
如果你的函数很简单,编译器通常会为你内联它们,因此没有开销。
即使编译器没有内联你的函数,如果函数调用的开销很重要,它们也必须是 very 热路径的一部分。
首先努力编写可读代码,然后担心性能问题。 只有在对应用程序进行概要分析(启用了优化)后才能优化性能,并证明相关代码是实际的性能瓶颈。