using the RDTSC (read-timestamp counter) instruction to monitor performance

Code:
#include
#include
#include
typedef unsigned long long ticks;

static __inline__ ticks getticks(void)
{
     unsigned a, d;
     asm("cpuid");
     asm volatile("rdtsc" : "=a" (a), "=d" (d));

     return (((ticks)a) | (((ticks)d) << 32));
}
int main(){
     int r = 0;
     ticks tick,tick1,tickh;
     unsigned long long  time =0;

     tick = getticks();
   
     sleep(10);
   
     tick1 = getticks();
   
     time = (unsigned)((tick1-tick)/1662543);
    printf("/ntime in MS %llu/n",time);
return 0;
}

cat /proc/cpuinfo gives

Code:
pprocessor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 14
model name      : Genuine Intel(R) CPU           T2300  @ 1.66GHz
stepping        : 8
cpu MHz         : 1662.543
cache size      : 2048 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe constant_tsc up arch_perfmon bts pni monitor vmx est tm2 xtpr
bogomips        : 3328.87
clflush size    : 64

你可能感兴趣的:(Linux)