1 关于Boost
- Boost库代表C++语言最新、最前沿的技术;C++中语言特性有2/3来自Boost
- Boost组件有很高的工业强度,甚至超过大多数商业产品
- Boost可以用于任何用途,鼓励商业,非商业用途,不受任何限制
2 一个特别之处
Boost库没有传统的.cpp和.h
,特使用.hpp
,是不需要链接的,直接把头文件放入工程就可以编译使用了。不再需要考虑动态库的问题。当然还有少部分是需要链接的。
3 高精度计时器
了解基本的概念后,下面利用Boost实现一个高精度计时器
#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>
template <typename Clock = boost::posix_time::microsec_clock>
class BasicPtimer
{
public:
BasicPtimer()
{
restart();
}
void restart()
{
m_startTime = Clock::local_time();
}
void elapsed() const
{
std::cout << Clock::local_time() - m_startTime << std::endl;
}
~BasicPtimer()
{
elapsed();
}
private:
boost::posix_time::ptime m_startTime;
};
int main(int argc, char *argv[])
{
typedef BasicPtimer<boost::posix_time::microsec_clock> mptimer; // 最小的计时单位1us
typedef BasicPtimer<boost::posix_time::second_clock> sptimer; // 最小的计时单位s
{
mptimer t;
}
}
4 简析
- 模板类支持两个精度,s和us,默认是us
- 整个类的写法和
boost::timer及boost::progress_timer
如出一辙,就是拷贝过来的 - 创建对象时开始计时,析构函数自动打印流逝的时间,如上,一个364us的案例
- 具体细节,可以参看《Boost程序库完全开发指南》