- 论坛徽章:
- 0
|
前些天因为系统运行的有些慢,所以就想找一下看程序哪里占用的时间最多.
为了偷点懒,就写了几个宏.
我觉得这个应该还算有点通用性,贴出来给大家看看.
多提改进意见.
下面是一个小的测试程序.
一共有这么几个宏
ANA_DECLARE
ANA_INIT
ANA_BEGIN
ANA_END
ANA_OUTPUT
- #include <ctime>;
- #include <cstdio>;
- #include <iostream>;
- #include <cstdlib>;
- using namespace std ;
- #ifndef ANA_DECLARE
- #define ANA_DECLARE(lapsed) \
- unsigned long lapsed ; \
- struct timeval __first_##lapsed ; \
- struct timeval __second_##lapsed
- #endif
- #ifndef ANA_INIT
- #define ANA_INIT(lapsed) \
- do{ \
- lapsed = 0; \
- }while(0)
- #endif
- #ifndef ANA_BEGIN
- #define ANA_BEGIN(lapsed) gettimeofday(&__first_##lapsed, NULL)
- #endif
- #ifndef ANA_END
- #define ANA_END(lapsed) \
- gettimeofday(&__second_##lapsed,NULL) ; \
- lapsed += (__second_##lapsed.tv_sec - __first_##lapsed.tv_sec) * 1000000 + __second_##lapsed.tv_usec - __first_##lapsed.tv_usec
- #endif
- #ifndef ANA_OUTPUT
- #define ANA_OUTPUT(lapsed) cout << #lapsed" = " << lapsed << " usec" << endl
- #endif
- int main()
- {
- ANA_DECLARE(test1) ;
- ANA_DECLARE(test2) ;
- ANA_INIT(test1) ;
- ANA_INIT(test2) ;
-
- for (int i = 0; i < 1000 ; i ++){
- //........
- ANA_BEGIN(test1) ;
- func_test1() ;
- ANA_END(test1) ;
-
- //............
- //...........
-
- ANA_BEGIN(test2) ;
- func_test2() ;
- ANA_END(test2) ;
-
- //..............
- }
-
- ANA_OUTPUT(test1) ;
- ANA_OUTPUT(test2) ;
-
- return 0 ;
- }
复制代码 |
|