zoukankan      html  css  js  c++  java
  • C++统计程序运行时间代码片段

    因为经常需要统计代码的运行时间,所以计时功能就显得很重要,

    记录一下现在喜欢用的计时方式,供日后查阅。

    1.下面是计时主函数,

    bool TimeStaticMine(int id,const char* type)
    { 
    
        struct TimeInfo
        {
            long long accu_num;
            long long accu_sec;
            long long accu_usec;
    
            struct timeval st;
            struct timeval ed;
            long long this_time_usec;
    
            char type[64];
        };
        static TimeInfo info[50];
        
        if(id<0)
        {
            for(int i=0;i<50;i++)memset(info+i,0,sizeof(TimeInfo));
            return true;
        }
    
        if(type==NULL)
        {
            gettimeofday(&info[id].st,NULL);
            return true;
        }
        gettimeofday(&info[id].ed,NULL);
        info[id].this_time_usec=((info[id].ed.tv_sec)-(info[id].st.tv_sec))*1000000 +
                    ((info[id].ed.tv_usec)-(info[id].st.tv_usec));  
    
        if(info[id].type[0]=='') strcpy(info[id].type,type);
        bool needPrint=false;   
        info[id].accu_num++;
        info[id].accu_usec+=info[id].this_time_usec;
     
        char typeData[100];
        sprintf(typeData,"%d-%s",id,info[id].type);
    
        char tmp[256];
        sprintf(tmp,"=========step: %s, this time: %lld ms=========",typeData,info[id].this_time_usec / 1000);
        printf("%s
    ",tmp);
        return true;
    }

    2.用法如下

    在每个要计时的函数上定义一个TimeStaticMine,第一个参数为计时id,第二个参数为计时说明。

    如下例子分别记录了adjustPic 和probAll两个函数的运行时间。

  • 相关阅读:
    CSS处理小技巧
    React 脚手架构建
    Tomcat8学习
    javaScript(ES5中的类,原型,原型对象和函数对象的关系)
    保留两位小数(逢5进位,精度不会丢失)
    获取过去12个月
    mybatis 踩坑记录
    动态代理--jdk和cglib
    lambda表达式
    mybatis的mapper映射配置文件详解
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/11496070.html
Copyright © 2011-2022 走看看