1c6db04a5SJed Brown #include <petscsys.h> 28563dfccSBarry Smith #include <petsctime.h> 3173c0623SSatish Balay 4173c0623SSatish Balay int main(int argc,char **argv) 5173c0623SSatish Balay { 6b0a32e0cSBarry Smith PetscLogDouble x,y; 747794344SBarry Smith double value; 898d6af09SSatish Balay void *arr[1000],*dummy; 9a438ae71SBarry Smith int i,rand1[1000],rand2[1000]; 1077c4ece6SBarry Smith PetscRandom r; 11ace3abfcSBarry Smith PetscBool flg; 12173c0623SSatish Balay 139566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc,&argv,0,0)); 149566063dSJacob Faibussowitsch PetscCall(PetscRandomCreate(PETSC_COMM_SELF,&r)); 159566063dSJacob Faibussowitsch PetscCall(PetscRandomSetFromOptions(r)); 16173c0623SSatish Balay for (i=0; i<1000; i++) { 179566063dSJacob Faibussowitsch PetscCall(PetscRandomGetValue(r,&value)); 18173c0623SSatish Balay rand1[i] = (int)(value* 144327); 199566063dSJacob Faibussowitsch PetscCall(PetscRandomGetValue(r,&value)); 20173c0623SSatish Balay rand2[i] = (int)(value* 144327); 21173c0623SSatish Balay } 22173c0623SSatish Balay 2398d6af09SSatish Balay /* Take care of paging effects */ 249566063dSJacob Faibussowitsch PetscCall(PetscMalloc1(100,&dummy)); 259566063dSJacob Faibussowitsch PetscCall(PetscFree(dummy)); 269566063dSJacob Faibussowitsch PetscCall(PetscTime(&x)); 2798d6af09SSatish Balay 28173c0623SSatish Balay /* Do all mallocs */ 29*3a7d0413SPierre Jolivet for (i=0; i< 1000; i++) PetscCall(PetscMalloc1(rand1[i],&arr[i])); 30173c0623SSatish Balay 319566063dSJacob Faibussowitsch PetscCall(PetscTime(&x)); 32173c0623SSatish Balay 33173c0623SSatish Balay /* Do some frees */ 34*3a7d0413SPierre Jolivet for (i=0; i< 1000; i+=2) PetscCall(PetscFree(arr[i])); 35173c0623SSatish Balay 36173c0623SSatish Balay /* Do some mallocs */ 37*3a7d0413SPierre Jolivet for (i=0; i< 1000; i+=2) PetscCall(PetscMalloc1(rand2[i],&arr[i])); 389566063dSJacob Faibussowitsch PetscCall(PetscTime(&y)); 39173c0623SSatish Balay 40*3a7d0413SPierre Jolivet for (i=0; i< 1000; i++) PetscCall(PetscFree(arr[i])); 41173c0623SSatish Balay 42b4d8b9abSSatish Balay fprintf(stdout,"%-15s : %e sec, with options : ","PetscMalloc",(y-x)/500.0); 439566063dSJacob Faibussowitsch PetscCall(PetscOptionsHasName(NULL,"-malloc",&flg)); 448caf3d72SBarry Smith if (flg) fprintf(stdout,"-malloc "); 45b4d8b9abSSatish Balay fprintf(stdout,"\n"); 46173c0623SSatish Balay 479566063dSJacob Faibussowitsch PetscCall(PetscRandomDestroy(&r)); 489566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 49b122ec5aSJacob Faibussowitsch return 0; 50173c0623SSatish Balay } 51