1*b60f0dfaSBarry Smith /*$Id: PetscMalloc.c,v 1.18 2000/01/11 21:03:44 bsmith Exp bsmith $*/ 2d8e9fea7SSatish Balay 3173c0623SSatish Balay #include "petsc.h" 4173c0623SSatish Balay #include "sys.h" 5173c0623SSatish Balay 65a655dc6SBarry Smith #undef __FUNC__ 75a655dc6SBarry Smith #define __FUNC__ "main" 8173c0623SSatish Balay int main(int argc,char **argv) 9173c0623SSatish Balay { 1047794344SBarry Smith PLogDouble x,y; 1147794344SBarry Smith double value; 1298d6af09SSatish Balay void *arr[1000],*dummy; 13f1af5d2fSBarry Smith int ierr,i,rand1[1000],rand2[1000]; 1477c4ece6SBarry Smith PetscRandom r; 15f1af5d2fSBarry Smith PetscTruth flg; 16173c0623SSatish Balay 1777c4ece6SBarry Smith PetscInitialize(&argc,&argv,0,0); 18173c0623SSatish Balay 19029af93fSBarry Smith ierr = PetscRandomCreate(PETSC_COMM_SELF,RANDOM_DEFAULT,&r);CHKERRQ(ierr); 20173c0623SSatish Balay for (i=0; i<1000; i++) { 2177c4ece6SBarry Smith ierr = PetscRandomGetValue(r,&value);CHKERRQ(ierr); 22173c0623SSatish Balay rand1[i] = (int)(value* 144327); 2377c4ece6SBarry Smith ierr = PetscRandomGetValue(r,&value);CHKERRQ(ierr); 24173c0623SSatish Balay rand2[i] = (int)(value* 144327); 25173c0623SSatish Balay } 26173c0623SSatish Balay 2798d6af09SSatish Balay /* Take care of paging effects */ 2898d6af09SSatish Balay dummy = PetscMalloc(100);CHKPTRA(dummy); 29606d414cSSatish Balay ierr = PetscFree(dummy);CHKERRA(ierr); 302f382f9bSSatish Balay ierr = PetscGetTime(&x);CHKERRA(ierr); 3198d6af09SSatish Balay 32173c0623SSatish Balay /* Do all mallocs */ 33173c0623SSatish Balay for (i=0 ; i< 1000; i++) { 34173c0623SSatish Balay arr[i] = PetscMalloc(rand1[i]);CHKPTRA(arr[i]); 35173c0623SSatish Balay } 36173c0623SSatish Balay 372f382f9bSSatish Balay ierr = PetscGetTime(&x);CHKERRA(ierr); 38173c0623SSatish Balay 39173c0623SSatish Balay /* Do some frees */ 40173c0623SSatish Balay for (i=0; i< 1000; i+=2) { 41606d414cSSatish Balay ierr = PetscFree(arr[i]);CHKERRA(ierr); 42173c0623SSatish Balay } 43173c0623SSatish Balay 44173c0623SSatish Balay /* Do some mallocs */ 45173c0623SSatish Balay for (i=0; i< 1000; i+=2) { 46173c0623SSatish Balay arr[i] = PetscMalloc(rand2[i]);CHKPTRA(arr[i]); 47173c0623SSatish Balay } 482f382f9bSSatish Balay ierr = PetscGetTime(&y);CHKERRA(ierr); 49173c0623SSatish Balay 50173c0623SSatish Balay for (i=0; i< 1000; i++) { 51606d414cSSatish Balay ierr = PetscFree(arr[i]);CHKERRA(ierr); 52173c0623SSatish Balay } 53173c0623SSatish Balay 54c0e5a298SSatish Balay fprintf(stderr,"%-15s : %e sec, with options : ","PetscMalloc",(y-x)/500.0); 55173c0623SSatish Balay if(OptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stderr,"-trmalloc "); 56173c0623SSatish Balay fprintf(stderr,"\n"); 57173c0623SSatish Balay 58*b60f0dfaSBarry Smith ierr = PetscRandomDestroy(r);CHKERRA(ierr); 59173c0623SSatish Balay PetscFinalize(); 603a40ed3dSBarry Smith PetscFunctionReturn(0); 61173c0623SSatish Balay } 62