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