3 #if defined(__i386__) || defined(__x86_64__) || defined(_MSC_VER)
9 # include <sys/resource.h>
32 asm volatile(
"rdtsc\nmovl %%eax,%0\nmovl %%edx,%1":
"=g"(ax),
"=g"(dx): :
"eax",
"edx");
34 (
static_cast<unsigned long long>(dx)<<32)
35 +
static_cast<unsigned long long>(ax);
55 asm volatile(
"rdtsc\nmovl %%eax,%0\nmovl %%edx,%1":
"=g"(ax),
"=g"(dx): :
"eax",
"edx");
56 const unsigned long long end_time
57 = ((
static_cast<unsigned long long>(dx)<<32)
58 +
static_cast<unsigned long long>(ax));
66 getrusage(RUSAGE_SELF,&end_time);
68 int ret=getrusage(RUSAGE_SELF,&end_time);
71 return (end_time.ru_utime.tv_sec -
start_time.ru_utime.tv_sec)*1000000
72 +(end_time.ru_utime.tv_usec -
start_time.ru_utime.tv_usec);
80 const char *
message,
long long int loop);
96 asm volatile(
"rdtsc\nmovl %%eax,%0\nmovl %%edx,%1":
"=g"(ax),
"=g"(dx): :
"eax",
"edx");
98 (
static_cast<unsigned long long>(dx)<<32)
99 +
static_cast<unsigned long long>(ax);
110 asm volatile(
"rdtsc\nmovl %%eax,%0\nmovl %%edx,%1":
"=g"(ax),
"=g"(dx): :
"eax",
"edx");
111 const unsigned long long end_time
112 = ((
static_cast<unsigned long long>(dx)<<32)
113 +
static_cast<unsigned long long>(ax));
148 CounterPair(
const char *file,
const char *
function,
int line);
167 : os (os), message (message)
172 gettimeofday(&
start, NULL);