c++ - 有没有办法关闭 boost 日期和时间验证

标签 c++ boost

我一直在分析我们的代码,并注意到在 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/

相关文章:

c++ - 将 nativeObject 转换为 QObject qt5 c++

c++ - boost::带有 bool 和 string 的变体

c++ - 嵌套的 boost::shared_ptr use_count 不更新

c++ - 提振 spirit ,为什么需要 as<> 指令? (又名帮助我理解属性兼容性规则)

c++ - 基于节点的容器的最佳分配器?

c++ - 使用 _1 和 _2 占位符运行 make 因 boost::bind 失败...?

c++ - 使用opengl显示3D点

c++ - 在 C++11 中是否有更优雅的方法来执行以下操作?

c++ - BHO 处理 OnSubmit 事件

c++ - 为什么在将r值引用分配给它时将其视为l值引用?