From patchwork Thu Jun 27 18:22:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 1123569 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-103266-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="OGS7PmKw"; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="amI9yf5v"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45ZStt723fz9s9h for ; Fri, 28 Jun 2019 04:23:02 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id :content-type:content-transfer-encoding:mime-version; q=dns; s= default; b=Y0sQ0++cY6yzlJDAnTocqBGp9djFhjtUJ5GT2phPvKfFACMwkRsSm HRxKChyHFGTBbUXmBQTfg4xUPmSTJ4dou3cwF/nbc+1Gpqhm5aJtIFgRU1gsd2dG +AXH9ke4uOLsEJzNc0wLn6je05Ugj9GnzDTDkcbr3vlhxkOoUQPrwA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id :content-type:content-transfer-encoding:mime-version; s=default; bh=qkKWui2wqzuvM5IEmw1t0IJ/6Oc=; b=OGS7PmKwUM8uy17h7xYB9+2GUU6G c0Hr/cndezySc0aRS/hS3ThB5zGtM4o5K64qUmnQx5Ziu0jrQ4Jl74ibTdMJs8x6 Jbowv73Qg0gcUgU7vQE8l1VzAmHlAANsBLtD3Cz2cI6yL3EaJF56vd70ufiNBQzA Lk9TI/Mcp3iWywg= Received: (qmail 26412 invoked by alias); 27 Jun 2019 18:22:56 -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 26399 invoked by uid 89); 27 Jun 2019 18:22:55 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=bench X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com ARC-Seal: i=1; a=rsa-sha256; s=testarcselector01; d=microsoft.com; cv=none; b=nfrflqFpdPokTtKGG7I/hGRUBkrWpG5qlCaCAGyKvDlg5BDOKU0QMvHLI2+jYR3ilQIkRhuoL+kTW2btK7UrmD8xAqjrN/Y7CG5nfWv5xSPC1B3apcWeMPAJutgnqbYOpk+xqOVursTWagZoMxTpce2c7AKIlBM60Xa6u1P536o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=testarcselector01; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I1WjFB+VHBa88pMW1x4p7E5B4Cq2v3RpYky0Vgk0z04=; b=aj41arBButedUyGxUaNtpZzqfstaTLP98sIZhOImUAKHYpluiwsaoxt0BCaqGQJYlTY+6mE2KP44KKQtg0eq51RihaR+D60CTBpn2QpsURIAse/KaKbVOiEkaN62Q/eH2d2cq/yeZ9L1dRZoi4Ddc45+NSkEDQOj0x8j7RH+3zw= ARC-Authentication-Results: i=1; test.office365.com 1;spf=none;dmarc=none;dkim=none;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I1WjFB+VHBa88pMW1x4p7E5B4Cq2v3RpYky0Vgk0z04=; b=amI9yf5v5bYokUKeE9g7SCRIoGL2O73Hf0OCyktyt4MHJ2iXQ3/LKk9JIdofWhO2BhbZxSwdbfmYYuPs6wnoLJFXCrmovcPbZagxnvPlCTMfAZj6s7S5QuU81gZkSmxZIsMKwQlnyBtONAZNnmBowK/14wQi45P7ZB+cZYA31KM= From: Wilco Dijkstra To: "libc-alpha@sourceware.org" CC: nd Subject: [PATCH] Further improve string bench timing Date: Thu, 27 Jun 2019 18:22:49 +0000 Message-ID: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Wilco.Dijkstra@arm.com; x-ms-oob-tlc-oobclassifiers: OLM:68; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Wilco.Dijkstra@arm.com Further improve the timings of the string benchmarks. Ensure most take between 1 and 4 seconds to improve accuracy. Overall time taken increases by 35%. OK for commit? 2019-06-26 Wilco Dijkstra * benchtests/bench-math-inlines.c: Increase iterations. * benchtests/bench-memcmp.c: Likewise. * benchtests/bench-rawmemchr.c: Likewise. * benchtests/bench-strcmp.c: Likewise. * benchtests/bench-strcpy_chk.c: Likewise. * benchtests/bench-string.h (INNER_LOOP_ITERS8): Add define. (INNER_LOOP_ITERS_MEDIUM): Increase iterations. (INNER_LOOP_ITERS_SMALL): Likewise. * benchtests/bench-strncat.c: Increase iterations. * benchtests/bench-strncmp.c: Increase iterations. * benchtests/bench-strncpy.c: Reduce iterations for wide strings. * benchtests/bench-strrchr.c: Increase iterations. * benchtests/bench-strstr.c: Keep iterations unchanged. * benchtests/bench-strtod.c: Increase iterations. Reviewed-by: Adhemerval Zanella diff --git a/benchtests/bench-math-inlines.c b/benchtests/bench-math-inlines.c index aed85ca9884736d0712c4a20c67375e2c41d94c4..37331bc662d6a8b4083a5d199a209889e3569074 100644 --- a/benchtests/bench-math-inlines.c +++ b/benchtests/bench-math-inlines.c @@ -220,7 +220,7 @@ static void do_one_test (json_ctx_t *json_ctx, proto_t test_fn, volatile double *arr, size_t len, const char *testname) { - size_t iters = 500; + size_t iters = 2048; timing_t start, stop, cur; json_attr_object_begin (json_ctx, testname); diff --git a/benchtests/bench-memcmp.c b/benchtests/bench-memcmp.c index 4f01e3100db13360baf95c69926d668f0411189d..a6af10785589a5f1da0a79d8367d85b84d061d95 100644 --- a/benchtests/bench-memcmp.c +++ b/benchtests/bench-memcmp.c @@ -63,7 +63,7 @@ static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s1, const CHAR *s2, size_t len, int exp_result) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; TIMING_NOW (start); diff --git a/benchtests/bench-rawmemchr.c b/benchtests/bench-rawmemchr.c index 5cdfdf7227c4238c102c5df399c6709540d36756..f7e1524d8a682c508e9384851e5a845bd88bcb40 100644 --- a/benchtests/bench-rawmemchr.c +++ b/benchtests/bench-rawmemchr.c @@ -39,7 +39,7 @@ IMPL (generic_rawmemchr, 0) static void do_one_test (impl_t *impl, const char *s, int c, char *exp_res) { - size_t i, iters = INNER_LOOP_ITERS_LARGE; + size_t i, iters = INNER_LOOP_ITERS_LARGE * 4; timing_t start, stop, cur; char *res = CALL (impl, s, c); if (res != exp_res) diff --git a/benchtests/bench-strcmp.c b/benchtests/bench-strcmp.c index c87b3ac02bda1c35ee604dfa0551a0fa1934cb75..b8d355c3ce576fcbad30bf7434d287fbe4579432 100644 --- a/benchtests/bench-strcmp.c +++ b/benchtests/bench-strcmp.c @@ -83,7 +83,7 @@ do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s1, const CHAR *s2, int exp_result) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; TIMING_NOW (start); diff --git a/benchtests/bench-strcpy_chk.c b/benchtests/bench-strcpy_chk.c index 3030763100f3bbc03bc38aa394d967d75a09ec20..34c9c78a77922c4bcb7abe1406b7793c73684a31 100644 --- a/benchtests/bench-strcpy_chk.c +++ b/benchtests/bench-strcpy_chk.c @@ -77,7 +77,7 @@ do_one_test (impl_t *impl, char *dst, const char *src, size_t len, size_t dlen) { char *res; - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; if (dlen <= len) diff --git a/benchtests/bench-string.h b/benchtests/bench-string.h index 7d357914fd42273fbaab70815551efdfd2b38b63..4831e210544cd4e9402ab860844cad58c575abce 100644 --- a/benchtests/bench-string.h +++ b/benchtests/bench-string.h @@ -125,9 +125,10 @@ extern impl_t __start_impls[], __stop_impls[]; # define OPT_SEED 10002 # define INNER_LOOP_ITERS 8192 +# define INNER_LOOP_ITERS8 32768 # define INNER_LOOP_ITERS_LARGE 131072 -# define INNER_LOOP_ITERS_MEDIUM 1024 -# define INNER_LOOP_ITERS_SMALL 32 +# define INNER_LOOP_ITERS_MEDIUM 2048 +# define INNER_LOOP_ITERS_SMALL 256 int ret, do_srandom; unsigned int seed; diff --git a/benchtests/bench-strncat.c b/benchtests/bench-strncat.c index 7271626d506f7a0b71cd2f46e641759567d17645..e7583dfad4a376b0d338a1618ef3fd5fd8663e58 100644 --- a/benchtests/bench-strncat.c +++ b/benchtests/bench-strncat.c @@ -51,7 +51,7 @@ IMPL (generic_strncat, 0) static void do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, size_t n) { - size_t k = STRLEN (dst), i, iters = INNER_LOOP_ITERS; + size_t k = STRLEN (dst), i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; if (CALL (impl, dst, src, n) != dst) diff --git a/benchtests/bench-strncmp.c b/benchtests/bench-strncmp.c index a4f3412a8fed49fdf1813974031827fc92fdd8f3..bd3f9b287102378cf35ca8873e45c1a86679d604 100644 --- a/benchtests/bench-strncmp.c +++ b/benchtests/bench-strncmp.c @@ -73,7 +73,7 @@ static void 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; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; TIMING_NOW (start); diff --git a/benchtests/bench-strncpy.c b/benchtests/bench-strncpy.c index c6a6799a2fae7b80c803d287c8838fd17de5f91d..a26232f423872bf6dde3ea70b662b19d5ab115f8 100644 --- a/benchtests/bench-strncpy.c +++ b/benchtests/bench-strncpy.c @@ -54,7 +54,7 @@ typedef CHAR *(*proto_t) (CHAR *, const CHAR *, size_t); static void do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, size_t len, size_t n) { - size_t i, iters = INNER_LOOP_ITERS_LARGE; + size_t i, iters = INNER_LOOP_ITERS_LARGE * (4 / CHARBYTES); timing_t start, stop, cur; if (CALL (impl, dst, src, n) != STRNCPY_RESULT (dst, len, n)) diff --git a/benchtests/bench-strrchr.c b/benchtests/bench-strrchr.c index faf64265d2a59d51b7edc453f162f18e2952b449..bdb3b41d40efa466685f11ca7338a8caef62f050 100644 --- a/benchtests/bench-strrchr.c +++ b/benchtests/bench-strrchr.c @@ -56,7 +56,7 @@ static void do_one_test (impl_t *impl, const CHAR *s, int c, CHAR *exp_res) { CHAR *res = CALL (impl, s, c); - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; if (res != exp_res) diff --git a/benchtests/bench-strstr.c b/benchtests/bench-strstr.c index 8fc434b42ffc1d0cd6cdc1c399f85f95f52d0eea..f49d411d8cf42c5dfb5dde805e7189927834e754 100644 --- a/benchtests/bench-strstr.c +++ b/benchtests/bench-strstr.c @@ -131,7 +131,7 @@ IMPL (basic_strstr, 0) static void do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) { - size_t i, iters = INNER_LOOP_ITERS_SMALL; + size_t i, iters = INNER_LOOP_ITERS_SMALL / 8; timing_t start, stop, cur; char *res; diff --git a/benchtests/bench-strtod.c b/benchtests/bench-strtod.c index d5b2503553ef74f33cace919ae9c62f79cd11c9c..780c04ab0ade62b576ff623614a79881793327a1 100644 --- a/benchtests/bench-strtod.c +++ b/benchtests/bench-strtod.c @@ -24,7 +24,7 @@ #include "bench-timing.h" #undef INNER_LOOP_ITERS -#define INNER_LOOP_ITERS 65536 +#define INNER_LOOP_ITERS 131072 static const char *inputs[] = {