xref: /petsc/src/benchmarks/PetscMalloc.c (revision 173c062396e103eb3d1a3e577383b37e38b301ab)
1*173c0623SSatish Balay #include "stdio.h"
2*173c0623SSatish Balay #include "petsc.h"
3*173c0623SSatish Balay #include "sys.h"
4*173c0623SSatish Balay 
5*173c0623SSatish Balay int main( int argc, char **argv)
6*173c0623SSatish Balay {
7*173c0623SSatish Balay   double   x, y, value;
8*173c0623SSatish Balay   void     *arr[1000];
9*173c0623SSatish Balay   int      ierr, i, flg, rand1[1000], rand2[1000];
10*173c0623SSatish Balay   SYRandom r;
11*173c0623SSatish Balay 
12*173c0623SSatish Balay   PetscInitialize(&argc, &argv,0,0,0);
13*173c0623SSatish Balay 
14*173c0623SSatish Balay   ierr = SYRandomCreate( MPI_COMM_SELF,RANDOM_DEFAULT,&r); CHKERRQ(ierr);
15*173c0623SSatish Balay   for (i=0; i<1000; i++) {
16*173c0623SSatish Balay     ierr    = SYRandomGetValue(r, &value); CHKERRQ(ierr);
17*173c0623SSatish Balay     rand1[i] = (int ) (value* 144327);
18*173c0623SSatish Balay     ierr    = SYRandomGetValue(r, &value); CHKERRQ(ierr);
19*173c0623SSatish Balay     rand2[i] = (int ) (value* 144327);
20*173c0623SSatish Balay   }
21*173c0623SSatish Balay 
22*173c0623SSatish Balay   /* Do all mallocs */
23*173c0623SSatish Balay   for (i=0 ; i< 1000; i++) {
24*173c0623SSatish Balay     arr[i] = PetscMalloc(rand1[i]); CHKPTRA( arr[i]);
25*173c0623SSatish Balay   }
26*173c0623SSatish Balay 
27*173c0623SSatish Balay   x = PetscGetTime();
28*173c0623SSatish Balay 
29*173c0623SSatish Balay   /* Do some frees */
30*173c0623SSatish Balay   for (i=0; i< 1000; i+=2) {
31*173c0623SSatish Balay     PetscFree(arr[i]);
32*173c0623SSatish Balay   }
33*173c0623SSatish Balay 
34*173c0623SSatish Balay   /* Do some mallocs */
35*173c0623SSatish Balay   for (i=0; i< 1000; i+=2) {
36*173c0623SSatish Balay     arr[i] = PetscMalloc(rand2[i]); CHKPTRA( arr[i]);
37*173c0623SSatish Balay  }
38*173c0623SSatish Balay   y = PetscGetTime();
39*173c0623SSatish Balay 
40*173c0623SSatish Balay   for (i=0; i< 1000; i++) {
41*173c0623SSatish Balay     PetscFree(arr[i]);
42*173c0623SSatish Balay   }
43*173c0623SSatish Balay 
44*173c0623SSatish Balay   fprintf(stderr,"%-15s : %e sec , with options : ","PLogEvent",(y-x)/10.0);
45*173c0623SSatish Balay   if(OptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stderr,"-trmalloc ");
46*173c0623SSatish Balay   fprintf(stderr,"\n");
47*173c0623SSatish Balay 
48*173c0623SSatish Balay   SYRandomDestroy(r);
49*173c0623SSatish Balay   PetscFinalize();
50*173c0623SSatish Balay   return 0;
51*173c0623SSatish Balay }
52