xref: /petsc/src/benchmarks/PetscMalloc.c (revision 029af93f72d387caa45cf6909ac9aed2d04296ca)
1d8e9fea7SSatish Balay #ifndef lint
2*029af93fSBarry Smith static char vcid[] = "$Id: PetscMalloc.c,v 1.8 1997/03/09 18:00:35 bsmith Exp bsmith $";
3d8e9fea7SSatish Balay #endif
4d8e9fea7SSatish Balay 
5173c0623SSatish Balay #include "stdio.h"
6173c0623SSatish Balay #include "petsc.h"
7173c0623SSatish Balay #include "sys.h"
8173c0623SSatish Balay 
9173c0623SSatish Balay int main( int argc, char **argv)
10173c0623SSatish Balay {
1147794344SBarry Smith   PLogDouble  x, y;
1247794344SBarry Smith   double      value;
1398d6af09SSatish Balay   void        *arr[1000], *dummy;
14173c0623SSatish Balay   int         ierr, i, flg, rand1[1000], rand2[1000];
1577c4ece6SBarry Smith   PetscRandom r;
16173c0623SSatish Balay 
1777c4ece6SBarry Smith   PetscInitialize(&argc, &argv,0,0);
18173c0623SSatish Balay 
19*029af93fSBarry 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 */
2898d6af09SSatish Balay   dummy = PetscMalloc(100); CHKPTRA(dummy);
2998d6af09SSatish Balay   PetscFree(dummy);
300a26283dSSatish Balay   x = PetscGetTime();
3198d6af09SSatish Balay 
32173c0623SSatish Balay   /* Do all mallocs */
33173c0623SSatish Balay   for (i=0 ; i< 1000; i++) {
34173c0623SSatish Balay     arr[i] = PetscMalloc(rand1[i]); CHKPTRA( arr[i]);
35173c0623SSatish Balay   }
36173c0623SSatish Balay 
37173c0623SSatish Balay   x = PetscGetTime();
38173c0623SSatish Balay 
39173c0623SSatish Balay   /* Do some frees */
40173c0623SSatish Balay   for (i=0; i< 1000; i+=2) {
41173c0623SSatish Balay     PetscFree(arr[i]);
42173c0623SSatish Balay   }
43173c0623SSatish Balay 
44173c0623SSatish Balay   /* Do some mallocs */
45173c0623SSatish Balay   for (i=0; i< 1000; i+=2) {
46173c0623SSatish Balay     arr[i] = PetscMalloc(rand2[i]); CHKPTRA( arr[i]);
47173c0623SSatish Balay  }
48173c0623SSatish Balay   y = PetscGetTime();
49173c0623SSatish Balay 
50173c0623SSatish Balay   for (i=0; i< 1000; i++) {
51173c0623SSatish Balay     PetscFree(arr[i]);
52173c0623SSatish Balay   }
53173c0623SSatish Balay 
54c0e5a298SSatish Balay   fprintf(stderr,"%-15s : %e sec , with options : ","PetscMalloc",(y-x)/500.0);
55173c0623SSatish Balay   if(OptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stderr,"-trmalloc ");
56173c0623SSatish Balay   fprintf(stderr,"\n");
57173c0623SSatish Balay 
5877c4ece6SBarry Smith   PetscRandomDestroy(r);
59173c0623SSatish Balay   PetscFinalize();
60173c0623SSatish Balay   return 0;
61173c0623SSatish Balay }
62