通过值或通过引用传递std :: chrono :: duration?

时间:2016-06-20 08:49:16

标签: c++ performance c++11 chrono

所以在过去我通过引用传递了std::chrono::duration个值,但现在我认为它们只不过是一个包含在类中的单个算术类型,因此按值传递它是有意义的。

有没有人描述过它?

2 个答案:

答案 0 :(得分:4)

根据规范,duration包含

中指定的Rep类型的单个变量(滴答数)
template<
    class Rep, 
    class Period = std::ratio<1> 
> class duration;

所以基本上你可以选择像处理Rep类型那样处理复制/传递const ref。 当我以前使用chromo :: duration时,我选择它是一个很长的,在这种情况下,我没有看到通过const引用传递的理由,(特别是在我的架构中,一个long和一个地址都是8个字节)

答案 1 :(得分:1)

  

我认为它们只不过是一个包含的算术类型

查看cppreference.com

  

持续时间中存储的唯一数据是Rep类型的刻度计数。如果Rep是浮点数,则持续时间可以表示刻度的分数。期间包含在持续时间类型的一部分中,仅在不同持续时间之间转换时使用。

  

其中滴答周期是编译时合理常量

你的猜测是对的