Message ID | 20210202093956.2613423-2-goldstein.w.n@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v3,1/2] x86: Refactor and improve performance of strchr-avx2.S | expand |
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.
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; }