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