Actual source code: PetscMalloc.c

  1: /*$Id: PetscMalloc.c,v 1.28 2001/08/29 20:59:39 balay Exp $*/

 3:  #include petsc.h
 4:  #include petscsys.h

  6: int main(int argc,char **argv)
  7: {
  8:   PetscLogDouble  x,y;
  9:   double      value;
 10:   void        *arr[1000],*dummy;
 11:   int         ierr,i,rand1[1000],rand2[1000];
 12:   PetscRandom r;
 13:   PetscTruth  flg;
 14: 
 15:   PetscInitialize(&argc,&argv,0,0);
 16: 
 17:   PetscRandomCreate(PETSC_COMM_SELF,RANDOM_DEFAULT,&r);
 18:   for (i=0; i<1000; i++) {
 19:     ierr    = PetscRandomGetValue(r,&value);
 20:     rand1[i] = (int)(value* 144327);
 21:     ierr    = PetscRandomGetValue(r,&value);
 22:     rand2[i] = (int)(value* 144327);
 23:   }
 24: 
 25:   /* Take care of paging effects */
 26:   PetscMalloc(100,&dummy);
 27:   PetscFree(dummy);
 28:   PetscGetTime(&x);

 30:   /* Do all mallocs */
 31:   for (i=0 ; i< 1000; i++) {
 32:     PetscMalloc(rand1[i],& arr[i]);
 33:   }
 34: 
 35:   PetscGetTime(&x);

 37:   /* Do some frees */
 38:   for (i=0; i< 1000; i+=2) {
 39:     PetscFree(arr[i]);
 40:   }

 42:   /* Do some mallocs */
 43:   for (i=0; i< 1000; i+=2) {
 44:     PetscMalloc(rand2[i],&arr[i]);
 45:  }
 46:   PetscGetTime(&y);
 47: 
 48:   for (i=0; i< 1000; i++) {
 49:     PetscFree(arr[i]);
 50:   }
 51: 
 52:   fprintf(stdout,"%-15s : %e sec, with options : ","PetscMalloc",(y-x)/500.0);
 53:   if(PetscOptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stdout,"-trmalloc ");
 54:   fprintf(stdout,"n");
 55: 
 56:   PetscRandomDestroy(r);
 57:   PetscFinalize();
 58:   return(0);
 59: }