您的位置:首页 > 其它

boost学习之 时间和日期 timer

2012-03-26 17:23 447 查看
#include <iostream>
#include<boost/timer.hpp>
using namespace std;
using namespace boost;

int _tmain(int argc, _TCHAR* argv[])
{
timer t;  //构造函数自动启动计时工作
cout<<"max timespan(hours): "<<t.elapsed_max()/3600<<endl;
cout<<"min timespan(seconds): "<<t.elapsed_min()<<endl;
//输出已经流逝的时间
cout<<"now time elapsed:"<<t.elapsed()<<"s"<<endl;
return 0;
}






由此可以看出来timer所能计算的最大实践只有快600个小时而已,精度只能在毫秒。

下面是timer的实现代码,很短。

//  boost timer.hpp header file  ---------------------------------------------//

//  Copyright Beman Dawes 1994-99.  Distributed under the Boost
//  Software License, Version 1.0. (See accompanying file
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 
//  See http://www.boost.org/libs/timer for documentation.

//  Revision History
//  01 Apr 01  Modified to use new <boost/limits.hpp> header. (JMaddock)
//  12 Jan 01  Change to inline implementation to allow use without library
//             builds. See docs for more rationale. (Beman Dawes)
//  25 Sep 99  elapsed_max() and elapsed_min() added (John Maddock)
//  16 Jul 99  Second beta
//   6 Jul 99  Initial boost version

#ifndef BOOST_TIMER_HPP
#define BOOST_TIMER_HPP

#include <boost/config.hpp>
#include <ctime>
#include <boost/limits.hpp>

# ifdef BOOST_NO_STDC_NAMESPACE
namespace std { using ::clock_t; using ::clock; }
# endif

namespace boost {

//  timer  -------------------------------------------------------------------//

//  A timer object measures elapsed time.

//  It is recommended that implementations measure wall clock rather than CPU
//  time since the intended use is performance measurement on systems where
//  total elapsed time is more important than just process or CPU time.

//  Warnings: The maximum measurable elapsed time may well be only 596.5+ hours
//  due to implementation limitations.  The accuracy of timings depends on the
//  accuracy of timing information provided by the underlying platform, and
//  this varies a great deal from platform to platform.

class timer
{
public:
timer() { _start_time = std::clock(); } // postcondition: elapsed()==0
//         timer( const timer& src );      // post: elapsed()==src.elapsed()
//        ~timer(){}
//  timer& operator=( const timer& src );  // post: elapsed()==src.elapsed()
void   restart() { _start_time = std::clock(); } // post: elapsed()==0
double elapsed() const                  // return elapsed time in seconds
{ return  double(std::clock() - _start_time) / CLOCKS_PER_SEC; }

double elapsed_max() const   // return estimated maximum value for elapsed()
// Portability warning: elapsed_max() may return too high a value on systems
// where std::clock_t overflows or resets at surprising values.
{
return (double((std::numeric_limits<std::clock_t>::max)())
- double(_start_time)) / double(CLOCKS_PER_SEC);
}

double elapsed_min() const            // return minimum value for elapsed()
{ return double(1)/double(CLOCKS_PER_SEC); }

private:
std::clock_t _start_time;
}; // timer

} // namespace boost

#endif  // BOOST_TIMER_HPP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: