修复
修复
修复
修复
修复
修复
已弃用
duration_short
、duration_long
已弃用。您应该使用参数化形式 duration_fmt
或重命名为 __duration_symbol 和 __duration_prefix 的操纵符。duration_punct
<> 面已弃用。您应该使用 get_duration_style
自由函数来获取信息,并使用 duration_units
面进行本地化。当 BOOST_CHRONO_VERSION==2 时,上述已弃用的函数将不可用。
修复
新功能
已弃用
duration_short
、duration_long
已弃用。您应该使用参数化形式 duration_fmt
或重命名为 __duration_symbol 和 __duration_prefix 的操纵符。duration_punct
<> 面已弃用。您应该使用 get_duration_style
自由函数来获取信息,并使用 duration_units
面进行本地化。当 BOOST_CHRONO_VERSION==2 时,上述已弃用的函数将不可用。
修复
不修复
尚未修复的已知错误
修复
修复
修复
新功能
修复
清理
功能
windows.h
文件)。实现
修复
Test
文档
参见 N2661 - A Foundation to Sleep On,该文档非常翔实,并为关键设计决策提供了动机。本节包含该文档的一些摘录。
此运算符方便计算一个给定的 duration 在一个时间帧中的位置。一个示例是将其转换为“分解”的时间 duration,例如 hours::minutes::seconds。
class ClockTime { typedef boost::chrono::hours hours; typedef boost::chrono::minutes minutes; typedef boost::chrono::seconds seconds; public: hours hours_; minutes minutes_; seconds seconds_; template <class Rep, class Period> explicit ClockTime(const boost::chrono::duration<Rep, Period>& d) : hours_ (boost::chrono::duration_cast<hours> (d)), minutes_(boost::chrono::duration_cast<minutes>(d % hours(1))), seconds_(boost::chrono::duration_cast<seconds>(d % minutes(1))) {} };
下表总结了每个平台上的每个时钟使用的 API。
表 5.4. 时钟 API 对应关系
时钟 |
Windows 平台 |
Posix 平台 |
Mac 平台 |
---|---|---|---|
GetSystemTimeAsFileTime |
clock_gettime( CLOCK_REALTIME) |
gettimeofday |
|
QueryPerformanceCounter 和 QueryPerformanceFrequency |
clock_gettime( CLOCK_STEADY) |
mach_timebase_info,mach_absolute_time |
|
GetProcessTimes |
times |
times |
|
GetProcessTimes |
times |
times |
|
GetProcessTimes |
times |
times |
|
GetProcessTimes |
times |
times |
|
GetThreadTimes |
clock_gettime(pthread_getcpuclockid) |
clock_gettime(pthread_getcpuclockid) |
请咨询您的操作系统供应商。结果已通过调试器检查,无论是 Windows 还是 Linux,这似乎是操作系统有时报告的结果。
Boost.Ratio 避免了由于算术运算可能导致的各种溢出,并且可以进行简化。typedef duration 不会检测溢出。您将需要一个处理溢出的 duration 表示。
每个时钟都有其自身的特性。这取决于您需要测试什么。大多数时候,您可能对使用线程时钟感兴趣,但如果您需要测量受同步影响的代码,进程时钟会更好。如果您有多个进程的应用程序,则可能需要系统范围的时钟。
出于跟踪目的,最好使用系统范围的时钟。
库代码源自 Howard Hinnant 的 time2_demo 原型。非常感谢 Howard 将他的代码在 Boost 许可下提供。原始代码由 Beman Dawes 修改,以符合 Boost 约定。
time2_demo 包含此评论
非常感谢 Andrei Alexandrescu、Walter Brown、Peter Dimov、Jeff Garland、Terry Golubiewski、Daniel Krugler、Anthony Williams。
文件 <boost/chrono_io.hpp> 已从 Howard Hinnant 的实验性头文件 <chrono_io>
改编而来。非常感谢 Howard。
Howard Hinnant,他也是库的真正作者,在库开发过程中提供了宝贵的反馈和建议。特别是,chrono_io_io.hpp 源代码已从 Howard Hinnant 的实验性头文件 <chrono_io>
改编而来。
Boost.Ratio 的验收评审于 2010 年 11 月 5 日至 15 日进行。非常感谢评审经理 Anthony Williams 以及所有评审员:David Deakins、John Bytheway、Roland Bock 和 Paul A. Bristow。
感谢 Ronald Bock、Andrew Chinoff、Paul A. Bristow 和 John Bytheway 协助完善文档。
感谢 Tom Tan 报告了 MSVC V10 beta 和 MinGW-gcc-4.4.0 的一些编译器问题,并大力推动实现同质化的 process_cpu_clock
时钟。
感谢 Ronald Bock 报告了 Valgrind 问题,并提出了许多关于文档的建议。