Created
June 17, 2011 20:50
-
-
Save bricef/1032312 to your computer and use it in GitHub Desktop.
Timing Sections of C code using macros
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #ifndef _TIMING_UTIL_H | |
| #define _TIMING_UTIL_H | |
| #ifdef DEBUG | |
| #include <sys/time.h> | |
| #define TIMEIT_INIT(name) \ | |
| struct timeval timeit_t1_##name, timeit_t2_##name, timeit_diff_##name; \ | |
| double timeit_interval_##name \ | |
| #define TIMEIT_START(name) \ | |
| gettimeofday(&timeit_t1_##name, NULL) | |
| #define TIMEIT_STOP(name) \ | |
| do{ \ | |
| gettimeofday(&timeit_t2_##name , NULL); \ | |
| timersub(&timeit_t2_##name, &timeit_t1_##name, &timeit_diff_##name); \ | |
| timeit_interval_##name = timeit_diff_##name.tv_sec + (timeit_diff_##name.tv_usec / 1000000.0 ) ; \ | |
| }while(0) | |
| #define TIMEIT_INTERVAL(name) timeit_interval_##name | |
| #define TIMEIT_SHOWME(name) printf("timeit took %f seconds\n", timeit_interval_##name) | |
| #else | |
| #define TIMEIT_INIT(name) | |
| #define TIMEIT_START(name) | |
| #define TIMEIT_STOP(name) | |
| #define TIMEIT_INTERVAL(name) | |
| #define TIMEIT_SHOWME(name) | |
| #endif /* DEBUG */ | |
| #endif /* _TIMING_UTIL_H */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment