Go to the documentation of this file.
8 #undef TIMING_END_AND_PRINT
9 #undef TIMING_DEFINE_PRINT
10 #undef TIMING_DEFINE_PRINTPROTO
15 #if ! defined(WINNT) || defined(__GNUC__)
16 #include <sys/times.h>
17 #include <sys/param.h>
29 #if ! defined (HZ) && defined (CLOCKS_PER_SEC)
30 #define HZ CLOCKS_PER_SEC
32 #if ! defined (HZ) && defined (CLK_TCK)
43 #if defined(WINNT) && ! defined(__GNUC__)
45 #define TIMING_START(t) timing_ ## t ## _start = clock();
46 #define TIMING_END(t) timing_ ## t ## _end = clock(); \
47 timing_ ## t ## _time += timing_ ## t ## _end - timing_ ## t ## _start;
48 #define TIMING_END_AND_PRINT(t, msg) times( &timing_ ## t ## _end ); \
49 fprintf( stderr, "%s%.2f sec\n", msg, \
50 float( timing_ ## t ## _end - timing_ ## t ## _start ) / HZ ); \
51 timing_ ## t ## _time += timing_ ## t ## _end - timing_ ## t ## _start;
52 #define TIMING_DEFINE_PRINT(t) static clock_t timing_ ## t ## _start, timing_ ## t ## _end; \
53 static clock_t timing_ ## t ## _time; \
54 static void timing_print_ ## t ( char * msg ) { \
55 fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
57 static void timing_reset_ ## t () { \
58 timing_ ## t ## _time = 0; \
63 #define TIMING_START(t) times( &timing_ ## t ## _start );
64 #define TIMING_END(t) times( &timing_ ## t ## _end ); \
65 timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime;
66 #define TIMING_END_AND_PRINT(t, msg) times( &timing_ ## t ## _end ); \
67 fprintf( stderr, "%s%.2f sec\n", msg, \
68 float( timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime ) / HZ ); \
69 timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime;
70 #define TIMING_DEFINE_PRINT(t) static struct tms timing_ ## t ## _start, timing_ ## t ## _end; \
71 static long timing_ ## t ## _time; \
72 static void timing_print_ ## t ( char * msg ) { \
73 fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
75 static void timing_reset_ ## t () { \
76 timing_ ## t ## _time = 0; \
81 #define TIMING_DEFINE_PRINTPROTO(t) void timing_print_ ## t ( char * ); \
82 void timing_reset_ ## t ();
83 #define TIMING_PRINT(t, msg) timing_print_ ## t ( msg );
84 #define TIMING_RESET(t) timing_reset_ ## t ();
87 #define TIMING_START(t)
89 #define TIMING_END_AND_PRINT(t, msg)
90 #define TIMING_DEFINE_PRINT(t)
91 #define TIMING_DEFINE_PRINTPROTO(t)
92 #define TIMING_PRINT(t, msg)
93 #define TIMING_RESET(t)