/**************************** * High-level timing wrappers ****************************/ #include #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 (verbose) printf("[%s]通过cycle计数器来测量性能.\n", __func__); /* set key parameters for the fcyc package */ set_fcyc_maxsamples(200); set_fcyc_clear_cache(1); set_fcyc_epsilon(0.01); set_fcyc_k(3); Mhz = mhz(verbose > 0); // printf("[%s]Your CPU is %fMhz\n",__func__, Mhz); } /* * fsecs - Return the running time of a function f (in seconds) */ double fsecs(fsecs_test_funct f, void* argp) { double cycles = fcyc(f, argp); return cycles / (Mhz * 1e6); }