xref: /petsc/src/benchmarks/PetscGetCPUTime.c (revision abdd934af67c1cc360c4d0cfcf2de16e188d627e)
14cd03b37SPatrick Sanan #include <petsctime.h>
2b620a312SSatish Balay 
main(int argc,char ** argv)3b620a312SSatish Balay int main(int argc, char **argv)
4b620a312SSatish Balay {
5b0a32e0cSBarry Smith   PetscLogDouble x, y;
6d3093643SSatish Balay   long int       i, j, A[100000], ierr;
7b620a312SSatish Balay 
8*9566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, 0, 0));
9b620a312SSatish Balay   /* To take care of paging effects */
10*9566063dSJacob Faibussowitsch   PetscCall(PetscGetCPUTime(&y));
11b620a312SSatish Balay 
12b620a312SSatish Balay   for (i = 0; i < 2; i++) {
13*9566063dSJacob Faibussowitsch     PetscCall(PetscGetCPUTime(&x));
14b620a312SSatish Balay 
15b620a312SSatish Balay     /*
16b620a312SSatish Balay        Do some work for at least 1 ms. Most CPU timers
17b620a312SSatish Balay        cannot measure anything less than that
18b620a312SSatish Balay      */
19b620a312SSatish Balay 
206f2b61bcSKarl Rupp     for (j = 0; j < 20000 * (i + 1); j++) A[j] = i + j;
21*9566063dSJacob Faibussowitsch     PetscCall(PetscGetCPUTime(&y));
22b4d8b9abSSatish Balay     fprintf(stdout, "%-15s : %e sec\n", "PetscGetCPUTime", (y - x) / 10.0);
23b620a312SSatish Balay   }
24b620a312SSatish Balay 
25*9566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
26b122ec5aSJacob Faibussowitsch   return 0;
27b620a312SSatish Balay }
28