Blame | Last modification | View Log | Download | RSS feed
/***************************** High-level timing wrappers****************************/#include <stdio.h>#include "fsecs.h"#include "fcyc.h"#include "clock.h"#include "ftimer.h"#include "config.h"static double Mhz; /* estimated CPU clock frequency */extern int verbose; /* -v option in mdriver.c *//** init_fsecs - initialize the timing package*/void init_fsecs(void){Mhz = 0; /* keep gcc -Wall happy */#if USE_FCYCif (verbose)printf("Measuring performance with a cycle counter.\n");/* set key parameters for the fcyc package */set_fcyc_maxsamples(20);set_fcyc_clear_cache(1);set_fcyc_compensate(1);set_fcyc_epsilon(0.01);set_fcyc_k(3);Mhz = mhz(verbose > 0);#elif USE_ITIMERif (verbose)printf("Measuring performance with the interval timer.\n");#elif USE_GETTODif (verbose)printf("Measuring performance with gettimeofday().\n");#endif}/** fsecs - Return the running time of a function f (in seconds)*/double fsecs(fsecs_test_funct f, void *argp){#if USE_FCYCdouble cycles = fcyc(f, argp);return cycles/(Mhz*1e6);#elif USE_ITIMERreturn ftimer_itimer(f, argp, 10);#elif USE_GETTODreturn ftimer_gettod(f, argp, 10);#endif}