1a5eb4965SSatish Balay #ifdef PETSC_RCS_HEADER 2*606d414cSSatish Balay static char vcid[] = "$Id: PetscMalloc.c,v 1.14 1999/05/04 20:38:02 balay Exp balay $"; 3d8e9fea7SSatish Balay #endif 4d8e9fea7SSatish Balay 5173c0623SSatish Balay #include "petsc.h" 6173c0623SSatish Balay #include "sys.h" 7173c0623SSatish Balay 85a655dc6SBarry Smith #undef __FUNC__ 95a655dc6SBarry Smith #define __FUNC__ "main" 10173c0623SSatish Balay int main( int argc, char **argv) 11173c0623SSatish Balay { 1247794344SBarry Smith PLogDouble x, y; 1347794344SBarry Smith double value; 1498d6af09SSatish Balay void *arr[1000], *dummy; 15173c0623SSatish Balay int ierr, i, flg, rand1[1000], rand2[1000]; 1677c4ece6SBarry Smith PetscRandom r; 17173c0623SSatish Balay 1877c4ece6SBarry Smith PetscInitialize(&argc, &argv,0,0); 19173c0623SSatish Balay 20029af93fSBarry Smith ierr = PetscRandomCreate( PETSC_COMM_SELF,RANDOM_DEFAULT,&r);CHKERRQ(ierr); 21173c0623SSatish Balay for (i=0; i<1000; i++) { 2277c4ece6SBarry Smith ierr = PetscRandomGetValue(r, &value);CHKERRQ(ierr); 23173c0623SSatish Balay rand1[i] = (int ) (value* 144327); 2477c4ece6SBarry Smith ierr = PetscRandomGetValue(r, &value);CHKERRQ(ierr); 25173c0623SSatish Balay rand2[i] = (int ) (value* 144327); 26173c0623SSatish Balay } 27173c0623SSatish Balay 2898d6af09SSatish Balay /* Take care of paging effects */ 2998d6af09SSatish Balay dummy = PetscMalloc(100);CHKPTRA(dummy); 30*606d414cSSatish Balay ierr = PetscFree(dummy);CHKERRA(ierr); 312f382f9bSSatish Balay ierr = PetscGetTime(&x);CHKERRA(ierr); 3298d6af09SSatish Balay 33173c0623SSatish Balay /* Do all mallocs */ 34173c0623SSatish Balay for (i=0 ; i< 1000; i++) { 35173c0623SSatish Balay arr[i] = PetscMalloc(rand1[i]);CHKPTRA( arr[i]); 36173c0623SSatish Balay } 37173c0623SSatish Balay 382f382f9bSSatish Balay ierr = PetscGetTime(&x);CHKERRA(ierr); 39173c0623SSatish Balay 40173c0623SSatish Balay /* Do some frees */ 41173c0623SSatish Balay for (i=0; i< 1000; i+=2) { 42*606d414cSSatish Balay ierr = PetscFree(arr[i]);CHKERRA(ierr); 43173c0623SSatish Balay } 44173c0623SSatish Balay 45173c0623SSatish Balay /* Do some mallocs */ 46173c0623SSatish Balay for (i=0; i< 1000; i+=2) { 47173c0623SSatish Balay arr[i] = PetscMalloc(rand2[i]);CHKPTRA( arr[i]); 48173c0623SSatish Balay } 492f382f9bSSatish Balay ierr = PetscGetTime(&y);CHKERRA(ierr); 50173c0623SSatish Balay 51173c0623SSatish Balay for (i=0; i< 1000; i++) { 52*606d414cSSatish Balay ierr = PetscFree(arr[i]);CHKERRA(ierr); 53173c0623SSatish Balay } 54173c0623SSatish Balay 55c0e5a298SSatish Balay fprintf(stderr,"%-15s : %e sec , with options : ","PetscMalloc",(y-x)/500.0); 56173c0623SSatish Balay if(OptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stderr,"-trmalloc "); 57173c0623SSatish Balay fprintf(stderr,"\n"); 58173c0623SSatish Balay 5977c4ece6SBarry Smith PetscRandomDestroy(r); 60173c0623SSatish Balay PetscFinalize(); 613a40ed3dSBarry Smith PetscFunctionReturn(0); 62173c0623SSatish Balay } 63