1 #ifdef PETSC_RCS_HEADER 2 static char vcid[] = "$Id: PetscMalloc.c,v 1.12 1998/04/21 18:34:13 balay Exp bsmith $"; 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 PetscFree(dummy); 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 PetscFree(arr[i]); 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 PetscFree(arr[i]); 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