在c++时间库(日期或时间(中,使用这些库的高精度类型会降低性能(内存使用率、速度(吗?还是与精度类型无关?
高精度类型:纳秒、微秒、毫秒。。。
chrono::duration
中的精度选择是精度和范围之间的权衡,对性能没有影响。
chrono提供的每个时钟都有一个由其嵌套的duration
类型记录的"本机精度",这就是它的本质(客户端无法更改(。如果你想要一个不同于它的time_point
或duration
(在调用now()
之后(,那么成本是一次乘法或除法,以获得你想要的精度。一旦你有了你想要的精度,使用这种精度就没有进一步的成本了。
精度越高,通常的范围越小。除非使用提供此类检查的自定义Rep
,否则不存在过流保护。您可以使用静态duration::min()/max()
成员函数检查您的范围。
在将具有非常大但在范围内的值的课程持续时间转换为更精细的精度时,可能会产生运行时错误,从而导致更精细精度的溢出。例如,如果您有超过292年的microseconds
,并将其转换为nanoseconds
,则会出现溢出。