C ++ 11:constexpr构造函数性能

时间:2014-03-01 13:01:14

标签: c++11

我对constepxt ctors感到困惑。

以下是否同样快(或更快)

while(true)
{
   constexpr std::chrono::hours one_hour(1);
   ..
}

比(仅创建一个实例):

while(true)
{
   static constexpr std::chrono::hours one_hour(1);
   ..
}

换句话说,constexpr ctor是否意味着没有任何运行时开销?

2 个答案:

答案 0 :(得分:8)

  

constexpr ctor是否意味着没有任何运行时开销?

如有疑问,可随时查看;例如:

#include <chrono>

template <long Long>
class dummy { };

int main() {

  constexpr std::chrono::hours one_hour(1);

  dummy<one_hour.count()> d; 
}

它编译的事实意味着one_hour 是编译时常量,因此没有任何运行时开销。

答案 1 :(得分:1)

此处添加constexpr不会产生太大影响,因为std::chrono持续时间和时间点只包含一个整数成员。换一种说法。初始化的性能与int相同。