有没有办法关闭提升日期和时间验证

Is there a way to turn off boost date and time validation

本文关键字:日期 时间 验证 有没有      更新时间:2023-10-16

我一直在分析我们的代码,并注意到很多时间都花在了提升时间和日期函数上。似乎大部分时间都花在验证该数字是否在范围内且有效上。是否有编译器选项可以关闭此验证以提高提升日期时间函数的性能?

看起来没有办法规避这一点。

验证是无条件的,并且是设计使然。但它只在需要时发生(当从外部源接收输入时)。其余时间,代码库中的不变量消除了重新验证的需要。

(参见例如http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/gregorian.html#date_intro 相关文档引用)

当然,您可以尝试

  • 尽可能避免从输入中解析日期/时间
  • 尽可能避免与 BOOST 数据时间类型相互转换

特别是,如果这成为瓶颈,您可能

  • 解析大量输入(在这种情况下,我认为验证是必需的,并且是一件好事(TM)
  • 也许使用提升日期时间效率低下(例如,如果您使用 C API 的类似localtime()并将结果转换为提升类型。在这种情况下,更喜欢使用升压时钟作为时间源(例如second_clock::local_time()gregorian::day_clock())