有没有办法关闭提升日期和时间验证
Is there a way to turn off boost date and time validation
我一直在分析我们的代码,并注意到很多时间都花在了提升时间和日期函数上。似乎大部分时间都花在验证该数字是否在范围内且有效上。是否有编译器选项可以关闭此验证以提高提升日期时间函数的性能?
看起来没有办法规避这一点。
验证是无条件的,并且是设计使然。但它只在需要时发生(当从外部源接收输入时)。其余时间,代码库中的不变量消除了重新验证的需要。
(参见例如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()
)
相关文章:
- 使用 C++将时间戳转换为格式化的日期时间
- C++代码的 C# 日期时间等效项是什么?
- 如何在提升日期时间中创建日期范围?
- 在 c++ 中将 ISO 日期时间转换为本地日期时间并提取时间
- Rcpp/C++/R:比较日期时间矢量与日期时间时出错(错误:"运算符>"的不明确重载)
- 如何将毫秒的日期时间字符串转换为 UNIX 时间戳
- 扩展中的日期时间对象方法C++问题
- 将DateTime字符串分为C 的日期时间
- C++以微秒为单位解析日期/时间
- 仅将纪元字符串保存到 mysql 日期时间年/月/日,但没有小时分钟秒
- 使用提升解析日期时间字符串:采用个位数小时格式
- C++ Poco SQL 查询不返回具有'between'和'and'日期时间绑定的结果
- 快速将带有时区的日期时间字符串转换为 UNIX 时间戳(C++)
- 从C 的时间戳提取日期时间戳
- 标准::get_time 中的日期时间格式
- 生成包含分数和时区的完整 iso 日期时间表示字符串
- 通过 ODBC C++将带有日期时间的记录插入 SQL Server 2014 的问题
- 在 C++20 中获取当前日期/时间是否线程安全?
- mongocxx:插入日期时间
- Poco 日期时间格式化程序 - 使用当前时区打印时间戳