This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.27.9000-174-g0963ea8
- From: siddhesh at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 6 Mar 2018 13:42:14 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.27.9000-174-g0963ea8
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 0963ea8e8cf32cf0d87db2b3ce446a96af591ff6 (commit)
via 7bb3a8a556b6d72a33b8733ffb46165f3d9066c5 (commit)
via ad4e816e0673b80a35a12ba6892837022bf88972 (commit)
from 4e9066bc88e815f156b2fcfb4a34e68e3b492b4f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=0963ea8e8cf32cf0d87db2b3ce446a96af591ff6
commit 0963ea8e8cf32cf0d87db2b3ce446a96af591ff6
Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date: Tue Mar 6 18:29:57 2018 +0530
benchtests: Don't benchmark 0 length calls for strncmp
The 0 length strncmp is interesting for correctness but not for
performance.
* benchtests/bench-strncmp.c (test_main): Remove 0 length tests.
(do_test_limit): Likewise.
diff --git a/benchtests/bench-strncmp.c b/benchtests/bench-strncmp.c
index 4354d70..97dc390 100644
--- a/benchtests/bench-strncmp.c
+++ b/benchtests/bench-strncmp.c
@@ -137,29 +137,6 @@ do_test_limit (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len,
size_t i, align_n;
CHAR *s1, *s2;
- if (n == 0)
- {
- json_element_object_begin (json_ctx);
- json_attr_uint (json_ctx, "strlen", (double) len);
- json_attr_uint (json_ctx, "len", (double) n);
- json_attr_uint (json_ctx, "align1", (double) 0);
- json_attr_uint (json_ctx, "align2", (double) 0);
- json_array_begin (json_ctx, "timings");
-
- FOR_EACH_IMPL (impl, 0)
- {
- realloc_bufs ();
- s1 = (CHAR *) (buf1 + page_size);
- s2 = (CHAR *) (buf2 + page_size);
- do_one_test (json_ctx, impl, s1, s2, n, 0);
- }
-
- json_array_end (json_ctx);
- json_element_object_end (json_ctx);
-
- return;
- }
-
align1 &= 15;
align2 &= 15;
align_n = (page_size - n * CHARBYTES) & 15;
@@ -315,7 +292,6 @@ test_main (void)
do_test (&json_ctx, 2 * i, i, 8 << i, 16 << i, 255, 1);
}
- do_test_limit (&json_ctx, 0, 0, 0, 0, 127, 0);
do_test_limit (&json_ctx, 4, 0, 21, 20, 127, 0);
do_test_limit (&json_ctx, 0, 4, 21, 20, 127, 0);
do_test_limit (&json_ctx, 8, 0, 25, 24, 127, 0);
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=7bb3a8a556b6d72a33b8733ffb46165f3d9066c5
commit 7bb3a8a556b6d72a33b8733ffb46165f3d9066c5
Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date: Tue Mar 6 18:29:52 2018 +0530
benchtests: Reallocate buffers for every strncmp implementation
Don't reuse buffers for different strncmp implementations since the
earlier implementation will end up warming the cache for the later
one. Eventually there should be a more elegant way to do this.
* benchtests/bench-strncmp.c (do_test_limit): Reallocate buffers
for every implementation.
(do_test): Likewise.
diff --git a/benchtests/bench-strncmp.c b/benchtests/bench-strncmp.c
index 713a072..4354d70 100644
--- a/benchtests/bench-strncmp.c
+++ b/benchtests/bench-strncmp.c
@@ -139,8 +139,6 @@ do_test_limit (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len,
if (n == 0)
{
- s1 = (CHAR *) (buf1 + page_size);
- s2 = (CHAR *) (buf2 + page_size);
json_element_object_begin (json_ctx);
json_attr_uint (json_ctx, "strlen", (double) len);
json_attr_uint (json_ctx, "len", (double) n);
@@ -149,7 +147,12 @@ do_test_limit (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len,
json_array_begin (json_ctx, "timings");
FOR_EACH_IMPL (impl, 0)
- do_one_test (json_ctx, impl, s1, s2, n, 0);
+ {
+ realloc_bufs ();
+ s1 = (CHAR *) (buf1 + page_size);
+ s2 = (CHAR *) (buf2 + page_size);
+ do_one_test (json_ctx, impl, s1, s2, n, 0);
+ }
json_array_end (json_ctx);
json_element_object_end (json_ctx);
@@ -161,28 +164,6 @@ do_test_limit (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len,
align2 &= 15;
align_n = (page_size - n * CHARBYTES) & 15;
- s1 = (CHAR *) (buf1 + page_size - n * CHARBYTES);
- s2 = (CHAR *) (buf2 + page_size - n * CHARBYTES);
-
- if (align1 < align_n)
- s1 = (CHAR *) ((char *) s1 - (align_n - align1));
-
- if (align2 < align_n)
- s2 = (CHAR *) ((char *) s2 - (align_n - align2));
-
- for (i = 0; i < n; i++)
- s1[i] = s2[i] = 1 + 23 * i % max_char;
-
- if (len < n)
- {
- s1[len] = 0;
- s2[len] = 0;
- if (exp_result < 0)
- s2[len] = 32;
- else if (exp_result > 0)
- s1[len] = 64;
- }
-
json_element_object_begin (json_ctx);
json_attr_uint (json_ctx, "strlen", (double) len);
json_attr_uint (json_ctx, "len", (double) n);
@@ -191,7 +172,32 @@ do_test_limit (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len,
json_array_begin (json_ctx, "timings");
FOR_EACH_IMPL (impl, 0)
- do_one_test (json_ctx, impl, s1, s2, n, exp_result);
+ {
+ realloc_bufs ();
+ s1 = (CHAR *) (buf1 + page_size - n * CHARBYTES);
+ s2 = (CHAR *) (buf2 + page_size - n * CHARBYTES);
+
+ if (align1 < align_n)
+ s1 = (CHAR *) ((char *) s1 - (align_n - align1));
+
+ if (align2 < align_n)
+ s2 = (CHAR *) ((char *) s2 - (align_n - align2));
+
+ for (i = 0; i < n; i++)
+ s1[i] = s2[i] = 1 + 23 * i % max_char;
+
+ if (len < n)
+ {
+ s1[len] = 0;
+ s2[len] = 0;
+ if (exp_result < 0)
+ s2[len] = 32;
+ else if (exp_result > 0)
+ s1[len] = 64;
+ }
+
+ do_one_test (json_ctx, impl, s1, s2, n, exp_result);
+ }
json_array_end (json_ctx);
json_element_object_end (json_ctx);
@@ -215,23 +221,6 @@ do_test (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len, size_t
if (align2 + (n + 1) * CHARBYTES >= page_size)
return;
- s1 = (CHAR *) (buf1 + align1);
- s2 = (CHAR *) (buf2 + align2);
-
- for (i = 0; i < n; i++)
- s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char;
-
- s1[n] = 24 + exp_result;
- s2[n] = 23;
- s1[len] = 0;
- s2[len] = 0;
- if (exp_result < 0)
- s2[len] = 32;
- else if (exp_result > 0)
- s1[len] = 64;
- if (len >= n)
- s2[n - 1] -= exp_result;
-
json_element_object_begin (json_ctx);
json_attr_uint (json_ctx, "strlen", (double) len);
json_attr_uint (json_ctx, "len", (double) n);
@@ -240,7 +229,27 @@ do_test (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len, size_t
json_array_begin (json_ctx, "timings");
FOR_EACH_IMPL (impl, 0)
- do_one_test (json_ctx, impl, s1, s2, n, exp_result);
+ {
+ realloc_bufs ();
+ s1 = (CHAR *) (buf1 + align1);
+ s2 = (CHAR *) (buf2 + align2);
+
+ for (i = 0; i < n; i++)
+ s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char;
+
+ s1[n] = 24 + exp_result;
+ s2[n] = 23;
+ s1[len] = 0;
+ s2[len] = 0;
+ if (exp_result < 0)
+ s2[len] = 32;
+ else if (exp_result > 0)
+ s1[len] = 64;
+ if (len >= n)
+ s2[n - 1] -= exp_result;
+
+ do_one_test (json_ctx, impl, s1, s2, n, exp_result);
+ }
json_array_end (json_ctx);
json_element_object_end (json_ctx);
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=ad4e816e0673b80a35a12ba6892837022bf88972
commit ad4e816e0673b80a35a12ba6892837022bf88972
Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date: Tue Mar 6 18:29:34 2018 +0530
benchtests: Convert strncmp benchmark output to json
Make the output usable through the compare_strings.py script.
* benchtests/bench-strncmp.c: Convert output to json.
diff --git a/benchtests/bench-strncmp.c b/benchtests/bench-strncmp.c
index 0c3839a..713a072 100644
--- a/benchtests/bench-strncmp.c
+++ b/benchtests/bench-strncmp.c
@@ -23,6 +23,7 @@
# define TEST_NAME "strncmp"
#endif /* !WIDE */
#include "bench-string.h"
+#include "json-lib.h"
#ifdef WIDE
# include <wchar.h>
@@ -111,8 +112,8 @@ IMPL (STRNCMP, 1)
static void
-do_one_test (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t n,
- int exp_result)
+do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s1, const CHAR
+ *s2, size_t n, int exp_result)
{
size_t i, iters = INNER_LOOP_ITERS;
timing_t start, stop, cur;
@@ -126,12 +127,12 @@ do_one_test (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t n,
TIMING_DIFF (cur, start, stop);
- TIMING_PRINT_MEAN ((double) cur, (double) iters);
+ json_element_double (json_ctx, (double) cur / (double) iters);
}
static void
-do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
- int exp_result)
+do_test_limit (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len,
+ size_t n, int max_char, int exp_result)
{
size_t i, align_n;
CHAR *s1, *s2;
@@ -140,12 +141,18 @@ do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
{
s1 = (CHAR *) (buf1 + page_size);
s2 = (CHAR *) (buf2 + page_size);
- printf ("Length %4zd/%4zd:", len, n);
+ json_element_object_begin (json_ctx);
+ json_attr_uint (json_ctx, "strlen", (double) len);
+ json_attr_uint (json_ctx, "len", (double) n);
+ json_attr_uint (json_ctx, "align1", (double) 0);
+ json_attr_uint (json_ctx, "align2", (double) 0);
+ json_array_begin (json_ctx, "timings");
FOR_EACH_IMPL (impl, 0)
- do_one_test (impl, s1, s2, n, 0);
+ do_one_test (json_ctx, impl, s1, s2, n, 0);
- putchar ('\n');
+ json_array_end (json_ctx);
+ json_element_object_end (json_ctx);
return;
}
@@ -176,17 +183,23 @@ do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
s1[len] = 64;
}
- printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2);
+ json_element_object_begin (json_ctx);
+ json_attr_uint (json_ctx, "strlen", (double) len);
+ json_attr_uint (json_ctx, "len", (double) n);
+ json_attr_uint (json_ctx, "align1", (double) align1);
+ json_attr_uint (json_ctx, "align2", (double) align2);
+ json_array_begin (json_ctx, "timings");
FOR_EACH_IMPL (impl, 0)
- do_one_test (impl, s1, s2, n, exp_result);
+ do_one_test (json_ctx, impl, s1, s2, n, exp_result);
- putchar ('\n');
+ json_array_end (json_ctx);
+ json_element_object_end (json_ctx);
}
static void
-do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char,
- int exp_result)
+do_test (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len, size_t
+ n, int max_char, int exp_result)
{
size_t i;
CHAR *s1, *s2;
@@ -219,80 +232,103 @@ do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char,
if (len >= n)
s2[n - 1] -= exp_result;
- printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2);
+ json_element_object_begin (json_ctx);
+ json_attr_uint (json_ctx, "strlen", (double) len);
+ json_attr_uint (json_ctx, "len", (double) n);
+ json_attr_uint (json_ctx, "align1", (double) align1);
+ json_attr_uint (json_ctx, "align2", (double) align2);
+ json_array_begin (json_ctx, "timings");
FOR_EACH_IMPL (impl, 0)
- do_one_test (impl, s1, s2, n, exp_result);
+ do_one_test (json_ctx, impl, s1, s2, n, exp_result);
- putchar ('\n');
+ json_array_end (json_ctx);
+ json_element_object_end (json_ctx);
}
int
test_main (void)
{
+ json_ctx_t json_ctx;
size_t i;
test_init ();
- printf ("%23s", "");
+ json_init (&json_ctx, 0, stdout);
+
+ json_document_begin (&json_ctx);
+ json_attr_string (&json_ctx, "timing_type", TIMING_TYPE);
+
+ json_attr_object_begin (&json_ctx, "functions");
+ json_attr_object_begin (&json_ctx, TEST_NAME);
+ json_attr_string (&json_ctx, "bench-variant", "default");
+
+ json_array_begin (&json_ctx, "ifuncs");
FOR_EACH_IMPL (impl, 0)
- printf ("\t%s", impl->name);
- putchar ('\n');
+ json_element_string (&json_ctx, impl->name);
+ json_array_end (&json_ctx);
+
+ json_array_begin (&json_ctx, "results");
for (i =0; i < 16; ++i)
{
- do_test (0, 0, 8, i, 127, 0);
- do_test (0, 0, 8, i, 127, -1);
- do_test (0, 0, 8, i, 127, 1);
- do_test (i, i, 8, i, 127, 0);
- do_test (i, i, 8, i, 127, 1);
- do_test (i, i, 8, i, 127, -1);
- do_test (i, 2 * i, 8, i, 127, 0);
- do_test (2 * i, i, 8, i, 127, 1);
- do_test (i, 3 * i, 8, i, 127, -1);
- do_test (0, 0, 8, i, 255, 0);
- do_test (0, 0, 8, i, 255, -1);
- do_test (0, 0, 8, i, 255, 1);
- do_test (i, i, 8, i, 255, 0);
- do_test (i, i, 8, i, 255, 1);
- do_test (i, i, 8, i, 255, -1);
- do_test (i, 2 * i, 8, i, 255, 0);
- do_test (2 * i, i, 8, i, 255, 1);
- do_test (i, 3 * i, 8, i, 255, -1);
+ do_test (&json_ctx, 0, 0, 8, i, 127, 0);
+ do_test (&json_ctx, 0, 0, 8, i, 127, -1);
+ do_test (&json_ctx, 0, 0, 8, i, 127, 1);
+ do_test (&json_ctx, i, i, 8, i, 127, 0);
+ do_test (&json_ctx, i, i, 8, i, 127, 1);
+ do_test (&json_ctx, i, i, 8, i, 127, -1);
+ do_test (&json_ctx, i, 2 * i, 8, i, 127, 0);
+ do_test (&json_ctx, 2 * i, i, 8, i, 127, 1);
+ do_test (&json_ctx, i, 3 * i, 8, i, 127, -1);
+ do_test (&json_ctx, 0, 0, 8, i, 255, 0);
+ do_test (&json_ctx, 0, 0, 8, i, 255, -1);
+ do_test (&json_ctx, 0, 0, 8, i, 255, 1);
+ do_test (&json_ctx, i, i, 8, i, 255, 0);
+ do_test (&json_ctx, i, i, 8, i, 255, 1);
+ do_test (&json_ctx, i, i, 8, i, 255, -1);
+ do_test (&json_ctx, i, 2 * i, 8, i, 255, 0);
+ do_test (&json_ctx, 2 * i, i, 8, i, 255, 1);
+ do_test (&json_ctx, i, 3 * i, 8, i, 255, -1);
}
for (i = 1; i < 8; ++i)
{
- do_test (0, 0, 8 << i, 16 << i, 127, 0);
- do_test (0, 0, 8 << i, 16 << i, 127, 1);
- do_test (0, 0, 8 << i, 16 << i, 127, -1);
- do_test (0, 0, 8 << i, 16 << i, 255, 0);
- do_test (0, 0, 8 << i, 16 << i, 255, 1);
- do_test (0, 0, 8 << i, 16 << i, 255, -1);
- do_test (8 - i, 2 * i, 8 << i, 16 << i, 127, 0);
- do_test (8 - i, 2 * i, 8 << i, 16 << i, 127, 1);
- do_test (2 * i, i, 8 << i, 16 << i, 255, 0);
- do_test (2 * i, i, 8 << i, 16 << i, 255, 1);
+ do_test (&json_ctx, 0, 0, 8 << i, 16 << i, 127, 0);
+ do_test (&json_ctx, 0, 0, 8 << i, 16 << i, 127, 1);
+ do_test (&json_ctx, 0, 0, 8 << i, 16 << i, 127, -1);
+ do_test (&json_ctx, 0, 0, 8 << i, 16 << i, 255, 0);
+ do_test (&json_ctx, 0, 0, 8 << i, 16 << i, 255, 1);
+ do_test (&json_ctx, 0, 0, 8 << i, 16 << i, 255, -1);
+ do_test (&json_ctx, 8 - i, 2 * i, 8 << i, 16 << i, 127, 0);
+ do_test (&json_ctx, 8 - i, 2 * i, 8 << i, 16 << i, 127, 1);
+ do_test (&json_ctx, 2 * i, i, 8 << i, 16 << i, 255, 0);
+ do_test (&json_ctx, 2 * i, i, 8 << i, 16 << i, 255, 1);
}
- do_test_limit (0, 0, 0, 0, 127, 0);
- do_test_limit (4, 0, 21, 20, 127, 0);
- do_test_limit (0, 4, 21, 20, 127, 0);
- do_test_limit (8, 0, 25, 24, 127, 0);
- do_test_limit (0, 8, 25, 24, 127, 0);
+ do_test_limit (&json_ctx, 0, 0, 0, 0, 127, 0);
+ do_test_limit (&json_ctx, 4, 0, 21, 20, 127, 0);
+ do_test_limit (&json_ctx, 0, 4, 21, 20, 127, 0);
+ do_test_limit (&json_ctx, 8, 0, 25, 24, 127, 0);
+ do_test_limit (&json_ctx, 0, 8, 25, 24, 127, 0);
for (i = 0; i < 8; ++i)
{
- do_test_limit (0, 0, 17 - i, 16 - i, 127, 0);
- do_test_limit (0, 0, 17 - i, 16 - i, 255, 0);
- do_test_limit (0, 0, 15 - i, 16 - i, 127, 0);
- do_test_limit (0, 0, 15 - i, 16 - i, 127, 1);
- do_test_limit (0, 0, 15 - i, 16 - i, 127, -1);
- do_test_limit (0, 0, 15 - i, 16 - i, 255, 0);
- do_test_limit (0, 0, 15 - i, 16 - i, 255, 1);
- do_test_limit (0, 0, 15 - i, 16 - i, 255, -1);
+ do_test_limit (&json_ctx, 0, 0, 17 - i, 16 - i, 127, 0);
+ do_test_limit (&json_ctx, 0, 0, 17 - i, 16 - i, 255, 0);
+ do_test_limit (&json_ctx, 0, 0, 15 - i, 16 - i, 127, 0);
+ do_test_limit (&json_ctx, 0, 0, 15 - i, 16 - i, 127, 1);
+ do_test_limit (&json_ctx, 0, 0, 15 - i, 16 - i, 127, -1);
+ do_test_limit (&json_ctx, 0, 0, 15 - i, 16 - i, 255, 0);
+ do_test_limit (&json_ctx, 0, 0, 15 - i, 16 - i, 255, 1);
+ do_test_limit (&json_ctx, 0, 0, 15 - i, 16 - i, 255, -1);
}
+ json_array_end (&json_ctx);
+ json_attr_object_end (&json_ctx);
+ json_attr_object_end (&json_ctx);
+ json_document_end (&json_ctx);
+
return ret;
}
-----------------------------------------------------------------------
Summary of changes:
benchtests/bench-strncmp.c | 235 ++++++++++++++++++++++++--------------------
1 files changed, 128 insertions(+), 107 deletions(-)
hooks/post-receive
--
GNU C Library master sources