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