source: git/factory/timing.h @ ba5e9e

spielwiese
Last change on this file since ba5e9e was 2df361, checked in by Martin Lee <martinlee84@…>, 12 years ago
chg: made functions and variables for timings static
  • Property mode set to 100644
File size: 3.0 KB
RevLine 
[ba1fde]1/* emacs edit mode for this file is -*- C++ -*- */
2
3/* It should be possible to include this file multiple times for different */
[68873b]4/* settings of TIMING */
[ba1fde]5
6#undef TIMING_START
7#undef TIMING_END
[68873b]8#undef TIMING_END_AND_PRINT
[ba1fde]9#undef TIMING_DEFINE_PRINT
10#undef TIMING_DEFINE_PRINTPROTO
11#undef TIMING_PRINT
12
13#ifdef TIMING
14#include <time.h>
[fe8859f]15#if ! defined(WINNT) || defined(__GNUC__)
[ba1fde]16#include <sys/times.h>
[68873b]17#include <sys/param.h>
[9c9e2a4]18#endif
[9c6887]19#ifndef NOSTREAMIO
[4dfcb1]20#ifdef HAVE_CSTDIO
21#include <cstdio>
22#else
[68873b]23#include <stdio.h>
[4dfcb1]24#endif
[9c6887]25#endif
[68873b]26
27// need to be adjusted on your machine:
28// the number of ticks per second: HZ
29#if ! defined (HZ) && defined (CLOCKS_PER_SEC)
30#define HZ CLOCKS_PER_SEC
31#endif
32#if ! defined (HZ)  && defined (CLK_TCK)
33#define HZ CLK_TCK
34#endif
35#ifndef HZ
36#ifdef sun
37#define HZ 60.0
38#else
39#define HZ 100.0
40#endif
41#endif
42
[049c4f]43#if defined(WINNT) && ! defined(__GNUC__)
[6f5db8]44
[2df361]45#define TIMING_START(t) timing_ ## t ## _start = clock();
[9c9e2a4]46#define TIMING_END(t) timing_ ## t ## _end = clock(); \
[2df361]47timing_ ## t ## _time += timing_ ## t ## _end - timing_ ## t ## _start;
[6f5db8]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 ); \
[2df361]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; \
53static clock_t timing_ ## t ## _time; \
54static void timing_print_ ## t ( char * msg ) { \
[9c9e2a4]55  fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
[6f5db8]56} \
[2df361]57static void timing_reset_ ## t () { \
[6f5db8]58  timing_ ## t ## _time = 0; \
[9c9e2a4]59}
[6f5db8]60
61#else /* ! WINNT */
62
[2df361]63#define TIMING_START(t) times( &timing_ ## t ## _start );
[ba1fde]64#define TIMING_END(t) times( &timing_ ## t ## _end ); \
[2df361]65  timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime;
[68873b]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 ); \
[2df361]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; \
71static long timing_ ## t ## _time; \
72static void timing_print_ ## t ( char * msg ) { \
[68873b]73  fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
[6f5db8]74} \
[2df361]75static void timing_reset_ ## t () { \
[6f5db8]76  timing_ ## t ## _time = 0; \
[68873b]77}
[6f5db8]78#endif /* ! WINNT */
79
80/* macros common to all platforms */
81#define TIMING_DEFINE_PRINTPROTO(t) void timing_print_ ## t ( char * ); \
82  void timing_reset_ ## t ();
[68873b]83#define TIMING_PRINT(t, msg) timing_print_ ## t ( msg );
[6f5db8]84#define TIMING_RESET(t) timing_reset_ ## t ();
85
[68873b]86#else /* TIMING */
[ba1fde]87#define TIMING_START(t)
88#define TIMING_END(t)
[68873b]89#define TIMING_END_AND_PRINT(t, msg)
[ba1fde]90#define TIMING_DEFINE_PRINT(t)
91#define TIMING_DEFINE_PRINTPROTO(t)
[68873b]92#define TIMING_PRINT(t, msg)
[6f5db8]93#define TIMING_RESET(t)
[ba1fde]94#endif /* TIMING */
Note: See TracBrowser for help on using the repository browser.