我试图弄清楚使用constexpr
而不是正常情况创建对象是否会带来性能提升。
以下是constexpr
的代码段。
class Rect
{
const int a;
const float b;
public:
constexpr Rect(const int a,const float b)
: a(a),b(b){}
};
int main()
{
constexpr Rect rect = Rect(1,2.0f);
}
没有constexpr
。
class Rect
{
int a;
float b;
public:
Rect(int a, float b)
: a(a),b(b){}
};
int main()
{
Rect rect = Rect(1,2.0f);
}
我期待constexpr
的代码会少很少,因为内存应该在编译时初始化。
我正确使用constexpr
吗?如果不是这样,你可以使用constexpr
在编译时创建对象,然后在没有任何运行时开销的情况下使用它们吗?
谢谢!
答案 0 :(得分:0)
事实证明,我有一些标题,它们负责代码的相似性。
答案是两种情况之间存在很大差异。
在没有优化的情况下进行编译时,生成的代码中有there is a substantial difference ... -cdhowie