progress对外输出精度只有小数点后两位(这点可以运行上节程序进行验证),即精确到0.01秒。

我们使用模板技术仿造一个progress_timer编写一个新类:new_progress_timer,以实现任意精度的输出。

new_progress_timer同样继承自timer,只是编程了模板类。模板参数N指明了输出精度,默认值为2,与progress_timer相同。

#include <boost\timer.hpp>
#include <boost\progress.hpp>
#include <boost\static_assert.hpp>
#include <iostream>
using namespace boost;
using namespace std; //使用模板参数实现progress_timer
template<int N=>
class new_progress_timer:public boost::timer
{
public:
new_progress_timer(std::ostream &os=std::cout):m_os(os)
{
BOOST_STATIC_ASSERT(N>=&&N<=);
} ~new_progress_timer(void)
{
try{
//保持流的状态
std::istream::fmtflags old_flags=m_os.setf(std::istream::fixed,std::istream::floatfield); std::streamsize old_prec=m_os.precision(N); m_os<<elapsed()<<"s\n"<<std::endl; m_os.flags(old_flags);
m_os.precision(old_prec); }
catch( ...)
{
}
} private:
std::ostream &m_os;
}; //当精度为2时,使用下面这个 template<>
class new_progress_timer<>:public boost::progress_timer
{}; int main()
{
new_progress_timer<> t; //声明一个计时器,开始计时
//dosomething
for(int i=;i<;i++)
{
cout<<"a";
}
cout<<endl;
}

扩展progress_timer的计时精度的更多相关文章

  1. 前端Tips#4 - 用 process.hrtime 获取纳秒级的计时精度

    本文同步自 JSCON简时空 - 前端Tips 专栏#4,点击阅读 视频讲解 视频地址 文字讲解 如果去测试代码运行的时长,你会选择哪个时间函数? 一般第一时间想到的函数是 Date.now 或 Da ...

  2. Leetcode 69. Sqrt(x)及其扩展(有/无精度、二分法、牛顿法)详解

    Leetcode 69. Sqrt(x) Easy https://leetcode.com/problems/sqrtx/ Implement int sqrt(int x). Compute an ...

  3. Linux用户态程序计时方式详解

    前言 良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较.但要精确测量程序的运行时间并不容易,因为进程切换.中断.共享的多用户.网络流量.高速缓存访问及转移预测等因素都会对程序 ...

  4. Linux用户态程序计时方式详解[转]

    转自: http://www.cnblogs.com/clover-toeic/p/3845210.html 前言 良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较.但要精确 ...

  5. VC中如何获取当前时间(精度达到毫秒级)

    标 题: VC中如何获取当前时间(精度达到毫秒级)作 者: 0xFFFFCCCC时 间: 2013-06-24链 接: http://www.cnblogs.com/Y4ng/p/Millisecon ...

  6. 【转】VxWorks中高精度实时时钟的实现及C语言汇编混合编程

    最近一个项目中需要在VxWorks下使用一个高精度实时时钟,要求精度为1ms,溢 出时间大于5小时.VxWorks提供系统时钟,该时钟在操作系统启动后开始计数,精度为1个tick,可以通过tickGe ...

  7. 【C/C++】计时函数比较

    目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但 ...

  8. clock()函数的返回值精度问题

    clock()函数返回值为1毫秒,就是0.001秒.clock函数功 能: 返回处理器调用某个进程或函数所花费的时间.用 法: clock_t clock(void);说明:clock_t其实就是lo ...

  9. CUDA 8的混合精度编程

    CUDA 8的混合精度编程 Volta和Turing GPU包含 Tensor Cores,可加速某些类型的FP16矩阵数学运算.这样可以在流行的AI框架内更快,更轻松地进行混合精度计算.要使用Ten ...

随机推荐

  1. css控制段落

    <p></p>标签:一段话或者段落适宜于用p标签: 段落缩进:text-indent:50px: 文字方向:text-align:center居中.left往左显示.right ...

  2. busybox rootfs 启动脚本分析(二)

    上次分析了busybox的启动脚本,这次分析一下init.d中一些脚本的内容. 参考链接 http://www.cnblogs.com/helloworldtoyou/p/6169678.html h ...

  3. Python之路-jQuery

    参考网址:http://jquery.cuishifeng.cn/ 1.安装环境 2.查找元素 3.操作元素 一.安装环境: 1.我们需要去官网下载jQuery,地址:http://jquery.co ...

  4. XSLT简介

    什么是? http://www.w3school.com.cn/xsl/xsl_intro.asp XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言. XPath ...

  5. 调试一个socket通信bug的心理过程和反思

    背景交代.最近在玩lua的服务端编码, 有项目A,B,AB都是同一个模子的.我手上有A的winsocket客户端和服务端的代码,B项目早期的一份linux下的lua client.服务端.客户端都是L ...

  6. Python基础学习-Python中最常见括号()、[]、{}的区别

    Python中最常见括号的区别: 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. Python中的 ...

  7. WebForm 页面传值

    一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象.如果你想传递一个安全性不是那么太重要或者是 ...

  8. HTML5--页面自动居中

    注意: margin:0 auto;/**0:上下    auto:左右**/ <html lang="en"> <head> <meta chars ...

  9. docker-compose编写(英文)

    原文地址:https://docker.github.io/compose/compose-file/ Compose file reference The Compose file is a YAM ...

  10. tomcat

    引用:http://blog.csdn.net/nairuohe/article/details/6175243 /etc/tomcat6 - 全局配置 /usr/share/tomcat6/ - 程 ...