xref: /petsc/src/benchmarks/PetscMemcmp.c (revision 607e733f3db3ee7f6f605a13295c517df8dbb9c9)
1 #include <petscsys.h>
2 #include <petsctime.h>
3 
4 int main(int argc, char **argv)
5 {
6   PetscLogDouble x, y, z;
7   PetscScalar    A[10000], B[10000];
8   PetscInt       i;
9   PetscBool      flg;
10 
11   PetscCall(PetscInitialize(&argc, &argv, 0, 0));
12   for (i = 0; i < 10000; i++) {
13     A[i] = i % 61897;
14     B[i] = i % 61897;
15   }
16   /* To take care of paging effects */
17   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
18   PetscCall(PetscTime(&x));
19 
20   PetscCall(PetscTime(&x));
21   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
22   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
23   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
24   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
25   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
26   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
27   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
28   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
29   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
30   PetscMemcmp(A, B, sizeof(PetscScalar) * 10000, &flg);
31   PetscCall(PetscTime(&y));
32   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
33   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
34   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
35   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
36   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
37   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
38   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
39   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
40   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
41   PetscMemcmp(A, B, sizeof(PetscScalar) * 0, &flg);
42   PetscCall(PetscTime(&z));
43 
44   fprintf(stdout, "%s : \n", "PetscMemcmp");
45   fprintf(stdout, "    %-15s : %e sec\n", "Latency", (z - y) / 10.0);
46   fprintf(stdout, "    %-15s : %e sec\n", "Per PetscScalar", (2 * y - x - z) / 100000);
47 
48   PetscCall(PetscFinalize());
49   return 0;
50 }
51