xref: /petsc/src/benchmarks/Index.c (revision 2e7ac64766c5fb805bb4575aab735c32922a18c8)
11f480b34SSatish Balay 
21f480b34SSatish Balay #include "stdio.h"
31f480b34SSatish Balay #include "petsc.h"
41f480b34SSatish Balay #include "sys.h"
51f480b34SSatish Balay 
61f480b34SSatish Balay int main( int argc, char **argv)
71f480b34SSatish Balay {
81f480b34SSatish Balay   double    t1, t2, value;
9*2e7ac647SSatish Balay   int       i, ierr,z[10000], intval, tmp;
10*2e7ac647SSatish Balay   int       x[10000],y[10000];
111f480b34SSatish Balay   SYRandom  r;
121f480b34SSatish Balay 
131f480b34SSatish Balay   PetscInitialize(&argc, &argv,0,0,0);
141f480b34SSatish Balay   ierr = SYRandomCreate( MPI_COMM_SELF,RANDOM_DEFAULT,&r); CHKERRQ(ierr);
151f480b34SSatish Balay 
161f480b34SSatish Balay   /* Take care of paging effects */
171f480b34SSatish Balay   t1 = PetscGetTime();
181f480b34SSatish Balay 
19*2e7ac647SSatish Balay   for (i=0; i<10000; i++) {
201f480b34SSatish Balay     x[i] = i;
21*2e7ac647SSatish Balay     y[i] = i;
22*2e7ac647SSatish Balay     z[i] = i;
231f480b34SSatish Balay   }
241f480b34SSatish Balay 
251f480b34SSatish Balay   /* Form the random set of integers */
26*2e7ac647SSatish Balay   for (i=0; i<10000; i++) {
271f480b34SSatish Balay     ierr   = SYRandomGetValue(r, &value); CHKERRQ(ierr);
28*2e7ac647SSatish Balay     intval = (int)(value*10000.0);
291f480b34SSatish Balay     tmp    = z[i];
301f480b34SSatish Balay     z[i]   = z[intval];
311f480b34SSatish Balay     z[intval] = tmp;
321f480b34SSatish Balay   }
331f480b34SSatish Balay 
341f480b34SSatish Balay 
351f480b34SSatish Balay   t1 = PetscGetTime();
36*2e7ac647SSatish Balay   for (i=0; i<1000; i++) {  x[i] = y[z[i]]; }
371f480b34SSatish Balay   t2 = PetscGetTime();
38*2e7ac647SSatish Balay   fprintf(stderr,"%-19s : %e sec\n","x[i] = y[idx[i]]",(t2-t1)/1000.0);
391f480b34SSatish Balay 
401f480b34SSatish Balay 
411f480b34SSatish Balay   t1 = PetscGetTime();
42*2e7ac647SSatish Balay   for (i=0; i<1000; i++) {  x[z[i]] = y[i]; }
431f480b34SSatish Balay   t2 = PetscGetTime();
44*2e7ac647SSatish Balay   fprintf(stderr,"%-19s : %e sec\n","x[z[i]] = y[i]",(t2-t1)/1000.0);
451f480b34SSatish Balay 
461f480b34SSatish Balay   t1 = PetscGetTime();
47*2e7ac647SSatish Balay   for (i=0; i<1000; i++) {  x[z[i]] = y[z[i]]; }
481f480b34SSatish Balay   t2 = PetscGetTime();
49*2e7ac647SSatish Balay   fprintf(stderr,"%-19s : %e sec\n","x[z[i]] = y[z[i]]",(t2-t1)/1000.0);
501f480b34SSatish Balay 
511f480b34SSatish Balay   PetscFinalize();
521f480b34SSatish Balay   return 0;
531f480b34SSatish Balay }
54