我一直在分析我们的代码,并注意到在 boost 时间和日期函数上花费了大量时间。似乎大部分时间都花在验证该数字在范围内且有效上。是否有编译器选项可以关闭此验证以 boost boost 日期时间函数的性能?
最佳答案
看起来没有办法规避这一点。
验证是无条件的并且是设计使然。但它只在需要时发生(当从外部源接收输入时)。其余时间,代码库中的不变量消除了重新验证的需要。
(有关文档引用,请参见例如 http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/gregorian.html#date_intro)
当然,你可以试试
- 尽可能避免从输入中解析日期/时间
- 尽可能避免与 boost 数据时间类型相互转换
特别是,如果这成为瓶颈,您可能就是
- 解析大量输入(在这种情况下,我认为验证是必需的,而且是一件好事 (TM)
- 可能使用 Boost Datetime 效率低下(例如,如果您使用像
localtime()
这样的 C api 并将结果转换为 Boost 类型。在这种情况下,更喜欢使用 boost 时钟作为时间源(例如second_clock::local_time()
或gregorian::day_clock()
)
关于c++ - 有没有办法关闭 boost 日期和时间验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22204324/