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
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: PetscTruth flg;
14:
15: PetscInitialize(&argc,&argv,0,0);
16:
17: PetscRandomCreate(PETSC_COMM_SELF,RANDOM_DEFAULT,&r);
18: for (i=0; i<1000; i++) {
19: ierr = PetscRandomGetValue(r,&value);
20: rand1[i] = (int)(value* 144327);
21: ierr = PetscRandomGetValue(r,&value);
22: rand2[i] = (int)(value* 144327);
23: }
24:
25: /* Take care of paging effects */
26: PetscMalloc(100,&dummy);
27: PetscFree(dummy);
28: PetscGetTime(&x);
30: /* Do all mallocs */
31: for (i=0 ; i< 1000; i++) {
32: PetscMalloc(rand1[i],& arr[i]);
33: }
34:
35: PetscGetTime(&x);
37: /* Do some frees */
38: for (i=0; i< 1000; i+=2) {
39: PetscFree(arr[i]);
40: }
42: /* Do some mallocs */
43: for (i=0; i< 1000; i+=2) {
44: PetscMalloc(rand2[i],&arr[i]);
45: }
46: PetscGetTime(&y);
47:
48: for (i=0; i< 1000; i++) {
49: PetscFree(arr[i]);
50: }
51:
52: fprintf(stdout,"%-15s : %e sec, with options : ","PetscMalloc",(y-x)/500.0);
53: if(PetscOptionsHasName(PETSC_NULL,"-trmalloc",&flg),flg) fprintf(stdout,"-trmalloc ");
54: fprintf(stdout,"n");
55:
56: PetscRandomDestroy(r);
57: PetscFinalize();
58: return(0);
59: }