Tyl*_*erg 3 c++ optimization gcc accessor c++11
假设我有这门课
class Point
{
inline float x() const { return v[0]; }
inline float y() const { return v[1]; }
inline float z() const { return v[2]; }
float v[3];
};
Run Code Online (Sandbox Code Playgroud)
我这样做:
Point myPoint;
myPoint[0] = 5;
// unrelated code goes here
float myVal = myPoint.x() + 5;
Run Code Online (Sandbox Code Playgroud)
将上的GCC-O2或-O3优化掉任何调用x()与刚开v[0]?IE:
float myVal = myPoint.v[0] + 5;
Run Code Online (Sandbox Code Playgroud)
或者有什么理由说明这是不可能的?
更新:应该提到我确实意识到inline对编译器的建议比其他任何事情都重要,但无论如何都想知道。
作为一个附加问题,对此类进行模板化是否会对可以进行的优化产生任何影响?
GCC 会优化掉内联访问器吗?
所有优化编译器都会这样做。与其他优化相比,这是一个微不足道的优化。
或者有什么理由说明这是不可能的?
没有理由使它不可能,但也没有保证。
作为一个附加问题,对此类进行模板化是否会对可以进行的优化产生任何影响?
不是。但是,当然,编译器可能有不同的模板内联阈值。
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |