1 #include "stdio.h" 2 #include "petsc.h" 3 #include "sys.h" 4 5 int main( int argc, char **argv) 6 { 7 double x, y, value; 8 void *arr[1000], *dummy; 9 int ierr, i, flg, rand1[1000], rand2[1000]; 10 SYRandom r; 11 12 PetscInitialize(&argc, &argv,0,0,0); 13 14 ierr = SYRandomCreate( MPI_COMM_SELF,RANDOM_DEFAULT,&r); CHKERRQ(ierr); 15 for (i=0; i<1000; i++) { 16 ierr = SYRandomGetValue(r, &value); CHKERRQ(ierr); 17 rand1[i] = (int ) (value* 144327); 18 ierr = SYRandomGetValue(r, &value); CHKERRQ(ierr); 19 rand2[i] = (int ) (value* 144327); 20 } 21 22 /* Take care of paging effects */ 23 dummy = PetscMalloc(100); CHKPTRA(dummy); 24 PetscFree(dummy); 25 26 /* Do all mallocs */ 27 for (i=0 ; i< 1000; i++) { 28 arr[i] = PetscMalloc(rand1[i]); CHKPTRA( arr[i]); 29 } 30 31 x = PetscGetTime(); 32 33 /* Do some frees */ 34 for (i=0; i< 1000; i+=2) { 35 PetscFree(arr[i]); 36 } 37 38 /* Do some mallocs */ 39 for (i=0; i< 1000; i+=2) { 40 arr[i] = PetscMalloc(rand2[i]); CHKPTRA( arr[i]); 41 } 42 y = PetscGetTime(); 43 44 for (i=0; i< 1000; i++) { 45 PetscFree(arr[i]); 46 } 47 48 fprintf(stderr,"%-15s : %e sec , with options : ","PetscMalloc",(y-x)/500.0); 49 if(OptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stderr,"-trmalloc "); 50 fprintf(stderr,"\n"); 51 52 SYRandomDestroy(r); 53 PetscFinalize(); 54 return 0; 55 } 56