xref: /petsc/src/benchmarks/Index.c (revision 1f480b34db965269243f37fb3710208f392fb255)
1*1f480b34SSatish Balay 
2*1f480b34SSatish Balay #include "stdio.h"
3*1f480b34SSatish Balay #include "petsc.h"
4*1f480b34SSatish Balay #include "sys.h"
5*1f480b34SSatish Balay 
6*1f480b34SSatish Balay int main( int argc, char **argv)
7*1f480b34SSatish Balay {
8*1f480b34SSatish Balay   double    t1, t2, value;
9*1f480b34SSatish Balay   int       i, ierr,z[100000], intval, tmp;
10*1f480b34SSatish Balay   SYRandom  r;
11*1f480b34SSatish Balay   Scalar    x[100000],y[100000],
12*1f480b34SSatish Balay 
13*1f480b34SSatish Balay   PetscInitialize(&argc, &argv,0,0,0);
14*1f480b34SSatish Balay   ierr = SYRandomCreate( MPI_COMM_SELF,RANDOM_DEFAULT,&r); CHKERRQ(ierr);
15*1f480b34SSatish Balay 
16*1f480b34SSatish Balay   /* Take care of paging effects */
17*1f480b34SSatish Balay   t1 = PetscGetTime();
18*1f480b34SSatish Balay 
19*1f480b34SSatish Balay   for (i=0; i<100000; i++) {
20*1f480b34SSatish Balay     x[i] = i;
21*1f480b34SSatish Balay     x[i] = i;
22*1f480b34SSatish Balay     x[i] = i;
23*1f480b34SSatish Balay   }
24*1f480b34SSatish Balay 
25*1f480b34SSatish Balay   /* Form the random set of integers */
26*1f480b34SSatish Balay   for (i=0; i<10000; i++) {
27*1f480b34SSatish Balay     ierr   = SYRandomGetValue(r, &value); CHKERRQ(ierr);
28*1f480b34SSatish Balay     intval = (int)(value*100000.0);
29*1f480b34SSatish Balay     tmp    = z[i];
30*1f480b34SSatish Balay     z[i]   = z[intval];
31*1f480b34SSatish Balay     z[intval] = tmp;
32*1f480b34SSatish Balay   }
33*1f480b34SSatish Balay 
34*1f480b34SSatish Balay 
35*1f480b34SSatish Balay   t1 = PetscGetTime();
36*1f480b34SSatish Balay   for (i=0; i<10000; i++) {  x[i] = y[z[i]]; }
37*1f480b34SSatish Balay   t2 = PetscGetTime();
38*1f480b34SSatish Balay   fprintf(stderr,"%-15s : %e sec\n","x[i] = y[idx[i]]",(t2-t1)/10000.0);
39*1f480b34SSatish Balay 
40*1f480b34SSatish Balay 
41*1f480b34SSatish Balay   t1 = PetscGetTime();
42*1f480b34SSatish Balay   for (i=0; i<10000; i++) {  x[z[i]] = y[i]; }
43*1f480b34SSatish Balay   t2 = PetscGetTime();
44*1f480b34SSatish Balay   fprintf(stderr,"%-15s : %e sec\n","x[z[i]] = y[i]",(t2-t1)/10000.0);
45*1f480b34SSatish Balay 
46*1f480b34SSatish Balay   t1 = PetscGetTime();
47*1f480b34SSatish Balay   for (i=0; i<10000; i++) {  x[z[i]] = y[z[i]]; }
48*1f480b34SSatish Balay   t2 = PetscGetTime();
49*1f480b34SSatish Balay   fprintf(stderr,"%-15s : %e sec\n","x[z[i]] = y[z[i]]",(t2-t1)/10000.0);
50*1f480b34SSatish Balay 
51*1f480b34SSatish Balay   PetscFinalize();
52*1f480b34SSatish Balay   return 0;
53*1f480b34SSatish Balay }
54