1 /*$Id: PetscMalloc.c,v 1.15 1999/06/30 23:55:37 balay Exp bsmith $*/ 2 3 #include "petsc.h" 4 #include "sys.h" 5 6 #undef __FUNC__ 7 #define __FUNC__ "main" 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 ierr = PetscFree(dummy);CHKERRA(ierr); 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 ierr = PetscFree(arr[i]);CHKERRA(ierr); 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 ierr = PetscFree(arr[i]);CHKERRA(ierr); 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