1 #ifdef ELAPSED_TIME_IN_SECONDS
2 #undef ELAPSED_TIME_IN_SECONDS
3 #endif
4
5 #ifdef ELAPSED_TIME_IN_uSECONDS
6 #undef ELAPSED_TIME_IN_uSECONDS
7 #endif
8
9 #ifdef __GNUC__
10 #include <sys/time.h>
11 #ifndef WIN32
12 #include <sys/resource.h>
13 #endif
14 #endif
15
16 #ifdef __GNUC__
17 #ifndef __CMPH_TIME_H__
18 #define __CMPH_TIME_H__
19 static inline void elapsed_time_in_seconds(double * elapsed_time)
20 {
21 struct timeval e_time;
22 if (gettimeofday(&e_time, NULL) < 0) {
23 return;
24 }
25 *elapsed_time = (double)e_time.tv_sec + ((double)e_time.tv_usec/1000000.0);
26 }
27 static inline void dummy_elapsed_time_in_seconds(double * elapsed_time)
28 {
29 (void) elapsed_time;
30 }
31 static inline void elapsed_time_in_useconds(cmph_uint64 * elapsed_time)
32 {
33 struct timeval e_time;
34 if (gettimeofday(&e_time, NULL) < 0) {
35 return;
36 }
37 *elapsed_time = (cmph_uint64)(e_time.tv_sec*1000000 + e_time.tv_usec);
38 }
39 static inline void dummy_elapsed_time_in_useconds(cmph_uint64 * elapsed_time)
40 {
41 (void) elapsed_time;
42 }
43 #endif
44 #endif
45
46 #ifdef CMPH_TIMING
47 #ifdef __GNUC__
48 #define ELAPSED_TIME_IN_SECONDS elapsed_time_in_seconds
49 #define ELAPSED_TIME_IN_uSECONDS elapsed_time_in_useconds
50 #else
51 #define ELAPSED_TIME_IN_SECONDS dummy_elapsed_time_in_seconds
52 #define ELAPSED_TIME_IN_uSECONDS dummy_elapsed_time_in_useconds
53 #endif
54 #else
55 #ifdef __GNUC__
56 #define ELAPSED_TIME_IN_SECONDS
57 #define ELAPSED_TIME_IN_uSECONDS
58 #else
59 #define ELAPSED_TIME_IN_SECONDS dummy_elapsed_time_in_seconds
60 #define ELAPSED_TIME_IN_uSECONDS dummy_elapsed_time_in_useconds
61 #endif
62 #endif