# HG changeset patch # User michaelni # Date 1053713074 0 # Node ID 37176fafe11e08fb02e0001f373b969c39305908 # Parent 8623c2e295557d9ebfb69b5a05496b321a02a931 some benchmarking code diff -r 8623c2e29555 -r 37176fafe11e common.h --- a/common.h Fri May 23 16:04:24 2003 +0000 +++ b/common.h Fri May 23 18:04:34 2003 +0000 @@ -1090,6 +1090,35 @@ } #endif +#ifdef ARCH_X86 +static inline long long rdtsc() +{ + long long l; + asm volatile( "rdtsc\n\t" + : "=A" (l) + ); + return l; +} + +#define START_TIMER \ +static uint64_t tsum=0;\ +static int tcount=0;\ +static int tskip_count=0;\ +uint64_t tend;\ +uint64_t tstart= rdtsc();\ + +#define STOP_TIMER(id) \ +tend= rdtsc();\ +if(tcount<2 || tend - tstart < 4*tsum/tcount){\ + tsum+= tend - tstart;\ + tcount++;\ +}else\ + tskip_count++;\ +if(256*256*256*64%(tcount+tskip_count)==0){\ + fprintf(stderr, "%Ld dezicycles in %s, %d runs, %d skips\n", tsum*10/tcount, id, tcount, tskip_count);\ +} +#endif + #define CLAMP_TO_8BIT(d) ((d > 0xff) ? 0xff : (d < 0) ? 0 : d) /* avoid usage of various functions */