source: git/factory/timing.h @ 72dd6e

spielwiese
Last change on this file since 72dd6e was 493c477, checked in by Jens Schmidt <schmidt@…>, 27 years ago
o header fixed git-svn-id: file:///usr/local/Singular/svn/trunk@404 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 1.8 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2/* $Id: timing.h,v 1.3 1997-06-19 12:21:54 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#include <sys/times.h>
17#include <sys/param.h>
18#include <stdio.h>
19
20// need to be adjusted on your machine:
21// the number of ticks per second: HZ
22#if ! defined (HZ) && defined (CLOCKS_PER_SEC)
23#define HZ CLOCKS_PER_SEC
24#endif
25#if ! defined (HZ)  && defined (CLK_TCK)
26#define HZ CLK_TCK
27#endif
28#ifndef HZ
29#ifdef sun
30#define HZ 60.0
31#else
32#define HZ 100.0
33#endif
34#endif
35
36#define TIMING_START(t) { struct tms timing_ ## t ## _start, timing_ ## t ## _end; \
37  times( &timing_ ## t ## _start );
38#define TIMING_END(t) times( &timing_ ## t ## _end ); \
39  timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime; }
40#define TIMING_END_AND_PRINT(t, msg) times( &timing_ ## t ## _end ); \
41  fprintf( stderr, "%s%.2f sec\n", msg, \
42           float( timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime ) / HZ ); \
43  timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime; }
44#define TIMING_DEFINE_PRINT(t) long timing_ ## t ## _time; \
45void timing_print_ ## t ( char * msg ) { \
46  fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
47}
48#define TIMING_DEFINE_PRINTPROTO(t) void timing_print_ ## t ( char * );
49#define TIMING_PRINT(t, msg) timing_print_ ## t ( msg );
50#else /* TIMING */
51#define TIMING_START(t)
52#define TIMING_END(t)
53#define TIMING_END_AND_PRINT(t, msg)
54#define TIMING_DEFINE_PRINT(t)
55#define TIMING_DEFINE_PRINTPROTO(t)
56#define TIMING_PRINT(t, msg)
57#endif /* TIMING */
Note: See TracBrowser for help on using the repository browser.