xref: /petsc/src/benchmarks/PetscMalloc.c (revision ac355199758bcb0816d12ec02ec1ad655f49044a)
1*ac355199SBarry Smith /*$Id: PetscMalloc.c,v 1.23 2001/01/16 18:21:52 balay Exp bsmith $*/
2d8e9fea7SSatish Balay 
3173c0623SSatish Balay #include "petsc.h"
4e090d566SSatish Balay #include "petscsys.h"
5173c0623SSatish Balay 
65a655dc6SBarry Smith #undef __FUNC__
75a655dc6SBarry Smith #define __FUNC__ "main"
8173c0623SSatish Balay int main(int argc,char **argv)
9173c0623SSatish Balay {
10b0a32e0cSBarry Smith   PetscLogDouble  x,y;
1147794344SBarry Smith   double      value;
1298d6af09SSatish Balay   void        *arr[1000],*dummy;
13f1af5d2fSBarry Smith   int         ierr,i,rand1[1000],rand2[1000];
1477c4ece6SBarry Smith   PetscRandom r;
15f1af5d2fSBarry Smith   PetscTruth  flg;
16173c0623SSatish Balay 
1777c4ece6SBarry Smith   PetscInitialize(&argc,&argv,0,0);
18173c0623SSatish Balay 
19029af93fSBarry 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 */
28*ac355199SBarry Smith   ierr = PetscMalloc(100,&dummy);CHKERRQ(ierr);
29*ac355199SBarry Smith   ierr = PetscFree(dummy);CHKERRQ(ierr);
30*ac355199SBarry Smith   ierr = PetscGetTime(&x);CHKERRQ(ierr);
3198d6af09SSatish Balay 
32173c0623SSatish Balay   /* Do all mallocs */
33173c0623SSatish Balay   for (i=0 ; i< 1000; i++) {
34*ac355199SBarry Smith     ierr = PetscMalloc(rand1[i],& arr[i]);CHKERRQ(ierr);
35173c0623SSatish Balay   }
36173c0623SSatish Balay 
37*ac355199SBarry Smith   ierr = PetscGetTime(&x);CHKERRQ(ierr);
38173c0623SSatish Balay 
39173c0623SSatish Balay   /* Do some frees */
40173c0623SSatish Balay   for (i=0; i< 1000; i+=2) {
41*ac355199SBarry Smith     ierr = PetscFree(arr[i]);CHKERRQ(ierr);
42173c0623SSatish Balay   }
43173c0623SSatish Balay 
44173c0623SSatish Balay   /* Do some mallocs */
45173c0623SSatish Balay   for (i=0; i< 1000; i+=2) {
46*ac355199SBarry Smith     ierr = PetscMalloc(rand2[i],&arr[i]);CHKERRQ(ierr);
47173c0623SSatish Balay  }
48*ac355199SBarry Smith   ierr = PetscGetTime(&y);CHKERRQ(ierr);
49173c0623SSatish Balay 
50173c0623SSatish Balay   for (i=0; i< 1000; i++) {
51*ac355199SBarry Smith     ierr = PetscFree(arr[i]);CHKERRQ(ierr);
52173c0623SSatish Balay   }
53173c0623SSatish Balay 
5435d8aa7fSBarry Smith   fprintf(stdout,"%-15s : %e sec, with options : ","PetscMalloc",(y-x)/500.0);
55b0a32e0cSBarry Smith   if(PetscOptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stdout,"-trmalloc ");
5635d8aa7fSBarry Smith   fprintf(stdout,"\n");
57173c0623SSatish Balay 
58*ac355199SBarry Smith   ierr = PetscRandomDestroy(r);CHKERRQ(ierr);
59173c0623SSatish Balay   PetscFinalize();
603a40ed3dSBarry Smith   PetscFunctionReturn(0);
61173c0623SSatish Balay }
62