From anonymous, 1 Week ago, written in Plain Text.
This paste will go to meet its maker in 2 Weeks.
Embed
  1. #include <stdio.h>
  2. #include <sys/time.h>
  3.  
  4. #define rdtsc(low) \
  5.    __asm__ __volatile__("rdtsc" : "=a" (low) : : "edx")
  6.  
  7. #define TIME(x,y) \
  8.         min = 100000;                                           \
  9.         for (i = 0; i < 1000; i++) {                            \
  10.                 unsigned long start,end;                        \
  11.                 rdtsc(start);                                   \
  12.                 x;                                              \
  13.                 rdtsc(end);                                     \
  14.                 end -= start;                                   \
  15.                 if (end < min)                                  \
  16.                         min = end;                              \
  17.         }                                                       \
  18.         printf(y ": %d cycles\n", min);
  19.  
  20. #define LOCK    asm volatile("lock ; addl $0,0(%esp)")
  21. #define CPUID   asm volatile("cpuid": : :"ax", "dx", "cx", "bx")
  22. #define GTOD1   gettimeofday(&one, NULL)
  23. #define GTOD2   gettimeofday(&one, NULL); gettimeofday(&two, NULL)
  24.  
  25. int main()
  26. {
  27.         unsigned long min;
  28.         int i;
  29.         struct timeval one, two;
  30.  
  31.         TIME(/* */, "nothing");
  32.         TIME(LOCK, "locked add");
  33.         TIME(CPUID, "cpuid");
  34.         TIME(GTOD1, "gettimeofday");
  35.         TIME(GTOD2, "gettimeofday start/stop");
  36. }

Replies to Untitled rss

Title Name Language When
Re: Untitled anonymous text 1 Week ago.