[v3,2/2] x86: Add additional benchmarks for strchr
Commit Message
From: noah <goldstein.w.n@gmail.com>
This patch adds additional benchmarks for string size of 4096 and
several benchmarks for string size 256 with different alignments.
Signed-off-by: noah <goldstein.w.n@gmail.com>
---
benchtests/bench-strchr.c | 79 ++++++++++++++++++++++++++-------------
1 file changed, 53 insertions(+), 26 deletions(-)
Comments
On Tue, Feb 2, 2021 at 1:40 AM <goldstein.w.n@gmail.com> wrote:
>
> From: noah <goldstein.w.n@gmail.com>
>
> This patch adds additional benchmarks for string size of 4096 and
> several benchmarks for string size 256 with different alignments.
>
> Signed-off-by: noah <goldstein.w.n@gmail.com>
> ---
> benchtests/bench-strchr.c | 79 ++++++++++++++++++++++++++-------------
> 1 file changed, 53 insertions(+), 26 deletions(-)
>
> diff --git a/benchtests/bench-strchr.c b/benchtests/bench-strchr.c
> index bf493fe458..ce7ffd354d 100644
> --- a/benchtests/bench-strchr.c
> +++ b/benchtests/bench-strchr.c
> @@ -100,9 +100,12 @@ do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char)
> size_t i;
> CHAR *result;
> CHAR *buf = (CHAR *) buf1;
> - align &= 15;
> + align &= 127;
> if ((align + len) * sizeof (CHAR) >= page_size)
> - return;
> + {
> + return;
> + }
> +
>
> for (i = 0; i < len; ++i)
> {
> @@ -146,40 +149,64 @@ test_main (void)
> putchar ('\n');
>
> for (i = 1; i < 8; ++i)
> - {
> - do_test (0, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
> - do_test (i, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
> - }
> + {
> + do_test (0, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
> + do_test (i, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
> + }
>
> for (i = 1; i < 8; ++i)
> - {
> - do_test (i, 64, 256, SMALL_CHAR, MIDDLE_CHAR);
> - do_test (i, 64, 256, SMALL_CHAR, BIG_CHAR);
> - }
> + {
> + do_test (0, 16 << i, 4096, SMALL_CHAR, MIDDLE_CHAR);
> + do_test (i, 16 << i, 4096, SMALL_CHAR, MIDDLE_CHAR);
> + }
> +
> + for (i = 1; i < 8; ++i)
> + {
> + do_test (i, 64, 256, SMALL_CHAR, MIDDLE_CHAR);
> + do_test (i, 64, 256, SMALL_CHAR, BIG_CHAR);
> + }
> +
> + for (i = 0; i < 8; ++i)
> + {
> + do_test (16 * i, 256, 512, SMALL_CHAR, MIDDLE_CHAR);
> + do_test (16 * i, 256, 512, SMALL_CHAR, BIG_CHAR);
> + }
>
> for (i = 0; i < 32; ++i)
> - {
> - do_test (0, i, i + 1, SMALL_CHAR, MIDDLE_CHAR);
> - do_test (0, i, i + 1, SMALL_CHAR, BIG_CHAR);
> - }
> + {
> + do_test (0, i, i + 1, SMALL_CHAR, MIDDLE_CHAR);
> + do_test (0, i, i + 1, SMALL_CHAR, BIG_CHAR);
> + }
>
> for (i = 1; i < 8; ++i)
> - {
> - do_test (0, 16 << i, 2048, 0, MIDDLE_CHAR);
> - do_test (i, 16 << i, 2048, 0, MIDDLE_CHAR);
> - }
> + {
> + do_test (0, 16 << i, 2048, 0, MIDDLE_CHAR);
> + do_test (i, 16 << i, 2048, 0, MIDDLE_CHAR);
> + }
>
> for (i = 1; i < 8; ++i)
> - {
> - do_test (i, 64, 256, 0, MIDDLE_CHAR);
> - do_test (i, 64, 256, 0, BIG_CHAR);
> - }
> + {
> + do_test (0, 16 << i, 4096, 0, MIDDLE_CHAR);
> + do_test (i, 16 << i, 4096, 0, MIDDLE_CHAR);
> + }
> +
> + for (i = 1; i < 8; ++i)
> + {
> + do_test (i, 64, 256, 0, MIDDLE_CHAR);
> + do_test (i, 64, 256, 0, BIG_CHAR);
> + }
> +
> + for (i = 0; i < 8; ++i)
> + {
> + do_test (16 * i, 256, 512, 0, MIDDLE_CHAR);
> + do_test (16 * i, 256, 512, 0, BIG_CHAR);
> + }
>
> for (i = 0; i < 32; ++i)
> - {
> - do_test (0, i, i + 1, 0, MIDDLE_CHAR);
> - do_test (0, i, i + 1, 0, BIG_CHAR);
> - }
> + {
> + do_test (0, i, i + 1, 0, MIDDLE_CHAR);
> + do_test (0, i, i + 1, 0, BIG_CHAR);
> + }
>
> return ret;
> }
> --
> 2.29.2
>
3 issues:
1. Please restore the nice commit message in
https://sourceware.org/pipermail/libc-alpha/2021-February/122200.html
2. Please fix the indentation (2 spaces).
3. Please add the same tests to string/test-strchr.c.
Thanks.
@@ -100,9 +100,12 @@ do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char)
size_t i;
CHAR *result;
CHAR *buf = (CHAR *) buf1;
- align &= 15;
+ align &= 127;
if ((align + len) * sizeof (CHAR) >= page_size)
- return;
+ {
+ return;
+ }
+
for (i = 0; i < len; ++i)
{
@@ -146,40 +149,64 @@ test_main (void)
putchar ('\n');
for (i = 1; i < 8; ++i)
- {
- do_test (0, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
- do_test (i, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
- }
+ {
+ do_test (0, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
+ do_test (i, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
+ }
for (i = 1; i < 8; ++i)
- {
- do_test (i, 64, 256, SMALL_CHAR, MIDDLE_CHAR);
- do_test (i, 64, 256, SMALL_CHAR, BIG_CHAR);
- }
+ {
+ do_test (0, 16 << i, 4096, SMALL_CHAR, MIDDLE_CHAR);
+ do_test (i, 16 << i, 4096, SMALL_CHAR, MIDDLE_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 64, 256, SMALL_CHAR, MIDDLE_CHAR);
+ do_test (i, 64, 256, SMALL_CHAR, BIG_CHAR);
+ }
+
+ for (i = 0; i < 8; ++i)
+ {
+ do_test (16 * i, 256, 512, SMALL_CHAR, MIDDLE_CHAR);
+ do_test (16 * i, 256, 512, SMALL_CHAR, BIG_CHAR);
+ }
for (i = 0; i < 32; ++i)
- {
- do_test (0, i, i + 1, SMALL_CHAR, MIDDLE_CHAR);
- do_test (0, i, i + 1, SMALL_CHAR, BIG_CHAR);
- }
+ {
+ do_test (0, i, i + 1, SMALL_CHAR, MIDDLE_CHAR);
+ do_test (0, i, i + 1, SMALL_CHAR, BIG_CHAR);
+ }
for (i = 1; i < 8; ++i)
- {
- do_test (0, 16 << i, 2048, 0, MIDDLE_CHAR);
- do_test (i, 16 << i, 2048, 0, MIDDLE_CHAR);
- }
+ {
+ do_test (0, 16 << i, 2048, 0, MIDDLE_CHAR);
+ do_test (i, 16 << i, 2048, 0, MIDDLE_CHAR);
+ }
for (i = 1; i < 8; ++i)
- {
- do_test (i, 64, 256, 0, MIDDLE_CHAR);
- do_test (i, 64, 256, 0, BIG_CHAR);
- }
+ {
+ do_test (0, 16 << i, 4096, 0, MIDDLE_CHAR);
+ do_test (i, 16 << i, 4096, 0, MIDDLE_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 64, 256, 0, MIDDLE_CHAR);
+ do_test (i, 64, 256, 0, BIG_CHAR);
+ }
+
+ for (i = 0; i < 8; ++i)
+ {
+ do_test (16 * i, 256, 512, 0, MIDDLE_CHAR);
+ do_test (16 * i, 256, 512, 0, BIG_CHAR);
+ }
for (i = 0; i < 32; ++i)
- {
- do_test (0, i, i + 1, 0, MIDDLE_CHAR);
- do_test (0, i, i + 1, 0, BIG_CHAR);
- }
+ {
+ do_test (0, i, i + 1, 0, MIDDLE_CHAR);
+ do_test (0, i, i + 1, 0, BIG_CHAR);
+ }
return ret;
}