xref: /petsc/src/benchmarks/PetscMalloc.c (revision 606d414c6e034e02e67059b83ebaefc3ebe99698)
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