xref: /petsc/src/benchmarks/PetscMalloc.c (revision f3fe499b4cc4d64bf04aa4f5e4963dcc4eb56541)
1d8e9fea7SSatish Balay 
2d382aafbSBarry Smith #include "petscsys.h"
3173c0623SSatish Balay 
44a2ae208SSatish Balay #undef __FUNCT__
54a2ae208SSatish Balay #define __FUNCT__ "main"
6173c0623SSatish Balay int main(int argc,char **argv)
7173c0623SSatish Balay {
8b0a32e0cSBarry Smith   PetscLogDouble  x,y;
947794344SBarry Smith   double      value;
1098d6af09SSatish Balay   void        *arr[1000],*dummy;
11f1af5d2fSBarry Smith   int         ierr,i,rand1[1000],rand2[1000];
1277c4ece6SBarry Smith   PetscRandom r;
13f1af5d2fSBarry Smith   PetscTruth  flg;
14173c0623SSatish Balay 
1577c4ece6SBarry Smith   PetscInitialize(&argc,&argv,0,0);
16173c0623SSatish Balay 
17c77d6671SHong Zhang   ierr = PetscRandomCreate(PETSC_COMM_SELF,&r);CHKERRQ(ierr);
18c77d6671SHong Zhang   ierr = PetscRandomSetFromOptions(r);CHKERRQ(ierr);
19173c0623SSatish Balay   for (i=0; i<1000; i++) {
2077c4ece6SBarry Smith     ierr    = PetscRandomGetValue(r,&value);CHKERRQ(ierr);
21173c0623SSatish Balay     rand1[i] = (int)(value* 144327);
2277c4ece6SBarry Smith     ierr    = PetscRandomGetValue(r,&value);CHKERRQ(ierr);
23173c0623SSatish Balay     rand2[i] = (int)(value* 144327);
24173c0623SSatish Balay   }
25173c0623SSatish Balay 
2698d6af09SSatish Balay   /* Take care of paging effects */
27ac355199SBarry Smith   ierr = PetscMalloc(100,&dummy);CHKERRQ(ierr);
28ac355199SBarry Smith   ierr = PetscFree(dummy);CHKERRQ(ierr);
29ac355199SBarry Smith   ierr = PetscGetTime(&x);CHKERRQ(ierr);
3098d6af09SSatish Balay 
31173c0623SSatish Balay   /* Do all mallocs */
32173c0623SSatish Balay   for (i=0 ; i< 1000; i++) {
33ac355199SBarry Smith     ierr = PetscMalloc(rand1[i],& arr[i]);CHKERRQ(ierr);
34173c0623SSatish Balay   }
35173c0623SSatish Balay 
36ac355199SBarry Smith   ierr = PetscGetTime(&x);CHKERRQ(ierr);
37173c0623SSatish Balay 
38173c0623SSatish Balay   /* Do some frees */
39173c0623SSatish Balay   for (i=0; i< 1000; i+=2) {
40ac355199SBarry Smith     ierr = PetscFree(arr[i]);CHKERRQ(ierr);
41173c0623SSatish Balay   }
42173c0623SSatish Balay 
43173c0623SSatish Balay   /* Do some mallocs */
44173c0623SSatish Balay   for (i=0; i< 1000; i+=2) {
45ac355199SBarry Smith     ierr = PetscMalloc(rand2[i],&arr[i]);CHKERRQ(ierr);
46173c0623SSatish Balay  }
47ac355199SBarry Smith   ierr = PetscGetTime(&y);CHKERRQ(ierr);
48173c0623SSatish Balay 
49173c0623SSatish Balay   for (i=0; i< 1000; i++) {
50ac355199SBarry Smith     ierr = PetscFree(arr[i]);CHKERRQ(ierr);
51173c0623SSatish Balay   }
52173c0623SSatish Balay 
53b4d8b9abSSatish Balay   fprintf(stdout,"%-15s : %e sec, with options : ","PetscMalloc",(y-x)/500.0);
54ff002950SBarry Smith   if(PetscOptionsHasName(PETSC_NULL,"-malloc",&flg),flg) fprintf(stdout,"-malloc ");
55b4d8b9abSSatish Balay   fprintf(stdout,"\n");
56173c0623SSatish Balay 
57ac355199SBarry Smith   ierr = PetscRandomDestroy(r);CHKERRQ(ierr);
58*f3fe499bSBarry Smith   ierr = PetscFinalize();
593a40ed3dSBarry Smith   PetscFunctionReturn(0);
60173c0623SSatish Balay }
61