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

时间:2014-03-05 17:03:32

标签: c++ boost

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

1 个答案:

答案 0 :(得分:0)

看起来没有办法绕过这个。

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

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

当然,您可以尝试

  • 尽可能避免从输入中解析日期/时间
  • 尽可能避免转换为/来自boost数据时间类型

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

  • 解析大量输入(在这种情况下,我认为只需要验证和Good Thing(TM)
  • 可能效率低下使用Boost Datetime(例如,如果你使用像localtime()这样的C api并将结果转换为Boost类型。在这种情况下,更喜欢使用boost时钟作为时间源(例如second_clock::local_time()gregorian::day_clock()