Actual source code: PetscMalloc.c
petsc-3.3-p7 2013-05-11
2: #include <petscsys.h>
6: int main(int argc,char **argv)
7: {
8: PetscLogDouble x,y;
9: double value;
10: void *arr[1000],*dummy;
11: int ierr,i,rand1[1000],rand2[1000];
12: PetscRandom r;
13: PetscBool flg;
14:
15: PetscInitialize(&argc,&argv,0,0);
16:
17: PetscRandomCreate(PETSC_COMM_SELF,&r);
18: PetscRandomSetFromOptions(r);
19: for (i=0; i<1000; i++) {
20: PetscRandomGetValue(r,&value);
21: rand1[i] = (int)(value* 144327);
22: PetscRandomGetValue(r,&value);
23: rand2[i] = (int)(value* 144327);
24: }
25:
26: /* Take care of paging effects */
27: PetscMalloc(100,&dummy);
28: PetscFree(dummy);
29: PetscGetTime(&x);
31: /* Do all mallocs */
32: for (i=0 ; i< 1000; i++) {
33: PetscMalloc(rand1[i],& arr[i]);
34: }
35:
36: PetscGetTime(&x);
38: /* Do some frees */
39: for (i=0; i< 1000; i+=2) {
40: PetscFree(arr[i]);
41: }
43: /* Do some mallocs */
44: for (i=0; i< 1000; i+=2) {
45: PetscMalloc(rand2[i],&arr[i]);
46: }
47: PetscGetTime(&y);
48:
49: for (i=0; i< 1000; i++) {
50: PetscFree(arr[i]);
51: }
52:
53: fprintf(stdout,"%-15s : %e sec, with options : ","PetscMalloc",(y-x)/500.0);
54: if(PetscOptionsHasName(PETSC_NULL,"-malloc",&flg),flg) fprintf(stdout,"-malloc ");
55: fprintf(stdout,"\n");
56:
57: PetscRandomDestroy(&r);
58: PetscFinalize();
59: return(0);
60: }