bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

tests: Create new file bench.h


From: Bruno Haible
Subject: tests: Create new file bench.h
Date: Tue, 11 Jul 2023 21:45:32 +0200

This patch moves generic benchmarking code into a separate file, to make it
easy to reuse it in new benchmarks.


2023-07-11  Bruno Haible  <bruno@clisp.org>

        tests: Create new file bench.h.
        * tests/bench.h: New file, extracted from tests/bench-digest.h.
        * tests/bench-digest.h: Include it.
        * modules/crypto/md5-buffer-tests (Files): Add tests/bench.h.
        * modules/crypto/sha1-buffer-tests (Files): Likewise.
        * modules/crypto/sha256-buffer-tests (Files): Likewise.
        * modules/crypto/sha512-buffer-tests (Files): Likewise.

diff --git a/modules/crypto/md5-buffer-tests b/modules/crypto/md5-buffer-tests
index cc07337f08..312fc4a399 100644
--- a/modules/crypto/md5-buffer-tests
+++ b/modules/crypto/md5-buffer-tests
@@ -2,6 +2,7 @@ Files:
 tests/test-md5-buffer.c
 tests/bench-md5.c
 tests/bench-digest.h
+tests/bench.h
 
 Depends-on:
 c99
diff --git a/modules/crypto/sha1-buffer-tests b/modules/crypto/sha1-buffer-tests
index 7420378c82..ec2144f095 100644
--- a/modules/crypto/sha1-buffer-tests
+++ b/modules/crypto/sha1-buffer-tests
@@ -2,6 +2,7 @@ Files:
 tests/test-sha1-buffer.c
 tests/bench-sha1.c
 tests/bench-digest.h
+tests/bench.h
 
 Depends-on:
 c99
diff --git a/modules/crypto/sha256-buffer-tests 
b/modules/crypto/sha256-buffer-tests
index 53924b4a03..8e16fd9c83 100644
--- a/modules/crypto/sha256-buffer-tests
+++ b/modules/crypto/sha256-buffer-tests
@@ -2,6 +2,7 @@ Files:
 tests/bench-sha224.c
 tests/bench-sha256.c
 tests/bench-digest.h
+tests/bench.h
 
 Depends-on:
 c99
diff --git a/modules/crypto/sha512-buffer-tests 
b/modules/crypto/sha512-buffer-tests
index 0b61ec444b..042046a4f8 100644
--- a/modules/crypto/sha512-buffer-tests
+++ b/modules/crypto/sha512-buffer-tests
@@ -2,6 +2,7 @@ Files:
 tests/bench-sha384.c
 tests/bench-sha512.c
 tests/bench-digest.h
+tests/bench.h
 
 Depends-on:
 c99
diff --git a/tests/bench-digest.h b/tests/bench-digest.h
index 38c4f03dc8..95d7300d6e 100644
--- a/tests/bench-digest.h
+++ b/tests/bench-digest.h
@@ -16,58 +16,8 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <sys/resource.h>
-#include <sys/time.h>
 
-struct timings_state
-{
-  /* Filled when the timings start.  */
-  struct timeval real_start;
-  struct timeval user_start;
-  struct timeval sys_start;
-  /* Filled when the timings end.  */
-  long real_usec;
-  long user_usec;
-  long sys_usec;
-};
-
-static void
-timing_start (struct timings_state *ts)
-{
-  struct rusage usage;
-
-  getrusage (RUSAGE_SELF, &usage);
-  ts->user_start = usage.ru_utime;
-  ts->sys_start = usage.ru_stime;
-
-  gettimeofday (&ts->real_start, NULL);
-}
-
-static void
-timing_end (struct timings_state *ts)
-{
-  struct timeval real_end;
-  struct rusage usage;
-
-  gettimeofday (&real_end, NULL);
-
-  getrusage (RUSAGE_SELF, &usage);
-
-  ts->real_usec = (real_end.tv_sec - ts->real_start.tv_sec) * 1000000
-                  + real_end.tv_usec - ts->real_start.tv_usec;
-  ts->user_usec = (usage.ru_utime.tv_sec - ts->user_start.tv_sec) * 1000000
-                  + usage.ru_utime.tv_usec - ts->user_start.tv_usec;
-  ts->sys_usec = (usage.ru_stime.tv_sec - ts->sys_start.tv_sec) * 1000000
-                 + usage.ru_stime.tv_usec - ts->sys_start.tv_usec;
-}
-
-static void
-timing_output (const struct timings_state *ts)
-{
-  printf ("real %10.6f\n", (double)ts->real_usec / 1000000.0);
-  printf ("user %7.3f\n", (double)ts->user_usec / 1000000.0);
-  printf ("sys  %7.3f\n", (double)ts->sys_usec / 1000000.0);
-}
+#include "bench.h"
 
 int
 main (int argc, char *argv[])
diff --git a/tests/bench.h b/tests/bench.h
new file mode 100644
index 0000000000..4bfdbd4ec1
--- /dev/null
+++ b/tests/bench.h
@@ -0,0 +1,69 @@
+/* Utilities for benchmarks.
+   Copyright (C) 2018-2023 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <sys/resource.h>
+#include <sys/time.h>
+
+struct timings_state
+{
+  /* Filled when the timings start.  */
+  struct timeval real_start;
+  struct timeval user_start;
+  struct timeval sys_start;
+  /* Filled when the timings end.  */
+  long real_usec;
+  long user_usec;
+  long sys_usec;
+};
+
+static void
+timing_start (struct timings_state *ts)
+{
+  struct rusage usage;
+
+  getrusage (RUSAGE_SELF, &usage);
+  ts->user_start = usage.ru_utime;
+  ts->sys_start = usage.ru_stime;
+
+  gettimeofday (&ts->real_start, NULL);
+}
+
+static void
+timing_end (struct timings_state *ts)
+{
+  struct timeval real_end;
+  struct rusage usage;
+
+  gettimeofday (&real_end, NULL);
+
+  getrusage (RUSAGE_SELF, &usage);
+
+  ts->real_usec = (real_end.tv_sec - ts->real_start.tv_sec) * 1000000
+                  + real_end.tv_usec - ts->real_start.tv_usec;
+  ts->user_usec = (usage.ru_utime.tv_sec - ts->user_start.tv_sec) * 1000000
+                  + usage.ru_utime.tv_usec - ts->user_start.tv_usec;
+  ts->sys_usec = (usage.ru_stime.tv_sec - ts->sys_start.tv_sec) * 1000000
+                 + usage.ru_stime.tv_usec - ts->sys_start.tv_usec;
+}
+
+static void
+timing_output (const struct timings_state *ts)
+{
+  printf ("real %10.6f\n", (double)ts->real_usec / 1000000.0);
+  printf ("user %7.3f\n", (double)ts->user_usec / 1000000.0);
+  printf ("sys  %7.3f\n", (double)ts->sys_usec / 1000000.0);
+}






reply via email to

[Prev in Thread] Current Thread [Next in Thread]