From 140f106743d4accfabe61fb9289ad3b8c0d584b2 Mon Sep 17 00:00:00 2001 From: Mark Borgerding Date: Sat, 8 Nov 2003 02:48:02 +0000 Subject: [PATCH] benchmark utilities now give memory info --- test/Makefile | 10 +++++----- test/benchfftw.c | 20 +++++--------------- test/benchkiss.c | 19 ++++++------------- test/pstats.c | 41 +++++++++++++++++++++++++++++++++++++++++ test/pstats.h | 7 +++++++ tools/Makefile | 10 +++++----- 6 files changed, 69 insertions(+), 38 deletions(-) create mode 100644 test/pstats.c create mode 100644 test/pstats.h diff --git a/test/Makefile b/test/Makefile index 1b75af6..c24f3b8 100644 --- a/test/Makefile +++ b/test/Makefile @@ -20,18 +20,18 @@ else endif CFLAGS=-Wall -O3 -ansi -pedantic -$(UTIL): ../kiss_fft.c fftutil.c +$(UTIL): ../kiss_fft.c fftutil.c gcc -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) ../kiss_fft.c fftutil.c -lm -$(BENCH): benchkiss.c ../kiss_fft.c - gcc -o $@ $(CFLAGS) -I.. benchkiss.c $(TYPEFLAGS) ../kiss_fft.c -lm +$(BENCH): benchkiss.c ../kiss_fft.c pstats.c + gcc -o $@ $(CFLAGS) -I.. benchkiss.c $(TYPEFLAGS) ../kiss_fft.c pstats.c -lm fftw: bm_fftw @[ -x ./bm_fftw ] && \ ./bm_fftw -x $(NUMFFTS) -n $(NFFT) -bm_fftw: benchfftw.c - @gcc -o $@ $(CFLAGS) benchfftw.c -lm -lfftw3 -L /usr/local/lib/ \ +bm_fftw: benchfftw.c pstats.c + @gcc -o $@ $(CFLAGS) benchfftw.c pstats.c -lm -lfftw3 -L /usr/local/lib/ \ || echo 'Cannot build FFTW test script' time: all diff --git a/test/benchfftw.c b/test/benchfftw.c index 02a02d4..02f79d6 100644 --- a/test/benchfftw.c +++ b/test/benchfftw.c @@ -2,8 +2,7 @@ #include #include #include -#include -#include +#include "pstats.h" int main(int argc,char ** argv) { @@ -14,8 +13,8 @@ int main(int argc,char ** argv) fftw_complex * in=NULL; fftw_complex * out=NULL; fftw_plan p; - struct tms t0,t1; - float cputime; + + pstats_init(); while (1) { int c = getopt (argc, argv, "n:ix:"); @@ -41,7 +40,6 @@ int main(int argc,char ** argv) in[i][1] = rand() - RAND_MAX/2; } - times(&t0); if ( isinverse ) p = fftw_plan_dft_1d(nfft, in, out, FFTW_BACKWARD, FFTW_ESTIMATE); else @@ -51,20 +49,12 @@ int main(int argc,char ** argv) fftw_execute(p); fftw_destroy_plan(p); - times(&t1); fftw_free(in); fftw_free(out); - cputime = ( ((float)t1.tms_utime + t1.tms_stime + t1.tms_cutime + t1.tms_cstime ) - - ((float)t0.tms_utime + t0.tms_stime + t0.tms_cutime + t0.tms_cstime ) ) - / sysconf(_SC_CLK_TCK); + fprintf(stderr,"fftw\tnfft=%d\tnumffts=%d\n", nfft,numffts); + pstats_report(); - fprintf(stderr,"fftw\t" - "nfft=%d\t" - "numffts=%d\t" - "cputime=%.3f\n" , - nfft,numffts,cputime - ); return 0; } diff --git a/test/benchkiss.c b/test/benchkiss.c index 2b23088..436bf1c 100644 --- a/test/benchkiss.c +++ b/test/benchkiss.c @@ -5,13 +5,13 @@ #include #include "kiss_fft.h" +#include "pstats.h" + int main(int argc,char ** argv) { int nfft=1024; int isinverse=0; int numffts=1000,i; - struct tms t0,t1; - float cputime; kiss_fft_cpx * buf; kiss_fft_cpx * bufout; void *st; @@ -40,27 +40,20 @@ int main(int argc,char ** argv) buf[i].i = rand() - RAND_MAX/2; } - times(&t0); + pstats_init(); + st = kiss_fft_alloc( nfft ,isinverse ); for (i=0;i +#include +#include +#include +#include + +static struct tms tms_beg; +static struct tms tms_end; +static int has_times = 0; + +void pstats_init() +{ + has_times = times(&tms_beg) != -1; +} + +static void tms_report() +{ + double cputime; + if (! has_times ) + return; + times(&tms_end); + cputime = ( ((float)tms_end.tms_utime + tms_end.tms_stime + tms_end.tms_cutime + tms_end.tms_cstime ) - + ((float)tms_beg.tms_utime + tms_beg.tms_stime + tms_beg.tms_cutime + tms_beg.tms_cstime ) ) + / sysconf(_SC_CLK_TCK); + fprintf(stderr,"\tcputime=%.3f\n" , cputime); +} + +static void ps_report() +{ + char buf[1024]; + sprintf(buf,"ps -o comm,majflt,minflt,rss,drs,pagein,sz,trs,vsz %d 1>&2",getpid() ); + system( buf ); +} + +void pstats_report() +{ + ps_report(); + tms_report(); + fprintf(stderr,"\n"); +} + diff --git a/test/pstats.h b/test/pstats.h new file mode 100644 index 0000000..0a09bfd --- /dev/null +++ b/test/pstats.h @@ -0,0 +1,7 @@ +#ifndef PSTATS_H +#define PSTATS_H + +void pstats_init(); +void pstats_report(); + +#endif diff --git a/tools/Makefile b/tools/Makefile index 1b75af6..c24f3b8 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -20,18 +20,18 @@ else endif CFLAGS=-Wall -O3 -ansi -pedantic -$(UTIL): ../kiss_fft.c fftutil.c +$(UTIL): ../kiss_fft.c fftutil.c gcc -o $@ $(CFLAGS) -I.. $(TYPEFLAGS) ../kiss_fft.c fftutil.c -lm -$(BENCH): benchkiss.c ../kiss_fft.c - gcc -o $@ $(CFLAGS) -I.. benchkiss.c $(TYPEFLAGS) ../kiss_fft.c -lm +$(BENCH): benchkiss.c ../kiss_fft.c pstats.c + gcc -o $@ $(CFLAGS) -I.. benchkiss.c $(TYPEFLAGS) ../kiss_fft.c pstats.c -lm fftw: bm_fftw @[ -x ./bm_fftw ] && \ ./bm_fftw -x $(NUMFFTS) -n $(NFFT) -bm_fftw: benchfftw.c - @gcc -o $@ $(CFLAGS) benchfftw.c -lm -lfftw3 -L /usr/local/lib/ \ +bm_fftw: benchfftw.c pstats.c + @gcc -o $@ $(CFLAGS) benchfftw.c pstats.c -lm -lfftw3 -L /usr/local/lib/ \ || echo 'Cannot build FFTW test script' time: all