1*ac355199SBarry Smith /*$Id: PetscMalloc.c,v 1.23 2001/01/16 18:21:52 balay Exp bsmith $*/ 2d8e9fea7SSatish Balay 3173c0623SSatish Balay #include "petsc.h" 4e090d566SSatish Balay #include "petscsys.h" 5173c0623SSatish Balay 65a655dc6SBarry Smith #undef __FUNC__ 75a655dc6SBarry Smith #define __FUNC__ "main" 8173c0623SSatish Balay int main(int argc,char **argv) 9173c0623SSatish Balay { 10b0a32e0cSBarry Smith PetscLogDouble 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 */ 28*ac355199SBarry Smith ierr = PetscMalloc(100,&dummy);CHKERRQ(ierr); 29*ac355199SBarry Smith ierr = PetscFree(dummy);CHKERRQ(ierr); 30*ac355199SBarry Smith ierr = PetscGetTime(&x);CHKERRQ(ierr); 3198d6af09SSatish Balay 32173c0623SSatish Balay /* Do all mallocs */ 33173c0623SSatish Balay for (i=0 ; i< 1000; i++) { 34*ac355199SBarry Smith ierr = PetscMalloc(rand1[i],& arr[i]);CHKERRQ(ierr); 35173c0623SSatish Balay } 36173c0623SSatish Balay 37*ac355199SBarry Smith ierr = PetscGetTime(&x);CHKERRQ(ierr); 38173c0623SSatish Balay 39173c0623SSatish Balay /* Do some frees */ 40173c0623SSatish Balay for (i=0; i< 1000; i+=2) { 41*ac355199SBarry Smith ierr = PetscFree(arr[i]);CHKERRQ(ierr); 42173c0623SSatish Balay } 43173c0623SSatish Balay 44173c0623SSatish Balay /* Do some mallocs */ 45173c0623SSatish Balay for (i=0; i< 1000; i+=2) { 46*ac355199SBarry Smith ierr = PetscMalloc(rand2[i],&arr[i]);CHKERRQ(ierr); 47173c0623SSatish Balay } 48*ac355199SBarry Smith ierr = PetscGetTime(&y);CHKERRQ(ierr); 49173c0623SSatish Balay 50173c0623SSatish Balay for (i=0; i< 1000; i++) { 51*ac355199SBarry Smith ierr = PetscFree(arr[i]);CHKERRQ(ierr); 52173c0623SSatish Balay } 53173c0623SSatish Balay 5435d8aa7fSBarry Smith fprintf(stdout,"%-15s : %e sec, with options : ","PetscMalloc",(y-x)/500.0); 55b0a32e0cSBarry Smith if(PetscOptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stdout,"-trmalloc "); 5635d8aa7fSBarry Smith fprintf(stdout,"\n"); 57173c0623SSatish Balay 58*ac355199SBarry Smith ierr = PetscRandomDestroy(r);CHKERRQ(ierr); 59173c0623SSatish Balay PetscFinalize(); 603a40ed3dSBarry Smith PetscFunctionReturn(0); 61173c0623SSatish Balay } 62