標籤:linux c++ 統計函數調用時間
寫一個小程式來統計函數調用時間,簡單明了直接看代碼,有三個檔案,FunTimer.h , FunTimer.cpp ,FunTimerMan.cpp 分別如下:
FunTimer.h檔案
#ifndef _FUNTIMER_H#define _FUNTIMER_H#include <iostream>#include <sys/time.h>#include <string>using namespace std;class FunTimer{ public: FunTimer(); FunTimer(string funName); ~FunTimer(); private: string funName; timeval _start; timeval _end;};/**方法一#include <iostream>#include <ctime>#include <string>using namespace std;class FunTimer{public:FunTimer();FunTimer(string funName);~FunTimer();private: string funName;clock_t _start;clock_t _end;};*/#endif
FunTimer.cpp檔案
#include "FunTimer.h"FunTimer::FunTimer(){gettimeofday(&_start,NULL);}FunTimer::FunTimer(string funName){ this->funName=funName;gettimeofday(&_start,NULL);}FunTimer::~FunTimer(){ gettimeofday(&_end,NULL);float timeuse = 1000000 * (_end.tv_sec - _start.tv_sec) + (_end.tv_usec - _start.tv_usec); timeuse /= 1000000; cout<<endl;cout<<this->funName<<":"<<timeuse <<endl;}/**方法一FunTimer::FunTimer(){_start=clock();}FunTimer::FunTimer(string funName){this->funName=funName; _start=clock();}FunTimer::~FunTimer(){_end=clock();cout<<this->funName<< (double)(_end - _start)/CLOCKS_PER_SEC <<endl;}*/
FunTimerMain.cpp檔案 ,用於測試
#include <iostream>#include "FunTimer.h"using namespace std;void testPrintFun(){FunTimer mFunTimer(__FUNCTION__); for(int i=0;i<1000;i++) { cout<<" "; }}void testPrintFun2(){ FunTimer mFunTimer(__FUNCTION__); for(int i=0;i<2000;i++) { cout<<" "; }}int main(int argc, char* argv[]){FunTimer mFunTimer(__FUNCTION__);testPrintFun();testPrintFun2();/**clock_t start = clock(); testPrintFun();clock_t end = clock(); cout<<endl; cout<<(end-start)<<endl; */ return 0;}
測試方法:在函數的第一句加上FunTimer mFunTimer(__FUNCTION__); 即可
編譯查看結果如下:
Linux c++ 統計函數調用時間