Want more features on Pastebin? Sign Up, it's FREE!
Guest

code

By: a guest on Dec 20th, 2011  |  syntax: C++  |  size: 1.09 KB  |  views: 32  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <time.h>
  2. #include <cstdlib>
  3. #include <iostream>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. //#define MANUAL_INLINE
  9.  
  10. #if 1
  11.  
  12. #if 1
  13. #define FORCE_INLINE1 __forceinline
  14. #define FORCE_INLINE2
  15. #else
  16. #define FORCE_INLINE1
  17. #define FORCE_INLINE2 __attribute__((always_inline))
  18. #endif
  19.  
  20. #endif
  21.  
  22. struct ASD  {
  23.         float e;
  24.  
  25.         ASD(float e)
  26.                 :e(e)
  27.         {}
  28.  
  29.         FORCE_INLINE1 bool test(const ASD& y)const FORCE_INLINE2 {
  30.                 return e<y.e;
  31.         }
  32. };
  33.  
  34. int main(){
  35.        
  36. #ifdef MANUAL_INLINE           
  37.         freopen( "manual"       ,"w",stdout);
  38. #else
  39.         freopen( "compiler"     ,"w",stdout);
  40. #endif
  41.  
  42.  
  43.         srand(time(NULL));
  44.        
  45.         ASD& a=*new ASD((float)(rand())/RAND_MAX);
  46.         ASD& b=*new ASD(2.0+(float)(rand())/RAND_MAX);
  47.  
  48.         clock_t start,end;
  49.         const int N=50,n=100000000;
  50.  
  51.         int *asd=new int[16];
  52.         vector<double> times;
  53.  
  54.         for(int i=0;i<N;i++){
  55.  
  56.                 start = clock();
  57.  
  58.                 for(int j=n;--j>0;)
  59. #ifdef MANUAL_INLINE
  60.                         asd[j%16]=a.e<b.e;
  61. #else
  62.                         asd[j%16]=a.test(b);
  63. #endif
  64.  
  65.                 end = clock();
  66.                 times.push_back(double(n)/(end - start));
  67.         }
  68.         for(int i=0;i<times.size();i++)
  69.                 cout<<i<<" "<<times[i]<<endl;
  70.  
  71.         return 0;
  72. }
clone this paste RAW Paste Data