/* 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"
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)
{
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)
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);
/* 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);