在方法内部调用方法会导致开销吗?

时间:2019-07-18 22:03:14

标签: c++

说我有一类带有某些方法f()的类:

class Example
{
  Example();
  ~Example();
  void f();
}

假设f()仅几行。我们还要说Example中的其他方法本身会调用f()。在这种情况下调用f()会造成开销,而不是将其代码复制到需要的地方吗?

3 个答案:

答案 0 :(得分:2)

它称为function inlining,让编译器自动执行。如今,编译器对此非常激进。

答案 1 :(得分:0)

“过早的优化是万恶之源”

代码重复是一种不好的做法,您会花费几纳秒的时间-我怀疑这是不值得的。 您可以要求编译器inline编写代码或执行丑陋的macro而不是函数和代码重复。

开销的答案是肯定的,否取决于您的工作方式和方式。

答案 2 :(得分:0)

从理论上讲,不启用优化可能会产生开销,但是,正如先前的回答所述,如今的代码内联非常激进,编译器无需询问就可以这样做。

如果不进行优化,则可能会增加2条指令, 1:mov this进入寄存器 2:call功能。

但是,优化将解决此问题。

https://godbolt.org/z/wzhSzG