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