This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]