]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - benchtests/bench-strlen.c
po: Incorporate translations (sr)
[thirdparty/glibc.git] / benchtests / bench-strlen.c
index 28ae31d6f46accfab29c524811eb5b82d4a1b200..583603c7e8e6bb051fe3547c31bfeff0afab9d09 100644 (file)
@@ -1,5 +1,5 @@
 /* Measure STRLEN functions.
-   Copyright (C) 2013-2018 Free Software Foundation, Inc.
+   Copyright (C) 2013-2024 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
    You should have received a copy of the GNU Lesser General Public
    License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
+   <https://www.gnu.org/licenses/>.  */
 
 #define TEST_MAIN
 #ifndef WIDE
 # define TEST_NAME "strlen"
 #else
 # define TEST_NAME "wcslen"
+# define generic_strlen generic_wcslen
+# define memchr_strlen wcschr_wcslen
 #endif
 #include "bench-string.h"
 
@@ -34,15 +36,6 @@ size_t memchr_strlen (const CHAR *);
 IMPL (memchr_strlen, 0)
 IMPL (generic_strlen, 0)
 
-#ifndef WIDE
-size_t
-builtin_strlen (const CHAR *p)
-{
-  return __builtin_strlen (p);
-}
-IMPL (builtin_strlen, 0)
-#endif
-
 size_t
 memchr_strlen (const CHAR *p)
 {
@@ -55,7 +48,7 @@ IMPL (STRLEN, 1)
 static void
 do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, size_t exp_len)
 {
-  size_t len = CALL (impl, s), i, iters = INNER_LOOP_ITERS;
+  size_t len = CALL (impl, s), i, iters = INNER_LOOP_ITERS_LARGE;
   timing_t start, stop, cur;
 
   if (len != exp_len)
@@ -84,7 +77,7 @@ do_test (json_ctx_t *json_ctx, size_t align, size_t len)
   size_t i;
 
   align &= 63;
-  if (align + sizeof(CHAR) * len >= page_size)
+  if (align + sizeof (CHAR) * len >= page_size)
     return;
 
   json_element_object_begin (json_ctx);
@@ -135,17 +128,42 @@ test_main (void)
   /* Checking with only 4 * N alignments for wcslen, other alignments are wrong for wchar_t type arrays*/
 
   for (i = 1; i < 8; ++i)
-  {
-    do_test (&json_ctx, sizeof(CHAR) * i, i);
-    do_test (&json_ctx, 0, i);
-  }
+    {
+      do_test (&json_ctx, sizeof (CHAR) * i, i);
+      do_test (&json_ctx, 0, i);
+    }
 
   for (i = 2; i <= 12; ++i)
     {
       do_test (&json_ctx, 0, 1 << i);
-      do_test (&json_ctx, sizeof(CHAR) * 7, 1 << i);
-      do_test (&json_ctx, sizeof(CHAR) * i, 1 << i);
-      do_test (&json_ctx, sizeof(CHAR) * i, (size_t)((1 << i) / 1.5));
+      do_test (&json_ctx, sizeof (CHAR) * 7, 1 << i);
+      do_test (&json_ctx, sizeof (CHAR) * i, 1 << i);
+      do_test (&json_ctx, sizeof (CHAR) * i, (size_t)((1 << i) / 1.5));
+    }
+
+  for (i = 0; i < 512; i += 32)
+    {
+      do_test (&json_ctx, 0, i / sizeof (CHAR));
+    }
+
+  for (i = 512; i < 1024; i += 64)
+    {
+      do_test (&json_ctx, 0, i / sizeof (CHAR));
+    }
+
+  for (i = 1024; i < 2048; i += 128)
+    {
+      do_test (&json_ctx, 0, i / sizeof (CHAR));
+    }
+
+  for (i = 2048; i < 4096; i += 256)
+    {
+      do_test (&json_ctx, 0, i / sizeof (CHAR));
+    }
+
+  for (i = 4096; i < 8192; i += 512)
+    {
+      do_test (&json_ctx, 0, i / sizeof (CHAR));
     }
 
   json_array_end (&json_ctx);