benchmark/random_bench.cc
author deba
Tue, 17 Oct 2006 10:50:57 +0000
changeset 2247 269a0dcee70b
child 2391 14a343be7a5a
permissions -rw-r--r--
Update the Path concept
Concept check for paths

DirPath renamed to Path
The interface updated to the new lemon interface
Make difference between the empty path and the path from one node
Builder interface have not been changed
// I wanted but there was not accordance about it

UPath is removed
It was a buggy implementation, it could not iterate on the
nodes in the right order
Right way to use undirected paths => path of edges in undirected graphs

The tests have been modified to the current implementation
     1 #include<stdlib.h>
     2 #include<lemon/random.h>
     3 #include<lemon/time_measure.h>
     4 
     5 using namespace lemon;
     6 
     7 void f_no() 
     8 {
     9 }
    10 
    11 inline void f_noi() 
    12 {
    13 }
    14 
    15 inline void f_i() 
    16 {
    17   static int r;  
    18   r=5;
    19 }
    20 
    21 inline void f_l() 
    22 {
    23   static long int r;
    24   r=5;
    25 }
    26 
    27 inline void f_d() 
    28 {
    29   static double r;
    30   r=5;
    31 }
    32 
    33 inline void f_rand() 
    34 {
    35   static int r;  
    36   r=rand();
    37 }
    38 
    39 inline void f_random() 
    40 {
    41   static long int r;
    42   r=random();
    43 }
    44 
    45 inline void f_drand48() 
    46 {
    47   static double r;
    48   r=drand48();
    49 }
    50 
    51 inline void f_rnd_d() 
    52 {
    53   static double r;
    54   r=rnd();
    55 }
    56 inline void f_rnd_int1000() 
    57 {
    58   static int r;
    59   r=rnd[1000];
    60 }
    61 inline void f_rnd_bool() 
    62 {
    63   static bool r;
    64   r=rnd.boolean();
    65 }
    66 
    67 // inline void f_() 
    68 // {
    69 //   static double r;
    70 //   r=;
    71 // }
    72 
    73 int main()
    74 {
    75   TimeStamp full;
    76   TimeStamp t;
    77   unsigned int n;
    78   
    79   const double TEST_DURATION=10;
    80 
    81   t=runningTimeTest(f_no,2,&n,&full);
    82 
    83   t=runningTimeTest(f_no,TEST_DURATION,&n,&full); 
    84   std::cout << "EMPTY:         ";
    85   std::cout << t.userTime() << " (" << n << " tests)\n";
    86   
    87   t=runningTimeTest(f_noi,TEST_DURATION,&n,&full);
    88   std::cout << "INLINED EMPTY: ";
    89   std::cout << t.userTime() << " (" << n << " tests)\n";
    90   
    91   TimeStamp ti=t=runningTimeTest(f_i,TEST_DURATION,&n,&full);
    92   std::cout << "INT COPY:      ";
    93   std::cout << t.userTime() << " (" << n << " tests)\n";
    94   
    95   TimeStamp tl=t=runningTimeTest(f_l,TEST_DURATION,&n,&full);
    96   std::cout << "LONG COPY:     ";
    97   std::cout << t.userTime() << " (" << n << " tests)\n";
    98   
    99   TimeStamp td=t=runningTimeTest(f_d,TEST_DURATION,&n,&full);
   100   std::cout << "DOUBLE COPY:   ";
   101   std::cout << t.userTime() << " (" << n << " tests)\n";
   102   
   103   t=runningTimeTest(f_rand,TEST_DURATION,&n,&full);
   104   std::cout << "rand():        ";
   105   std::cout << (t-ti).userTime() << " (" << n << " tests)\n";
   106   
   107   t=runningTimeTest(f_random,TEST_DURATION,&n,&full);
   108   std::cout << "random():      ";
   109   std::cout << (t-tl).userTime() << " (" << n << " tests)\n";
   110   
   111   t=runningTimeTest(f_drand48,TEST_DURATION,&n,&full);
   112   std::cout << "drand48():     ";
   113   std::cout << (t-td).userTime() << " (" << n << " tests)\n";
   114   
   115   t=runningTimeTest(f_rnd_d,TEST_DURATION,&n,&full);
   116   std::cout << "rnd():         ";
   117   std::cout << (t-td).userTime() << " (" << n << " tests)\n";
   118   
   119   t=runningTimeTest(f_rnd_int1000,TEST_DURATION,&n,&full);
   120   std::cout << "rnd[1000]:     ";
   121   std::cout << (t-ti).userTime() << " (" << n << " tests)\n";
   122   
   123   t=runningTimeTest(f_rnd_bool,TEST_DURATION,&n,&full);
   124   std::cout << "rnd.boolean(): ";
   125   std::cout << (t-ti).userTime() << " (" << n << " tests)\n";
   126   
   127 //   t=runningTimeTest(f_,TEST_DURATION,&n,&full);
   128 //   std::cout << "\n";
   129 //   std::cout << t << " (" << n << " tests)\n";
   130 //   std::cout << "Total: " << full << "\n\n";
   131   
   132   return 0;
   133 }