1. /**********
  2. TimeCounter.h
  3. huangsy13@gmail.com
  4. **********/
  5. #ifndef TIMECOUNTER
  6. #define TIMECOUNTER
  7.  
  8. #include <iostream>
  9. #include <cstring>
  10. #include <ctime>
  11. #include <sstream>
  12. #include <cstdlib>
  13. #include "FileStruct.h"
  14.  
  15. using namespace std;
  16.  
  17. struct TimeCounter{
  18. time_t beginT;
  19. time_t nowT;
  20. int totalTask;
  21. int completeTask;
  22. string lastUseT;
  23. void setUp(int totalTask0){
  24. totalTask = totalTask0;
  25. nowT = ;
  26. beginT = time(NULL);
  27. }
  28. bool update(int taskNow){
  29. nowT = time(NULL);
  30. completeTask = taskNow;
  31. if (lastUseT == useTime() && completeTask < totalTask){
  32. return false;
  33. }
  34. else{
  35. lastUseT = useTime();
  36. return true;
  37. }
  38. }
  39. string useTime(){
  40. int r = nowT - beginT;
  41. return getTimeStr(r);
  42. }
  43. string restTime(){
  44. if(completeTask == ){
  45. return "unknow";
  46. }
  47. int restTT = double(totalTask-completeTask)*double(nowT-beginT)/double(completeTask);
  48. return getTimeStr(restTT);
  49. }
  50. string getTimeStr(int r){
  51. int rs = r;
  52. int rh = rs/;
  53. int rm = rs/;
  54. string str;
  55. if (rh != ){
  56. str = numToStr(rh) + " hours ";
  57. }
  58. if (rs >= ){
  59. str += numToStr(rm%) + " minutes ";
  60. }
  61. str += numToStr(rs%) + " seconds";
  62. return str;
  63. }
  64. string percent(){
  65. int p = *completeTask/totalTask;
  66. return numToStr(p)+"%";
  67. }
  68. void print(bool clear){
  69. if (clear) system("clear");
  70. cout << "use time " << useTime()<<endl;
  71. cout << "rest Time "<< restTime() <<endl;
  72. cout << "complete " << percent() << endl;
  73. }
  74. void updateAndPrint(int nn,bool clear = true){
  75. if(update(nn)){
  76. print(clear);
  77. }
  78. }
  79. };
  80.  
  81. #endif
  82.  
  83. /*********
  84. main.cpp
  85. huangsy13@gmail.com
  86. *********/
  87. #include <iostream>
  88. #include <cstring>
  89. #include <ctime>
  90. #include <sstream>
  91. #include <cstdlib>
  92. #include "TimeCounter.h"
  93.  
  94. using namespace std;
  95.  
  96. int main(){
  97. TimeCounter T;
  98. int totalTask = ;
  99. T.setUp(totalTask);
  100. int taskNow = ;
  101. while(taskNow < totalTask){
  102. T.updateAndPrint(++taskNow);
  103. for (int i = ; i < ; i++){
  104. int a = ;
  105. int b = ;
  106. while(a != b){
  107. a++;
  108. }
  109. }
  110. }
  111. }

C++之程序时间统计类实现的更多相关文章

  1. c++程序时间统计

    如下所示,引入<time.h>我们就可以统计时间了: #include<iostream> #include<time.h> #include<windows ...

  2. Java基础进阶:时间类要点摘要,时间Date类实现格式化与解析源码实现详解,LocalDateTime时间类格式化与解析源码实现详解,Period,Duration获取时间间隔与源码实现,程序异常解析与处理方式

    要点摘要 课堂笔记 日期相关 JDK7 日期类-Date 概述 表示一个时间点对象,这个时间点是以1970年1月1日为参考点; 作用 可以通过该类的对象,表示一个时间,并面向对象操作时间; 构造方法 ...

  3. 整理总结 python 中时间日期类数据处理与类型转换(含 pandas)

    我自学 python 编程并付诸实战,迄今三个月. pandas可能是我最高频使用的库,基于它的易学.实用,我也非常建议朋友们去尝试它.--尤其当你本身不是程序员,但多少跟表格或数据打点交道时,pan ...

  4. H5性能测试,首屏时间统计(Argus)

    Argus 腾讯质量开发平台,官网链接:https://wetest.qq.com/product/argus 主要针对性:H5的游戏性能测试 主要介绍: 独家首屏时间统计: 告别人工掐秒 自动统计首 ...

  5. C++高精度计时器——微秒级时间统计

    在C++中,经常需要通过计时来统计性能信息,通过统计的耗时信息,来分析性能瓶颈,通常情况下,可能毫秒级别的时间统计就足够用了,但是在毫厘必争的性能热点的地方,毫秒级别的统计还是不够的,这种情况下,就需 ...

  6. 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...

  7. 微信小程序退款 处理类

    <?php /** * 微信小程序退款 处理类参考https://www.cnblogs.com/afei-qwerty/p/7922982.html * */ class WeixinRefu ...

  8. C# 程序内的类数量对程序启动的影响

    原文:C# 程序内的类数量对程序启动的影响 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http://lindexi.gitee.i ...

  9. 2018-10-31-C#-程序内的类数量对程序启动的影响

    title author date CreateTime categories C# 程序内的类数量对程序启动的影响 lindexi 2018-10-31 14:7:6 +0800 2018-10-1 ...

随机推荐

  1. Android特性与系统架构

    Android特性与系统架构 一.Android特性 • 应用程序框架支持组件的重用与替换 • Dalvik 虚拟机专为移动设备优化 • 集成的浏览器基于开源的WebKit 引擎 • 优化的图形库包括 ...

  2. 莫名其妙的js脚本文件引用不到

    今天遇到一个很奇怪的问题,在页面中引用的脚本文件,引用路径没有问题,而且在很多浏览器中都测试没有问题,包括Win8 Modren UI下的IE11也同样没有问题,唯独Win8桌面版的IE11无法引用. ...

  3. Ip地址和子网掩码和CIDR无间别域间路由

    开始,网络的制定者将网络划分为A,B,C三种网络,想这个样子: A类网:  xxx.0.0.0         子网掩码:255.0.0.0 xxx.0.0.0/8 //后面的数字代表网络地址的字段 ...

  4. 基于FPGA的线阵CCD实时图像采集系统

    基于FPGA的线阵CCD实时图像采集系统 2015年微型机与应用第13期 作者:章金敏,张 菁,陈梦苇2016/2/8 20:52:00 关键词: 实时采集 电荷耦合器件 现场可编程逻辑器件 信号处理 ...

  5. spring bean autowire自动装配

    转自:http://blog.csdn.net/xiao_jun_0820/article/details/7233139 autowire="byName"会自动装配属性与Bea ...

  6. Webpack中的sourcemap

    Webpack中sourcemap的配置 sourcemap是为了解决开发代码与实际运行代码不一致时帮助我们debug到原始开发代码的技术.尤其是如今前端开发中大部分的代码都经过编译,打包等工程化转换 ...

  7. 78. Longest Common Prefix【medium】

    Given k strings, find the longest common prefix (LCP).   Example For strings "ABCD", " ...

  8. Web应用程序开发的标准架构

  9. 一款由jquery实现的超炫的页面加载特效

    今天为大家带来一款由jquery实现的超炫的页面加载特效.连续的几个页面分开特效.最后由三维的线条由远至近消失,然后由近至远出现.效果超级梦炫.一起看下效果图: 在线预览   源码下载 实现的代码. ...

  10. 【iOS】TableView的footerView不随cell滚动而停留在tableView底部的问题

    苹果官方给我提供TableView的FooterView和HeaderView停留在顶部的非常不错效果,有时候我们不须要这些FooterView和HeaderView停留在底部或者上部,如今就以Foo ...