说我有一类带有某些方法f()的类:
class Example
{
Example();
~Example();
void f();
}
假设f()
仅几行。我们还要说Example
中的其他方法本身会调用f()
。在这种情况下调用f()
会造成开销,而不是将其代码复制到需要的地方吗?
答案 0 :(得分:2)
它称为function inlining,让编译器自动执行。如今,编译器对此非常激进。
答案 1 :(得分:0)
“过早的优化是万恶之源”
代码重复是一种不好的做法,您会花费几纳秒的时间-我怀疑这是不值得的。
您可以要求编译器inline
编写代码或执行丑陋的macro
而不是函数和代码重复。
开销的答案是肯定的,否取决于您的工作方式和方式。
答案 2 :(得分:0)
从理论上讲,不启用优化可能会产生开销,但是,正如先前的回答所述,如今的代码内联非常激进,编译器无需询问就可以这样做。
如果不进行优化,则可能会增加2条指令,
1:mov
this
进入寄存器
2:call
功能。
但是,优化将解决此问题。