Index: acinclude.m4 =================================================================== RCS file: /home/cvs/GiNaC/acinclude.m4,v retrieving revision 1.21 diff -r1.21 acinclude.m4 102a103,123 > > AC_DEFUN([GINAC_HAVE_RUSAGE], > [AC_CACHE_CHECK([whether struct rusage is declared in ], > ac_cv_have_rusage, > [AC_TRY_COMPILE([#include > #include ], > [struct rusage resUsage; > getrusage(RUSAGE_SELF, &resUsage); > return 0;], > [ac_cv_have_rusage=yes], > [ac_cv_have_rusage=no]) > ]) > CONFIG_RUSAGE="no" > if test "$ac_cv_have_rusage" = yes; then > CONFIG_RUSAGE="yes" > AC_DEFINE(HAVE_RUSAGE,,[define if struct rusage declared in ]) > fi > AC_SUBST(CONFIG_RUSAGE) > ]) > > Index: configure.ac =================================================================== RCS file: /home/cvs/GiNaC/configure.ac,v retrieving revision 1.21.2.5 diff -r1.21.2.5 configure.ac 24c24,25 < AC_CONFIG_HEADERS(config.h) --- > AC_CONFIG_AUX_DIR(config) > AC_CONFIG_HEADERS([config/config.h]) 84a86 > GINAC_HAVE_RUSAGE 113a116,118 > if test "x$CONFIG_RUSAGE" = "xno"; then > AC_CHECK_HEADER(ctime, , GINAC_ERROR([The standard header file could not be found.])) > fi Index: check/timer.cpp =================================================================== RCS file: /home/cvs/GiNaC/check/timer.cpp,v retrieving revision 1.7.4.3 diff -r1.7.4.3 timer.cpp 23c23,26 < #include --- > #ifdef HAVE_CONFIG_H > #include "config.h" > #endif > #ifdef HAVE_RUSAGE 25a29,32 > #include > #else > #include > #endif 28a36 > #ifdef HAVE_RUSAGE 69a78,116 > #else /* no getrusage() */ > > using std::clock; > timer::timer() : on(false) > { > used1 = clock(); > used2 = used1; > } > > void timer::start() > { > on = true; > used1 = clock(); > used2 = used1; > } > > void timer::stop() > { > on = false; > used2 = clock(); > } > > void timer::reset() > { > used1 = clock(); > used2 = used1; > } > > double timer::read() > { > double elapsed; > if (running()) > used2 = clock(); > elapsed = (used2 - used1)/CLOCKS_PER_SEC; > // Results more accurate than 10ms are pointless: > return 0.01*int(elapsed*100+0.5); > } > #endif /* HAVE_RUSAGE */ > Index: check/timer.h =================================================================== RCS file: /home/cvs/GiNaC/check/timer.h,v retrieving revision 1.3.4.2 diff -r1.3.4.2 timer.h 25a26,29 > #ifdef HAVE_CONFIG_H > #include "config.h" > #endif > #ifdef HAVE_RUSAGE 26a31,33 > #else > #include > #endif 37a45 > #ifdef HAVE_RUSAGE 38a47,49 > #else > std::clock_t used1, used2; > #endif Index: ginsh/ginsh_parser.yy =================================================================== RCS file: /home/cvs/GiNaC/ginsh/ginsh_parser.yy,v retrieving revision 1.77.2.4 diff -r1.77.2.4 ginsh_parser.yy 31c31 < --- > #ifdef HAVE_RUSAGE 32a33,35 > #else > #include > #endif 63a67 > #ifdef HAVE_RUSAGE 64a69,83 > #define START_TIMER getrusage(RUSAGE_SELF, &start_time); > #define STOP_TIMER getrusage(RUSAGE_SELF, &end_time); > #define PRINT_TIME_USED cout << \ > (end_time.ru_utime.tv_sec - start_time.ru_utime.tv_sec) + \ > (end_time.ru_stime.tv_sec - start_time.ru_stime.tv_sec) + \ > double(end_time.ru_utime.tv_usec - start_time.ru_utime.tv_usec) / 1e6 + \ > double(end_time.ru_stime.tv_usec - start_time.ru_stime.tv_usec) / 1e6 \ > << 's' << endl; > #else > static std::clock_t start_time, end_time; > #define START_TIMER start_time = std::clock(); > #define STOP_TIMER end_time = std::clock(); > #define PRINT_TIME_USED \ > cout << double(end_time - start_time)/CLOCKS_PER_SEC << 's' << endl; > #endif 213,219c232 < | T_TIME {getrusage(RUSAGE_SELF, &start_time);} '(' exp ')' { < getrusage(RUSAGE_SELF, &end_time); < cout << (end_time.ru_utime.tv_sec - start_time.ru_utime.tv_sec) + < (end_time.ru_stime.tv_sec - start_time.ru_stime.tv_sec) + < double(end_time.ru_utime.tv_usec - start_time.ru_utime.tv_usec) / 1e6 + < double(end_time.ru_stime.tv_usec - start_time.ru_stime.tv_usec) / 1e6 << 's' << endl; < } --- > | T_TIME { START_TIMER } '(' exp ')' { STOP_TIMER PRINT_TIME_USED }