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