source: git/factory/timing.h @ 84250a6

spielwiese
Last change on this file since 84250a6 was 68873b, checked in by Jens Schmidt <schmidt@…>, 27 years ago
TIMING_END_AND_PRINT added stream io replaced by std io (hopefully) more portable now by using HZ instead of CLK_TCK to calculate time in seconds git-svn-id: file:///usr/local/Singular/svn/trunk@109 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.0 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2/* $Id: timing.h,v 1.2 1997-03-27 10:23:55 schmidt Exp $ */
3
4/*
5$Log: not supported by cvs2svn $
6Revision 1.1  1996/12/06 14:49:07  schmidt
7Initial revision
8
9 * Revision 1.0  1996/05/17  10:59:37  stobbe
10 * Initial revision
11 *
12*/
13
14/* It should be possible to include this file multiple times for different */
15/* settings of TIMING */
16
17#undef TIMING_START
18#undef TIMING_END
19#undef TIMING_END_AND_PRINT
20#undef TIMING_DEFINE_PRINT
21#undef TIMING_DEFINE_PRINTPROTO
22#undef TIMING_PRINT
23
24#ifdef TIMING
25#include <time.h>
26#include <sys/times.h>
27#include <sys/param.h>
28#include <stdio.h>
29
30// need to be adjusted on your machine:
31// the number of ticks per second: HZ
32#if ! defined (HZ) && defined (CLOCKS_PER_SEC)
33#define HZ CLOCKS_PER_SEC
34#endif
35#if ! defined (HZ)  && defined (CLK_TCK)
36#define HZ CLK_TCK
37#endif
38#ifndef HZ
39#ifdef sun
40#define HZ 60.0
41#else
42#define HZ 100.0
43#endif
44#endif
45
46#define TIMING_START(t) { struct tms timing_ ## t ## _start, timing_ ## t ## _end; \
47  times( &timing_ ## t ## _start );
48#define TIMING_END(t) times( &timing_ ## t ## _end ); \
49  timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime; }
50#define TIMING_END_AND_PRINT(t, msg) times( &timing_ ## t ## _end ); \
51  fprintf( stderr, "%s%.2f sec\n", msg, \
52           float( timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime ) / HZ ); \
53  timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime; }
54#define TIMING_DEFINE_PRINT(t) long timing_ ## t ## _time; \
55void timing_print_ ## t ( char * msg ) { \
56  fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
57}
58#define TIMING_DEFINE_PRINTPROTO(t) void timing_print_ ## t ( char * );
59#define TIMING_PRINT(t, msg) timing_print_ ## t ( msg );
60#else /* TIMING */
61#define TIMING_START(t)
62#define TIMING_END(t)
63#define TIMING_END_AND_PRINT(t, msg)
64#define TIMING_DEFINE_PRINT(t)
65#define TIMING_DEFINE_PRINTPROTO(t)
66#define TIMING_PRINT(t, msg)
67#endif /* TIMING */
Note: See TracBrowser for help on using the repository browser.