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]=='\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\n",tmp);
    return true;
}

2.用法如下

 

在每個要計時的函數上定義一個TimeStaticMine,第一個參數為計時id,第二個參數為計時說明。

如下例子分別記錄了adjustPic 和probAll兩個函數的運行時間。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM