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

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

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

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

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