boost学习之 时间和日期 timer

#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
时间: 2024-09-07 13:52:31

boost学习之 时间和日期 timer的相关文章

C++ boost 时间与日期处理详细介绍_C 语言

boost 时间与日期处理 导视: 类 特点 缺点 说明 timer 计时基类 不适合大跨度时间 适用大部分的普通计时 progress_timer 继承自timer 可以自动写入流中 只精确到0.01s 如果需要更精确,可派生个类,调用stream的precision设置 progress_display 图形化显示进度 只能输出到cout 如果还有其他输出则会干扰进度显示. 折中的办法是重新显示 pd.restart(size); pd+= pNum; date 日期结构,时间点 -- da

[Boost]boost的时间和日期处理-(2)时间的操作

<开篇> 本篇紧接着boost上篇叙述Boost::DateTime的时间处理.在C++中,常见的时间有time_t, FILETIME和tm,而boost中用ptime. 构造ptime 1.ptime的构造函数有四种: 1: using namespace boost::posix_time; 2: using namespace boost::gregorian; 3: ptime pt(date(2013,Jan,24),time_duration(1,2,3)); //由date和t

学习Java中的日期和时间处理及Java日历小程序的编写_java

Java 在 java.util 包中提供了 Date 类,这个类封装了当前的日期和时间. Date 类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date( )下面的构造函数接收一个参数等于自1970年1月1日午夜起已经过的毫秒数 Date(long millisec) 一旦有一个可用的日期对象,可以调用以下任何一种支持的方法使用时间: SN 方法和描述 1 boolean after(Date date) 如果调用Date对象包含或晚于指定的日期则返回true,否则,返回f

Java编程那些事儿78——时间和日期处理

9.6 java.util包 java.util包是Java语言提供的工具类包,该包中包含了如日期.随机数和数据结构实现类等一系列的工具类实现,是学习Java语言的基础包之一. 本部分就以Java语言中常用的时间和日期处理.随机数处理以及集合框架为基础进行介绍. 9.6.1 时间和日期处理 使用程序进行时间和日期处理,是程序员必须的一种常用技能,在不同的程序设计语言中提供了不同的格式进行实现,现在就介绍一下Java语言中的实现方式,以及基本的应用,使得对于Java语言的时间和日期处理技术有比较全

时间和日期新API(JSR310)

对日期和时间的新的API,主要包括 Instant.Clock.LocalDateTime.DateTimeFormatter.ZonedDateTime 以及替换 Calendar 的 Chronology 等类.建议大家体验使用. 具体看下面的代码和注释吧: import org.junit.Test; import java.time.*; import java.time.chrono.ChronoLocalDateTime; import java.time.chrono.Chrono

C语言中对时间和日期的处理

本文详细介绍C语言中对时间和日期的处理 Chuck Allison 是盐湖城圣 Latter Day 教堂总部下耶稣教堂家族历史研究处的软件体系设计师.他拥有数学学士和数学硕士学位.他从1975年起开始编程,从1984年起他开始从事c语言的教学和开发.他目前的兴趣是面向对象的技术及其教育.他是X3J16,ANSI C ++标准化委员会的一员.发送e-mail到 allison@decus.org,或者拨打电话到 (801)240-4510 均可以与他取得联系. 大部分的操作系统有办法得到当前的日

win8系统下时间和日期自动同步怎么设置

  win8系统下时间和日期自动同步怎么设置         方法一: 1.登陆windows 8桌面,左键单击任务栏右下角的显示时间,选择更改日期和时间设置. 2.进入日期和时间窗口,选择Internet时间-更改设置-勾选:与Internet时间服务器同步(默认服务器地址:time.windows.com)-立即更新-确定,系统将自动同步系统时间. 方法二: 1.可以进入Win 8系统桌面后运行Windows+X(或鼠标移动到左下角点击右键),左键单击控制面板. 2.进入控制面板后选择:时钟

word2010怎么插入时间和日期

  word2010插入时间和日期教程: 打开Word2010文档,将光标移动到合适的位置. 单击"插入"选项卡. 在"文本"区单击"日期和时间"按钮. 在"日期和时间"对话框的"可用格式"列表中选择合适的日期或时间格式. 选中"自动更新"选项,实现每次打开Word文档自动更新日期和时间,单击"确定"按钮即可.

Word2010中添加时间和日期的技巧

  在Word中编辑文档时,有时由于内容的需要,要在里面插入时间和日期,并且这个时间和日期是会自动更新的.今天,小编就来向大家介绍介绍在Word2010中插入时间和日期的技巧. Word2010 步骤/方法 打开Word2010文档,将光标移动到合适的位置. 单击"插入"选项卡. 在"文本"区单击"日期和时间"按钮. 在"日期和时间"对话框的"可用格式"列表中选择合适的日期或时间格式. 选中"自动