From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oa1-x2c.google.com (mail-oa1-x2c.google.com [IPv6:2001:4860:4864:20::2c]) by sourceware.org (Postfix) with ESMTPS id 9378E3858431 for ; Mon, 18 Mar 2024 19:30:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9378E3858431 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9378E3858431 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:4860:4864:20::2c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1710790213; cv=none; b=Y/8pON0YcmLoWguo0TA6N+cxZnbPN0tmIWJvC/Ew9Ic7x91UDZTh9yQVSG8pzaKPaqi9GAb6r0abdtVxVGZqWJeVj53k6bW5ADIGg2yFST+B6WNMG/kzCpb27bC3GiCDGX/UfCKvZjsBH4eXUjWzS+oZOmGlLnLZQNmHbj+CX40= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1710790213; c=relaxed/simple; bh=0AyV8/CjgDdUAaX/FFqQhmbGCr1Ozi+rsdCVUjNqw6g=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=gpsPitA3j0cgyYIfIIOs3/Djur6uckDsVJMYQTxebl9D+VCncx8fav5h75NBpXOPBDtWfzBd40dS6QlOgbDDrPxownpYpRMJjd/yh1FjFzbZFT7QaebHpJ4zyKh8Pbuxa4Pvh1OLakVunCaQ/eQb0ALh9XIsSFk+UTCBeBolvcY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-oa1-x2c.google.com with SMTP id 586e51a60fabf-222c0572eedso761411fac.3 for ; Mon, 18 Mar 2024 12:30:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710790209; x=1711395009; darn=sourceware.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=8wONmunMvBBfsRimwE7FLiB0qzyoPzS+nsXFrks+8Ts=; b=eUvRBMkY7sdMm/iYgXtQEsceLBOIIRQjOraUBBzLYtB7Rje4iHMdZrtoZvzjd9xMCz VLdo03hYvVY3sFvqEWHGQ5+HzJTGOhcH0mo4lSLfyG12FuwmkieUudH9xyrO2I51LUL2 lZhbH112dt9Re8rsFcYwyzXWoEYZMaeMzG4vapSejqspnHqIo9Lq2O/SemLOSShgW1K1 ztxTJRZpA6GTS02f9ksGyuLQBJJqZgh6v6w3pH2MQ8/myAcAEYjXfE5UlQPD+WPxUvQ7 TGQIp03EbvJRtmGU49fcbUgzAPHOe8cJMOs+SwdpRMldFYpTwHU0IHRuXZxQcLQTda0C tizQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710790209; x=1711395009; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8wONmunMvBBfsRimwE7FLiB0qzyoPzS+nsXFrks+8Ts=; b=oyULZ/76tnf7iUnmJC9r1iqHBzKs3hOhBGxtJfPmcD32jehO+2AvF9OymCjcQTgpeI NmDo/0yMPuzVpqTowx+1msri2vmt9FfRCM8iP0bYmq7Mi2DTxHH8kZMkrodvPM3+Yljo lgVBak38t/kUFDV49GamsiY6pBJH36vqbGUwujTi+sfV5de0G1eG8jPhc8nXGXxxMWGW o8awlTUob/tLT+lUDhG3EudV38+l0PYtAeplIEIMo8QGn1dcY8QHobrp+vV0i5wGTEO0 jnhhnt+0b2qMTk/vp6oUTC4iYUBjPvm4QGPyi6AqSObi9Q0lQ1/blpTsjvajzqMBMKEh I8uA== X-Gm-Message-State: AOJu0YxY/CPrrutnngJQW2rRIY1AYezHimxpOWrUEKMiW9/qDDHfiffo c9Qn/+jKIMYhAAROQ6uqHLi6l/0cdCpE1qNgCibZX3/wp9mF0/n6Kvuut7B4jHOYWUXYcqXxntN YNwd+Xjcc8/KOjhP7dkPf9luy5U7BUjLm X-Google-Smtp-Source: AGHT+IHYyBwFTf8CRyiA9BGsCq79P5gFdyRIBhmS0w5Ee8e5rgWPb+rtUzaxDFAJM0AZ6cG0rcwdxWkkkA2sVTopl74= X-Received: by 2002:a05:6870:5691:b0:221:da55:17c0 with SMTP id p17-20020a056870569100b00221da5517c0mr637298oao.32.1710790208557; Mon, 18 Mar 2024 12:30:08 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Noah Goldstein Date: Mon, 18 Mar 2024 14:29:57 -0500 Message-ID: Subject: Re: [PATCH] Benchtests: Remove broken walk benchmarks To: Wilco Dijkstra Cc: GNU C Library Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-9.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Mon, Mar 18, 2024 at 10:04=E2=80=AFAM Wilco Dijkstra wrote: > > > The walk benchmarks don't measure anything useful - memory is not initial= ized > properly so doing a single walk in 32MB just measures reading the 4KB zer= o > page for reads and clear_page overhead for writes. The memset variants d= on't > even manage to do a walk in the 32MB region due to using incorrect pointe= r > increments... Neither is it clear why it is walking backwards since this > won't confuse modern prefetchers. If you fix the benchmark and print the > bandwidth, the results are identical for all sizes larger than ~1KB since= it > is just testing memory bandwidth of a single 32MB block. This case is al= ready > tested by the large benchmark, so overall it doesn't seem useful to keep = these. > > OK for commit? > > --- > > diff --git a/benchtests/Makefile b/benchtests/Makefile > index 05b8751c55e7eb862efef9d99421fbbf2f4febb2..76fa33535ef1b1cc4fa4f32ed= 4299ad7fbbcbf11 100644 > --- a/benchtests/Makefile > +++ b/benchtests/Makefile > @@ -139,7 +139,6 @@ bench-string :=3D \ > string-benchset :=3D \ > bzero \ > bzero-large \ > - bzero-walk \ > memccpy \ > memchr \ > memcmp \ > @@ -147,19 +146,15 @@ string-benchset :=3D \ > memcpy \ > memcpy-large \ > memcpy-random \ > - memcpy-walk \ > memmem \ > memmove \ > memmove-large \ > - memmove-walk \ > mempcpy \ > memrchr \ > memset \ > memset-large \ > - memset-walk \ > memset-zero \ > memset-zero-large \ > - memset-zero-walk \ > rawmemchr \ > stpcpy \ > stpcpy_chk \ > diff --git a/benchtests/bench-bzero-walk.c b/benchtests/bench-bzero-walk.= c > deleted file mode 100644 > index 48df0d77c34f82435d2ffb963067dc8d9a81ff6f..0000000000000000000000000= 000000000000000 > --- a/benchtests/bench-bzero-walk.c > +++ /dev/null > @@ -1,143 +0,0 @@ > -/* Measure memset function throughput with large data sizes. > - Copyright (C) 2017-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 > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library 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 > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - . */ > - > -#define TEST_MAIN > -#ifdef DO_MEMSET > -# define TEST_NAME "memset" > -#else > -# define TEST_NAME "bzero" > -#endif > -#define START_SIZE 128 > -#define MIN_PAGE_SIZE (getpagesize () + 32 * 1024 * 1024) > -#define TIMEOUT (20 * 60) > -#include "bench-string.h" > - > -#include "json-lib.h" > - > -#ifdef DO_MEMSET > -void *generic_memset (void *, int, size_t); > - > -typedef void *(*proto_t) (void *, int, size_t); > - > -IMPL (memset, 1) > -IMPL (generic_memset, 0) > - > -#else > -static void > -memset_zero (void * s, size_t len) > -{ > - memset (s, '\0', len); > -} > - > -typedef void (*proto_t) (void *, size_t); > - > -IMPL (bzero, 1) > -IMPL (memset_zero, 0) > -#endif > - > -static void > -do_one_test (json_ctx_t *json_ctx, impl_t *impl, CHAR *s, CHAR *s_end, > - size_t n) > -{ > - size_t i, iters =3D MIN_PAGE_SIZE / n; > - timing_t start, stop, cur; > - > - TIMING_NOW (start); > - for (i =3D 0; i < iters && s <=3D s_end; s_end -=3D n, i++) > -#ifdef DO_MEMSET > - CALL (impl, s, 0, n); > -#else > - CALL (impl, s, n); > -#endif > - TIMING_NOW (stop); > - > - TIMING_DIFF (cur, start, stop); > - > - /* Get time taken per function call. */ > - json_element_double (json_ctx, (double) cur / i); > -} > - > -static void > -do_test (json_ctx_t *json_ctx, size_t len) > -{ > - json_element_object_begin (json_ctx); > - json_attr_uint (json_ctx, "length", len); > - json_array_begin (json_ctx, "timings"); > - > - FOR_EACH_IMPL (impl, 0) > - { > - do_one_test (json_ctx, impl, (CHAR *) buf1, > - (CHAR *) buf1 + MIN_PAGE_SIZE - len, len); > - alloc_bufs (); > - } > - > - 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 (); > - > - 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", "walk"); > - > - json_array_begin (&json_ctx, "ifuncs"); > - FOR_EACH_IMPL (impl, 0) > - json_element_string (&json_ctx, impl->name); > - json_array_end (&json_ctx); > - > - json_array_begin (&json_ctx, "results"); > - for (i =3D 1; i <=3D 64; i++) > - do_test (&json_ctx, i); > - > - for (i =3D START_SIZE; i <=3D MIN_PAGE_SIZE; i <<=3D 1) > - { > - do_test (&json_ctx, i); > - do_test (&json_ctx, i + 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; > -} > - > -#include > - > -#ifdef DO_MEMSET > -# define libc_hidden_builtin_def(X) > -# define libc_hidden_def(X) > -# define libc_hidden_weak(X) > -# define weak_alias(X,Y) > -# undef MEMSET > -# define MEMSET generic_memset > -# include > -#endif > diff --git a/benchtests/bench-memcpy-walk.c b/benchtests/bench-memcpy-wal= k.c > deleted file mode 100644 > index 661a40ccd1fe6a669f717319b676f60b39cb56af..0000000000000000000000000= 000000000000000 > --- a/benchtests/bench-memcpy-walk.c > +++ /dev/null > @@ -1,131 +0,0 @@ > -/* Measure memcpy function combined throughput for different alignments. > - Copyright (C) 2017-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 > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library 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 > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - . */ > - > -/* This microbenchmark measures the throughput of memcpy for various siz= es from > - 1 byte to 32MiB, doubling every iteration and then misaligning by 0-1= 5 > - bytes. The copies are done from source to destination and then back = and the > - source walks forward across the array and the destination walks backw= ard by > - one byte each, thus measuring misaligned accesses as well. The idea = is to > - avoid caching effects by copying a different string and far enough fr= om each > - other, walking in different directions so that we can measure prefetc= her > - efficiency (software or hardware) more closely than with a loop copyi= ng the > - same data over and over, which eventually only gives us L1 cache > - performance. */ > - > -#ifndef MEMCPY_RESULT > -# define MEMCPY_RESULT(dst, len) dst > -# define START_SIZE 128 > -# define MIN_PAGE_SIZE (getpagesize () + 32 * 1024 * 1024) > -# define TEST_MAIN > -# define TEST_NAME "memcpy" > -# define TIMEOUT (20 * 60) > -# include "bench-string.h" > - > -IMPL (memcpy, 1) > -#endif > - > -#include "json-lib.h" > - > -typedef char *(*proto_t) (char *, const char *, size_t); > - > -static void > -do_one_test (json_ctx_t *json_ctx, impl_t *impl, char *dst, char *src, > - size_t len) > -{ > - size_t i =3D 0; > - timing_t start, stop, cur; > - > - char *dst_end =3D dst + MIN_PAGE_SIZE - len; > - char *src_end =3D src + MIN_PAGE_SIZE - len; > - > - TIMING_NOW (start); > - /* Copy the entire buffer backwards, LEN at a time. */ > - for (; src_end >=3D src && dst_end >=3D dst; src_end -=3D len, dst_end= -=3D len, i++) > - CALL (impl, src_end, dst_end, len); > - TIMING_NOW (stop); > - > - TIMING_DIFF (cur, start, stop); > - > - /* Get time taken per function call. */ > - json_element_double (json_ctx, (double) cur / i); > -} > - > -static void > -do_test (json_ctx_t *json_ctx, size_t len, int both_ways) > -{ > - > - char *s1, *s2; > - size_t repeats; > - s1 =3D (char *) (buf1); > - s2 =3D (char *) (buf2); > - > - for (repeats =3D both_ways ? 2 : 1; repeats; --repeats) > - { > - json_element_object_begin (json_ctx); > - json_attr_uint (json_ctx, "length", (double) len); > - json_attr_uint (json_ctx, "dst > src", (double) (s2 > s1)); > - json_array_begin (json_ctx, "timings"); > - > - FOR_EACH_IMPL (impl, 0) > - do_one_test (json_ctx, impl, s2, s1, len); > - > - json_array_end (json_ctx); > - json_element_object_end (json_ctx); > - > - s1 =3D (char *) (buf2); > - s2 =3D (char *) (buf1); > - } > -} > - > -int > -test_main (void) > -{ > - json_ctx_t json_ctx; > - > - test_init (); > - > - 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, "memcpy"); > - json_attr_string (&json_ctx, "bench-variant", "walk"); > - > - json_array_begin (&json_ctx, "ifuncs"); > - FOR_EACH_IMPL (impl, 0) > - json_element_string (&json_ctx, impl->name); > - json_array_end (&json_ctx); > - > - json_array_begin (&json_ctx, "results"); > - for (size_t i =3D START_SIZE; i <=3D MIN_PAGE_SIZE; i <<=3D 1) > - { > - do_test (&json_ctx, i, 1); > - do_test (&json_ctx, i + 1, 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; > -} > - > -#include > diff --git a/benchtests/bench-memmove-walk.c b/benchtests/bench-memmove-w= alk.c > deleted file mode 100644 > index 94b394eb8b22c1d82490002061a4eae469e29dbd..0000000000000000000000000= 000000000000000 > --- a/benchtests/bench-memmove-walk.c > +++ /dev/null > @@ -1,160 +0,0 @@ > -/* Measure memmove function combined throughput for different alignments= . > - Copyright (C) 2017-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 > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library 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 > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - . */ > - > -/* This microbenchmark measures the throughput of memmove for various si= zes from > - 1 byte to 32MiB, doubling every iteration and then misaligning by 0-1= 5 > - bytes. The copies are done from source to destination and then back = and the > - source walks forward across the array and the destination walks backw= ard by > - one byte each, thus measuring misaligned accesses as well. The idea = is to > - avoid caching effects by copying a different string and far enough fr= om each > - other, walking in different directions so that we can measure prefetc= her > - efficiency (software or hardware) more closely than with a loop copyi= ng the > - same data over and over, which eventually only gives us L1 cache > - performance. */ > - > -#ifndef MEMMOVE_RESULT > -# define MEMMOVE_RESULT(dst, len) dst > -# define START_SIZE 128 > -# define MIN_PAGE_SIZE (getpagesize () + 32 * 1024 * 1024) > -# define TEST_MAIN > -# define TEST_NAME "memmove" > -# define TIMEOUT (20 * 60) > -# include "bench-string.h" > - > -#define NO_OVERLAP 0 > -#define PARTIAL_OVERLAP 1 > -#define COMPLETE_OVERLAP 2 > - > -IMPL (memmove, 1) > -#endif > - > -#include "json-lib.h" > - > -typedef char *(*proto_t) (char *, const char *, size_t); > - > -static void > -do_one_test (json_ctx_t *json_ctx, impl_t *impl, char *dst, char *src, > - size_t len) > -{ > - size_t i =3D 0; > - timing_t start, stop, cur; > - > - char *dst_end =3D dst + MIN_PAGE_SIZE - len; > - char *src_end =3D src + MIN_PAGE_SIZE - len; > - > - TIMING_NOW (start); > - /* Copy the entire buffer backwards, LEN at a time. */ > - for (; src_end >=3D src && dst <=3D dst_end; dst +=3D len, src_end -= =3D len, i++) > - CALL (impl, dst, src_end, len); > - TIMING_NOW (stop); > - > - TIMING_DIFF (cur, start, stop); > - > - /* Get time taken per function call. */ > - json_element_double (json_ctx, (double) cur / i); > -} > - > -static void > -do_test (json_ctx_t *json_ctx, size_t len, int overlap, int both_ways) > -{ > - char *s1, *s2, *tmp; > - size_t repeats; > - > - s1 =3D (char *) (buf1); > - s2 =3D (char *) (buf2); > - if (overlap !=3D NO_OVERLAP) > - s2 =3D s1; > - if (overlap =3D=3D PARTIAL_OVERLAP) > - s2 +=3D len / 2; > - > - for (repeats =3D both_ways ? 2 : 1; repeats; --repeats) > - { > - json_element_object_begin (json_ctx); > - json_attr_uint (json_ctx, "length", (double) len); > - json_attr_string(json_ctx, "overlap", > - overlap =3D=3D NO_OVERLAP ? "none" > - : overlap =3D=3D PARTIAL_OVERLAP ? "partial" > - : "complete"); > - json_attr_uint (json_ctx, "dst > src", (double) (s2 > s1)); > - json_array_begin (json_ctx, "timings"); > - > - > - FOR_EACH_IMPL (impl, 0) > - do_one_test (json_ctx, impl, (char *) buf2, (char *) buf1, len); > - > - json_array_end (json_ctx); > - json_element_object_end (json_ctx); > - > - tmp =3D s1; > - s1 =3D s2; > - s2 =3D tmp; > - } > -} > - > -int > -test_main (void) > -{ > - json_ctx_t json_ctx; > - > - test_init (); > - > - 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, "memmove"); > - json_attr_string (&json_ctx, "bench-variant", "walk"); > - > - json_array_begin (&json_ctx, "ifuncs"); > - FOR_EACH_IMPL (impl, 0) > - json_element_string (&json_ctx, impl->name); > - json_array_end (&json_ctx); > - > - json_array_begin (&json_ctx, "results"); > - /* Non-overlapping buffers. */ > - for (size_t i =3D START_SIZE; i <=3D MIN_PAGE_SIZE; i <<=3D 1) > - { > - do_test (&json_ctx, i, NO_OVERLAP, 1); > - do_test (&json_ctx, i + 1, NO_OVERLAP, 1); > - } > - > - /* Partially-overlapping buffers. */ > - for (size_t i =3D START_SIZE; i <=3D MIN_PAGE_SIZE / 2; i <<=3D 1) > - { > - do_test (&json_ctx, i, PARTIAL_OVERLAP, 1); > - do_test (&json_ctx, i + 1, PARTIAL_OVERLAP, 1); > - } > - > - /* Complete-overlapping buffers. */ > - for (size_t i =3D START_SIZE; i <=3D MIN_PAGE_SIZE; i <<=3D 1) > - { > - do_test (&json_ctx, i, COMPLETE_OVERLAP, 0); > - do_test (&json_ctx, i + 1, COMPLETE_OVERLAP, 0); > - } > - > - json_array_end (&json_ctx); > - json_attr_object_end (&json_ctx); > - json_attr_object_end (&json_ctx); > - json_document_end (&json_ctx); > - > - return ret; > -} > - > -#include > diff --git a/benchtests/bench-memset-walk.c b/benchtests/bench-memset-wal= k.c > deleted file mode 100644 > index 7be904a4507db60b5fc46dee03f5a681da960de5..0000000000000000000000000= 000000000000000 > --- a/benchtests/bench-memset-walk.c > +++ /dev/null > @@ -1,122 +0,0 @@ > -/* Measure memset function throughput with large data sizes. > - Copyright (C) 2017-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 > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library 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 > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - . */ > - > -#define TEST_MAIN > -#define TEST_NAME "memset" > -#define START_SIZE 128 > -#define MIN_PAGE_SIZE (getpagesize () + 32 * 1024 * 1024) > -#define TIMEOUT (20 * 60) > -#include "bench-string.h" > - > -#include "json-lib.h" > - > -void *generic_memset (void *, int, size_t); > -typedef void *(*proto_t) (void *, int, size_t); > - > -IMPL (MEMSET, 1) > -IMPL (generic_memset, 0) > - > -static void > -do_one_test (json_ctx_t *json_ctx, impl_t *impl, CHAR *s, CHAR *s_end, > - int c __attribute ((unused)), size_t n) > -{ > - size_t i, iters =3D MIN_PAGE_SIZE / n; > - timing_t start, stop, cur; > - > - TIMING_NOW (start); > - for (i =3D 0; i < iters && s <=3D s_end; s_end -=3D n, i++) > - CALL (impl, s, c, n); > - TIMING_NOW (stop); > - > - TIMING_DIFF (cur, start, stop); > - > - /* Get time taken per function call. */ > - json_element_double (json_ctx, (double) cur / i); > -} > - > -static void > -do_test (json_ctx_t *json_ctx, int c, size_t len) > -{ > - json_element_object_begin (json_ctx); > - json_attr_uint (json_ctx, "length", len); > - json_attr_uint (json_ctx, "char", c); > - json_array_begin (json_ctx, "timings"); > - > - FOR_EACH_IMPL (impl, 0) > - { > - do_one_test (json_ctx, impl, (CHAR *) buf1, > - (CHAR *) buf1 + MIN_PAGE_SIZE - len, c, len); > - alloc_bufs (); > - } > - > - 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 (); > - > - 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", "walk"); > - > - json_array_begin (&json_ctx, "ifuncs"); > - FOR_EACH_IMPL (impl, 0) > - json_element_string (&json_ctx, impl->name); > - json_array_end (&json_ctx); > - > - json_array_begin (&json_ctx, "results"); > - for (i =3D START_SIZE; i <=3D MIN_PAGE_SIZE; i <<=3D 1) > - { > - do_test (&json_ctx, 65, i); > - do_test (&json_ctx, 65, i + 1); > - } > - > - for (i =3D START_SIZE; i <=3D MIN_PAGE_SIZE; i <<=3D 1) > - { > - do_test (&json_ctx, 0, i); > - do_test (&json_ctx, 0, i + 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; > -} > - > -#include > - > -#define libc_hidden_builtin_def(X) > -#define libc_hidden_def(X) > -#define libc_hidden_weak(X) > -#define weak_alias(X,Y) > -#undef MEMSET > -#define MEMSET generic_memset > -#include > diff --git a/benchtests/bench-memset-zero-walk.c b/benchtests/bench-memse= t-zero-walk.c > deleted file mode 100644 > index 200a17f128f08cf18cddb2b31c331dc9cad3899c..0000000000000000000000000= 000000000000000 > --- a/benchtests/bench-memset-zero-walk.c > +++ /dev/null > @@ -1,20 +0,0 @@ > -/* Measure memset functions for zeroing throughput with large data sizes= . > - Copyright (C) 2022-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 > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library 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 > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - . */ > - > -#define DO_MEMSET 1 > -#include "bench-bzero-walk.c" > +1