修复
修复
修复
修复
修复
修复
已弃用
duration_short
、duration_long
已弃用。您应该使用参数化形式 duration_fmt
或重命名的操纵器 __duration_symbol 和 __duration_prefix。duration_punct
<> facet 已弃用。您应该使用 get_duration_style
自由函数获取信息,并使用 duration_units
facet 用于本地化目的。当 BOOST_CHRONO_VERSION==2 时,前面提到的已弃用函数不可用。
修复
新功能
已弃用
duration_short
、duration_long
已弃用。您应该使用参数化形式 duration_fmt
或重命名的操纵器 __duration_symbol 和 __duration_prefix。duration_punct
<> facet 已弃用。您应该使用 get_duration_style
自由函数获取信息,并使用 duration_units
facet 用于本地化目的。当 BOOST_CHRONO_VERSION==2 时,前面提到的已弃用函数不可用。
修复
不会修复
尚未修复的已知错误
修复
修复
修复
新功能
修复
清理
特性
windows.h
文件)。实现
修复
测试
文档
参见 N2661 - A Foundation to Sleep On,它非常翔实,并为关键设计决策提供了动机。本节包含该文档中的一些摘录。
此运算符便于计算给定持续时间在时间范围内的位置。一个激励性的例子是将持续时间转换为“分解”的时间持续时间,例如小时:分钟:秒
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
表 6.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 durations 不检测溢出。您将需要一个处理溢出的持续时间表示。
每个时钟都有其自身的特性。这取决于您需要基准测试什么。大多数情况下,您可能感兴趣的是使用线程时钟,但是如果您需要测量受同步影响的代码,则进程时钟会更好。如果您有一个多进程应用程序,则可能需要一个系统范围的时钟。
出于跟踪目的,最好使用系统范围的时钟。
该库的代码源自 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 问题并提出许多关于文档的建议。