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