#include /* * Uses UNIX timers to start timing an interval */ void start_timer() { struct itimerval pval, poval; pval.it_value.tv_sec = 1000000; pval.it_value.tv_usec = 0; pval.it_interval.tv_sec = 0; pval.it_interval.tv_usec = 0; setitimer(ITIMER_PROF, &pval, &poval); } /* * Returns process seconds elapsed since last call to start_timer() */ double num_seconds() { struct itimerval val; long secs, usecs; getitimer(ITIMER_PROF, &val); secs = 1000000 - val.it_value.tv_sec - 1; usecs = 1000000 - val.it_value.tv_usec; return (double) secs + (double) usecs/1000000.0; } /************************************************************************ ************************************************************************/