From patchwork Fri Dec 21 14:56:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 30790 Received: (qmail 115343 invoked by alias); 21 Dec 2018 14:56:14 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 115332 invoked by uid 89); 21 Dec 2018 14:56:13 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=beat X-HELO: EUR04-HE1-obe.outbound.protection.outlook.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GPY3fyud4eb2v4if3KZNXkunN1OO8TzzIMyTMzFnp7U=; b=ErX7sIdhsyx4xO+X5oNkXmvsP9EQCsGKsrxY6teYZApltOKS05u/NdVIx5bGZ6iH04IvXP1eTNbtK76QfVpccEGbyaX5n5JEc/wNPNCKMtk02pWvLVAw4HWAg+GFyUNLpHydKVYMbqkjC7QfxdwmJ4eaLjXKXa57Hr4vCOlW2eU= From: Wilco Dijkstra To: 'GNU C Library' CC: nd Subject: [PATCH] Improve bench-strlen Date: Fri, 21 Dec 2018 14:56:07 +0000 Message-ID: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Wilco.Dijkstra@arm.com; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) MIME-Version: 1.0 The current bench-strlen compares against a slow byte-oriented strlen which is not useful given it's too easy to beat. Remove it and compare against the generic C strlen version and memchr. OK to commit? ChangeLog: 2018-12-21 Wilco Dijkstra * benchtests/bench-strlen.c (generic_strlen): New function. (memchr_strlen): New function. diff --git a/benchtests/bench-strlen.c b/benchtests/bench-strlen.c index 4c26890e23c2e08e2237cf0327cc4b0e4b2f2259..00429cc6b72826443f84f64f30f1774f16394bd8 100644 --- a/benchtests/bench-strlen.c +++ b/benchtests/bench-strlen.c @@ -24,24 +24,15 @@ #endif #include "bench-string.h" -#ifndef WIDE -# define MAX_CHAR CHAR_MAX -#else -# define MAX_CHAR WCHAR_MAX -#endif - #include "json-lib.h" typedef size_t (*proto_t) (const CHAR *); -size_t -simple_STRLEN (const CHAR *s) -{ - const CHAR *p; +size_t generic_strlen (const CHAR *); +size_t memchr_strlen (const CHAR *); - for (p = s; *p; ++p); - return p - s; -} +IMPL (memchr_strlen, 0) +IMPL (generic_strlen, 0) #ifndef WIDE size_t @@ -52,7 +43,12 @@ builtin_strlen (const CHAR *p) IMPL (builtin_strlen, 0) #endif -IMPL (simple_STRLEN, 0) +size_t +memchr_strlen (const CHAR *p) +{ + return (const CHAR *)MEMCHR (p, 0, SIZE_MAX/2) - p; +} + IMPL (STRLEN, 1) @@ -161,3 +157,13 @@ test_main (void) } #include + +#define libc_hidden_builtin_def(X) +#ifndef WIDE +# undef STRLEN +# define STRLEN generic_strlen +# include +#else +# define WCSLEN generic_strlen +# include +#endif