1 #include <petscsys.h>
2 #include <petsctime.h>
3
main(int argc,char ** argv)4 int main(int argc, char **argv)
5 {
6 PetscLogDouble x, y, z;
7 PetscScalar A[10000];
8
9 PetscCall(PetscInitialize(&argc, &argv, 0, 0));
10 /* To take care of paging effects */
11 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
12 PetscCall(PetscTime(&x));
13
14 PetscCall(PetscTime(&x));
15 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
16 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
17 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
18 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
19 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
20 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
21 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
22 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
23 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
24 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000));
25 PetscCall(PetscTime(&y));
26 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
27 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
28 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
29 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
30 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
31 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
32 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
33 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
34 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
35 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0));
36 PetscCall(PetscTime(&z));
37
38 fprintf(stdout, "%s : \n", "PetscMemzero");
39 fprintf(stdout, " %-15s : %e sec\n", "Latency", (z - y) / 10.0);
40 fprintf(stdout, " %-15s : %e sec\n", "Per PetscScalar", (2 * y - x - z) / 100000.0);
41
42 PetscCall(PetscFinalize());
43 return 0;
44 }
45