写一个小程序来统计函数调用时间,简单明了直接看代码,有三个文件,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
#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; } */
#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__); 即可
编译查看结果如下:
原文地址:http://blog.csdn.net/zz7zz7zz/article/details/45034211