source: git/factory/timing.h @ 6f5db8

spielwiese
Last change on this file since 6f5db8 was 6f5db8, checked in by Jens Schmidt <schmidt@…>, 26 years ago
**** merge from branch `factory-gcd' to main trunk git-svn-id: file:///usr/local/Singular/svn/trunk@1242 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.8 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2/* $Id: timing.h,v 1.5 1998-03-17 13:26:12 schmidt Exp $ */
3
4/* It should be possible to include this file multiple times for different */
5/* settings of TIMING */
6
7#undef TIMING_START
8#undef TIMING_END
9#undef TIMING_END_AND_PRINT
10#undef TIMING_DEFINE_PRINT
11#undef TIMING_DEFINE_PRINTPROTO
12#undef TIMING_PRINT
13
14#ifdef TIMING
15#include <time.h>
16#ifndef WINNT
17#include <sys/times.h>
18#include <sys/param.h>
19#endif
20#include <stdio.h>
21
22// need to be adjusted on your machine:
23// the number of ticks per second: HZ
24#if ! defined (HZ) && defined (CLOCKS_PER_SEC)
25#define HZ CLOCKS_PER_SEC
26#endif
27#if ! defined (HZ)  && defined (CLK_TCK)
28#define HZ CLK_TCK
29#endif
30#ifndef HZ
31#ifdef sun
32#define HZ 60.0
33#else
34#define HZ 100.0
35#endif
36#endif
37
38#ifdef WINNT
39
40#define TIMING_START(t) { clock_t timing_ ## t ## _start, timing_ ## t ## _end; \
41  timing_ ## t ## _start = clock();
42#define TIMING_END(t) timing_ ## t ## _end = clock(); \
43timing_ ## t ## _time += timing_ ## t ## _end - timing_ ## t ## _start; }
44#define TIMING_END_AND_PRINT(t, msg) times( &timing_ ## t ## _end ); \
45  fprintf( stderr, "%s%.2f sec\n", msg, \
46           float( timing_ ## t ## _end - timing_ ## t ## _start ) / HZ ); \
47  timing_ ## t ## _time += timing_ ## t ## _end - timing_ ## t ## _start; }
48#define TIMING_DEFINE_PRINT(t) clock_t timing_ ## t ## _time; \
49void timing_print_ ## t ( char * msg ) { \
50  fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
51} \
52void timing_reset_ ## t () { \
53  timing_ ## t ## _time = 0; \
54}
55
56#else /* ! WINNT */
57
58#define TIMING_START(t) { struct tms timing_ ## t ## _start, timing_ ## t ## _end; \
59  times( &timing_ ## t ## _start );
60#define TIMING_END(t) times( &timing_ ## t ## _end ); \
61  timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime; }
62#define TIMING_END_AND_PRINT(t, msg) times( &timing_ ## t ## _end ); \
63  fprintf( stderr, "%s%.2f sec\n", msg, \
64           float( timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime ) / HZ ); \
65  timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime; }
66#define TIMING_DEFINE_PRINT(t) long timing_ ## t ## _time; \
67void timing_print_ ## t ( char * msg ) { \
68  fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
69} \
70void timing_reset_ ## t () { \
71  timing_ ## t ## _time = 0; \
72}
73#endif /* ! WINNT */
74
75/* macros common to all platforms */
76#define TIMING_DEFINE_PRINTPROTO(t) void timing_print_ ## t ( char * ); \
77  void timing_reset_ ## t ();
78#define TIMING_PRINT(t, msg) timing_print_ ## t ( msg );
79#define TIMING_RESET(t) timing_reset_ ## t ();
80
81#else /* TIMING */
82#define TIMING_START(t)
83#define TIMING_END(t)
84#define TIMING_END_AND_PRINT(t, msg)
85#define TIMING_DEFINE_PRINT(t)
86#define TIMING_DEFINE_PRINTPROTO(t)
87#define TIMING_PRINT(t, msg)
88#define TIMING_RESET(t)
89#endif /* TIMING */
Note: See TracBrowser for help on using the repository browser.