提取功能会影响性能吗?

时间:2016-05-16 14:29:53

标签: c++

我考虑将长期功能分解为几个较小的功能,并且我关注性能。假设我们有很多代码行的长函数:

void f(){
....
}

现在,如果我们将工作内容提取到单独的函数中:

void f(){
  f1();
  f2();
  f3();
} 

它通常会影响性能吗?我正在寻找一般 策略来平衡性能和良好的软件设计。拥有小功能总是一个好习惯吗?假设一个具有私有成员变量int something的类。可以通过致电get_something()而不是公开something来免费退货吗?

假设/O3上的非虚拟和优化级别的功能。问题的重要性在于,如果第一个版本更快,我们将面临可维护性和性能之间的权衡。

1 个答案:

答案 0 :(得分:6)

如果你的函数很简单,编译器通常会为你内联它们,因此没有开销。

即使编译器没有内联你的函数,如果函数调用的开销很重要,它们也必须是 very 热路径的一部分。

首先努力编写可读代码,然后担心性能问题。 只有在对应用程序进行概要分析(启用了优化)后才能优化性能,并证明相关代码是实际的性能瓶颈。

相关问题