Jon*_*han 6 c++ performance inline wrapper
如果您已在编译器中启用了完全优化,并且类设置如下:
class A
{
void Do_A_Stuff();
};
class B
{
A a;
void Do_B_Stuff() { a.Do_A_Stuff(); }
};
class C
{
B b;
void Do_C_Stuff() { b.Do_B_Stuff(); }
};
class D
{
C c;
void Do_D_Stuff() { c.Do_C_Stuff(); }
};
Run Code Online (Sandbox Code Playgroud)
有没有一种情况,呼叫Do_D_Stuff()
会比直接呼叫慢Do_A_Stuff()
?此外,这是否需要inline
每个包装器'链'上的关键字,或者,因为它只是一个建议,编译器是否可以决定在没有关键字的情况下优化它?
我意识到有很多关于内联可用的信息,但是我找不到任何关于将许多包装器链接在一起的信息.
此外,这是否需要每个包装器'链'上的内联关键字,或者,因为它只是一个建议,编译器是否可以决定在没有关键字的情况下优化它?
是的,编译器可以决定优化它,即使你指定了关键字也可以决定不优化它inline
(如果设置了适当的编译器选项,可能会产生警告) - 注意,在类定义中定义的成员函数被隐含地标记为inline
.
通常,如果可以进行内联,编译器将根据被调用函数的主体决定是否内联.但是,如果函数是虚函数,或者编译器看不到函数的定义,则根本不可能内联.
如果满足内联条件并且编译器认为合适,则在内联函数调用时不存在技术问题.
作为一个小问题,注意你的类中的函数应该是public
,否则你的包装器将无法访问它们.
归档时间: |
|
查看次数: |
1075 次 |
最近记录: |