Changeset 43bbd6 in git for factory/libfac/factor/timing.h


Ignore:
Timestamp:
Feb 22, 2012, 1:27:08 PM (12 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
e2c18174ad1b4c2b871cb7dbdd0d2d4fc6ec8296
Parents:
0b618a776fb1b77afc08df17205c01272c15f277
git-author:
Martin Lee <martinlee84@web.de>2012-02-22 13:27:08+01:00
git-committer:
Martin Lee <martinlee84@web.de>2012-02-22 15:31:05+01:00
Message:
chg: replaced timing.h in libfac by timing.h from factory
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/libfac/factor/timing.h

    r0b618a7 r43bbd6  
    1 ////////////////////////////////////////////////////////////
    2 // emacs edit mode for this file is -*- C++ -*-
    3 // $Id$
    4 ////////////////////////////////////////////////////////////
    5 // It is possible to include this file multiple times for different
    6 // settings of TIMING (but now this isn't used)
     1/* emacs edit mode for this file is -*- C++ -*- */
     2/* $Id$ */
     3
     4/* It should be possible to include this file multiple times for different */
     5/* settings of TIMING */
    76
    87#undef TIMING_START
    98#undef TIMING_END
     9#undef TIMING_END_AND_PRINT
    1010#undef TIMING_DEFINE_PRINT
    1111#undef TIMING_DEFINE_PRINTPROTO
     
    1414#ifdef TIMING
    1515#include <time.h>
     16#if ! defined(WINNT) || defined(__GNUC__)
    1617#include <sys/times.h>
    17 #ifdef HAVE_IOSTREAM
    18 #include <iostream>
    19 #define OSTREAM std::ostream
    20 #define ISTREAM std::istream
    21 #elif defined(HAVE_IOSTREAM_H)
    22 #include <iostream.h>
    23 #define OSTREAM ostream
    24 #define ISTREAM istream
     18#include <sys/param.h>
    2519#endif
     20#ifndef NOSTREAMIO
     21#ifdef HAVE_CSTDIO
     22#include <cstdio>
     23#else
     24#include <stdio.h>
     25#endif
     26#endif
     27
     28// need to be adjusted on your machine:
     29// the number of ticks per second: HZ
     30#if ! defined (HZ) && defined (CLOCKS_PER_SEC)
     31#define HZ CLOCKS_PER_SEC
     32#endif
     33#if ! defined (HZ)  && defined (CLK_TCK)
     34#define HZ CLK_TCK
     35#endif
     36#ifndef HZ
     37#ifdef sun
     38#define HZ 60.0
     39#else
     40#define HZ 100.0
     41#endif
     42#endif
     43
     44#if defined(WINNT) && ! defined(__GNUC__)
     45
     46#define TIMING_START(t) { clock_t timing_ ## t ## _start, timing_ ## t ## _end; \
     47  timing_ ## t ## _start = clock();
     48#define TIMING_END(t) timing_ ## t ## _end = clock(); \
     49timing_ ## t ## _time += timing_ ## t ## _end - timing_ ## t ## _start; }
     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 - timing_ ## t ## _start ) / HZ ); \
     53  timing_ ## t ## _time += timing_ ## t ## _end - timing_ ## t ## _start; }
     54#define TIMING_DEFINE_PRINT(t) clock_t timing_ ## t ## _time; \
     55void timing_print_ ## t ( char * msg ) { \
     56  fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
     57} \
     58void timing_reset_ ## t () { \
     59  timing_ ## t ## _time = 0; \
     60}
     61
     62#else /* ! WINNT */
     63
    2664#define TIMING_START(t) { struct tms timing_ ## t ## _start, timing_ ## t ## _end; \
    2765  times( &timing_ ## t ## _start );
    2866#define TIMING_END(t) times( &timing_ ## t ## _end ); \
    2967  timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime; }
     68#define TIMING_END_AND_PRINT(t, msg) times( &timing_ ## t ## _end ); \
     69  fprintf( stderr, "%s%.2f sec\n", msg, \
     70           float( timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime ) / HZ ); \
     71  timing_ ## t ## _time += timing_ ## t ## _end.tms_utime - timing_ ## t ## _start.tms_utime; }
    3072#define TIMING_DEFINE_PRINT(t) long timing_ ## t ## _time; \
    31 void timing_print_ ## t ( char * msg ) { CERR.setf( ios::fixed, ios::floatfield); CERR.precision(2); \
    32   CERR << msg << float(timing_ ## t ## _time) / 60 << " sec" << "\n"; }
    33 #define TIMING_PRINT(t,msg) timing_print_ ## t ( msg );
    34 #define TIMING_DEFINE_PRINTPROTO(t) void timing_print_ ## t ( char * );
    35 #else
     73void timing_print_ ## t ( char * msg ) { \
     74  fprintf( stderr, "%s%.2f sec\n", msg, float(timing_ ## t ## _time) / HZ ); \
     75} \
     76void timing_reset_ ## t () { \
     77  timing_ ## t ## _time = 0; \
     78}
     79#endif /* ! WINNT */
     80
     81/* macros common to all platforms */
     82#define TIMING_DEFINE_PRINTPROTO(t) void timing_print_ ## t ( char * ); \
     83  void timing_reset_ ## t ();
     84#define TIMING_PRINT(t, msg) timing_print_ ## t ( msg );
     85#define TIMING_RESET(t) timing_reset_ ## t ();
     86
     87#else /* TIMING */
    3688#define TIMING_START(t)
    3789#define TIMING_END(t)
     90#define TIMING_END_AND_PRINT(t, msg)
    3891#define TIMING_DEFINE_PRINT(t)
    39 #define TIMING_PRINT(t,msg)
    4092#define TIMING_DEFINE_PRINTPROTO(t)
     93#define TIMING_PRINT(t, msg)
     94#define TIMING_RESET(t)
    4195#endif /* TIMING */
    42 
Note: See TracChangeset for help on using the changeset viewer.