zoukankan      html  css  js  c++  java
  • chrono使用

    //timer.h
    #ifndef W_TIMER_H
    #define W_TIMER_H
     
    #include <iostream>
    #include <string>
    #include <chrono>
     
    class Timer {
    public:
     
        Timer():_name("Time elapsed:") {
            restart();
        }
     
        explicit Timer(const std::string &name):_name(name + ":") {
            restart();
        }
     
        /**
        * 启动计时
        */
        inline void restart() {
            _start_time = std::chrono::steady_clock::now();
        }
     
        /**
        * 结束计时
        * @return 返回ms数
        */
        inline double elapsed(bool restart = false) {
            _end_time = std::chrono::steady_clock::now();
            std::chrono::duration<double> diff = _end_time-_start_time;
            if(restart)
                this->restart();
            return diff.count()*1000;
        }
     
        /**
         * 打印时间并重启计时器
         * @param tip 提示
         */
        void rlog(const std::string &tip){
            log(true,tip,true,false);
        }
     
        /**
        * 打印时间
        * @param reset 输出之后是否重启计时器,true重启,false不重启
        * @param unit_ms true是ms,false是s
        * @param tip 输出提示
        * @param kill 输出之后是否退出程序,true退出,false不退出
        */
        void log(bool reset = false, const std::string &tip = "",
                 bool unit_ms = true, bool kill = false
        ) {
            if (unit_ms) {
                if (tip.length() > 0)
                    std::cout << tip+":" << elapsed() << "ms" << std::endl;
                else
                    std::cout << _name << elapsed() << "ms" << std::endl;
            } else {
                if (tip.length() > 0)
                    std::cout << tip+":" << elapsed() / 1000.0 << "s" << std::endl;
                else
                    std::cout << _name << elapsed() / 1000.0 << "s" << std::endl;
            }
     
            if (reset)
                this->restart();
     
            if (kill)
                exit(5);
        }
     
     
    private:
        std::chrono::steady_clock::time_point _start_time;
        std::chrono::steady_clock::time_point _end_time;
        std::string _name;
    }; // timer
     
    #endif //W_TIMER_H
    
    
    
    
    
    
    ///////////////////////////////////////////////////////////////////////////////////
    chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
    
    【某个耗时程序段】
    
    chrono::steady_clock::time_point t2 = chrono::steady_clock::now();
    chrono::duration<double> time_used = chrono::duration_cast<chrono::duration<double>>(t2 - t1);
    cout << "time_used:" << time_used.count() << " 秒。" << endl;
    //////////////////////////////////////////////////////////////////////////////////
  • 相关阅读:
    用Actionscript3.0编写的伪3D文字旋转
    iis权限设置
    SQL 不能通过IP正常连接终极解决方案
    创建一个非常简单的NHibernate的应用
    解决“System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本”
    详细讲解提高数据库查询效率的实用方法、外键关于性能
    解决ERRORORA12514:TNS:监听程序当前无法识别连接描述符中请求的服务
    session丢失问题
    Jquery AJAX WebService处理方式 demo
    DIV模拟弹出窗口(支持拖动)
  • 原文地址:https://www.cnblogs.com/shaogang/p/10806947.html
Copyright © 2011-2022 走看看