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 x = PetscGetTime(); 26 27 /* Do all mallocs */ 28 for (i=0 ; i< 1000; i++) { 29 arr[i] = PetscMalloc(rand1[i]); CHKPTRA( arr[i]); 30 } 31 32 x = PetscGetTime(); 33 34 /* Do some frees */ 35 for (i=0; i< 1000; i+=2) { 36 PetscFree(arr[i]); 37 } 38 39 /* Do some mallocs */ 40 for (i=0; i< 1000; i+=2) { 41 arr[i] = PetscMalloc(rand2[i]); CHKPTRA( arr[i]); 42 } 43 y = PetscGetTime(); 44 45 for (i=0; i< 1000; i++) { 46 PetscFree(arr[i]); 47 } 48 49 fprintf(stderr,"%-15s : %e sec , with options : ","PetscMalloc",(y-x)/500.0); 50 if(OptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stderr,"-trmalloc "); 51 fprintf(stderr,"\n"); 52 53 SYRandomDestroy(r); 54 PetscFinalize(); 55 return 0; 56 } 57