[v4,3/8] Benchtests: Improve memrchr benchmarks
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
Commit Message
Add a second iteration for memrchr to set `pos` starting from the end
of the buffer.
Previously `pos` was only set relative to the begining of the
buffer. This isn't really useful for memchr because the begining
of the search space is (buf + len).
---
benchtests/bench-memchr.c | 110 ++++++++++++++++++++++----------------
1 file changed, 65 insertions(+), 45 deletions(-)
Comments
On Mon, Jun 6, 2022 at 3:37 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
>
> Add a second iteration for memrchr to set `pos` starting from the end
> of the buffer.
>
> Previously `pos` was only set relative to the begining of the
beginning
> buffer. This isn't really useful for memchr because the beginning
memrchr
> of the search space is (buf + len).
> ---
> benchtests/bench-memchr.c | 110 ++++++++++++++++++++++----------------
> 1 file changed, 65 insertions(+), 45 deletions(-)
>
> diff --git a/benchtests/bench-memchr.c b/benchtests/bench-memchr.c
> index 4d7212332f..0facda2fa0 100644
> --- a/benchtests/bench-memchr.c
> +++ b/benchtests/bench-memchr.c
> @@ -76,7 +76,7 @@ do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, int c,
>
> static void
> do_test (json_ctx_t *json_ctx, size_t align, size_t pos, size_t len,
> - int seek_char)
> + int seek_char, int invert_pos)
> {
> size_t i;
>
> @@ -96,7 +96,10 @@ do_test (json_ctx_t *json_ctx, size_t align, size_t pos, size_t len,
>
> if (pos < len)
> {
> - buf[align + pos] = seek_char;
> + if (invert_pos)
> + buf[align + len - pos] = seek_char;
> + else
> + buf[align + pos] = seek_char;
> buf[align + len] = -seek_char;
> }
> else
> @@ -109,6 +112,7 @@ do_test (json_ctx_t *json_ctx, size_t align, size_t pos, size_t len,
> json_attr_uint (json_ctx, "pos", pos);
> json_attr_uint (json_ctx, "len", len);
> json_attr_uint (json_ctx, "seek_char", seek_char);
> + json_attr_uint (json_ctx, "invert_pos", invert_pos);
>
> json_array_begin (json_ctx, "timings");
>
> @@ -123,6 +127,7 @@ int
> test_main (void)
> {
> size_t i;
> + int repeats;
> json_ctx_t json_ctx;
> test_init ();
>
> @@ -142,53 +147,68 @@ test_main (void)
>
> json_array_begin (&json_ctx, "results");
>
> - for (i = 1; i < 8; ++i)
> + for (repeats = 0; repeats < 2; ++repeats)
> {
> - do_test (&json_ctx, 0, 16 << i, 2048, 23);
> - do_test (&json_ctx, i, 64, 256, 23);
> - do_test (&json_ctx, 0, 16 << i, 2048, 0);
> - do_test (&json_ctx, i, 64, 256, 0);
> -
> - do_test (&json_ctx, getpagesize () - 15, 64, 256, 0);
> + for (i = 1; i < 8; ++i)
> + {
> + do_test (&json_ctx, 0, 16 << i, 2048, 23, repeats);
> + do_test (&json_ctx, i, 64, 256, 23, repeats);
> + do_test (&json_ctx, 0, 16 << i, 2048, 0, repeats);
> + do_test (&json_ctx, i, 64, 256, 0, repeats);
> +
> + do_test (&json_ctx, getpagesize () - 15, 64, 256, 0, repeats);
> #ifdef USE_AS_MEMRCHR
> - /* Also test the position close to the beginning for memrchr. */
> - do_test (&json_ctx, 0, i, 256, 23);
> - do_test (&json_ctx, 0, i, 256, 0);
> - do_test (&json_ctx, i, i, 256, 23);
> - do_test (&json_ctx, i, i, 256, 0);
> + /* Also test the position close to the beginning for memrchr. */
> + do_test (&json_ctx, 0, i, 256, 23, repeats);
> + do_test (&json_ctx, 0, i, 256, 0, repeats);
> + do_test (&json_ctx, i, i, 256, 23, repeats);
> + do_test (&json_ctx, i, i, 256, 0, repeats);
> #endif
> - }
> - for (i = 1; i < 8; ++i)
> - {
> - do_test (&json_ctx, i, i << 5, 192, 23);
> - do_test (&json_ctx, i, i << 5, 192, 0);
> - do_test (&json_ctx, i, i << 5, 256, 23);
> - do_test (&json_ctx, i, i << 5, 256, 0);
> - do_test (&json_ctx, i, i << 5, 512, 23);
> - do_test (&json_ctx, i, i << 5, 512, 0);
> -
> - do_test (&json_ctx, getpagesize () - 15, i << 5, 256, 23);
> - }
> - for (i = 1; i < 32; ++i)
> - {
> - do_test (&json_ctx, 0, i, i + 1, 23);
> - do_test (&json_ctx, 0, i, i + 1, 0);
> - do_test (&json_ctx, i, i, i + 1, 23);
> - do_test (&json_ctx, i, i, i + 1, 0);
> - do_test (&json_ctx, 0, i, i - 1, 23);
> - do_test (&json_ctx, 0, i, i - 1, 0);
> - do_test (&json_ctx, i, i, i - 1, 23);
> - do_test (&json_ctx, i, i, i - 1, 0);
> -
> - do_test (&json_ctx, getpagesize () - 15, i, i - 1, 23);
> - do_test (&json_ctx, getpagesize () - 15, i, i - 1, 0);
> -
> - do_test (&json_ctx, getpagesize () - 15, i, i + 1, 23);
> - do_test (&json_ctx, getpagesize () - 15, i, i + 1, 0);
> + }
> + for (i = 1; i < 8; ++i)
> + {
> + do_test (&json_ctx, i, i << 5, 192, 23, repeats);
> + do_test (&json_ctx, i, i << 5, 192, 0, repeats);
> + do_test (&json_ctx, i, i << 5, 256, 23, repeats);
> + do_test (&json_ctx, i, i << 5, 256, 0, repeats);
> + do_test (&json_ctx, i, i << 5, 512, 23, repeats);
> + do_test (&json_ctx, i, i << 5, 512, 0, repeats);
> +
> + do_test (&json_ctx, getpagesize () - 15, i << 5, 256, 23, repeats);
> + }
> + for (i = 1; i < 32; ++i)
> + {
> + do_test (&json_ctx, 0, i, i + 1, 23, repeats);
> + do_test (&json_ctx, 0, i, i + 1, 0, repeats);
> + do_test (&json_ctx, i, i, i + 1, 23, repeats);
> + do_test (&json_ctx, i, i, i + 1, 0, repeats);
> + do_test (&json_ctx, 0, i, i - 1, 23, repeats);
> + do_test (&json_ctx, 0, i, i - 1, 0, repeats);
> + do_test (&json_ctx, i, i, i - 1, 23, repeats);
> + do_test (&json_ctx, i, i, i - 1, 0, repeats);
> +
> + do_test (&json_ctx, getpagesize () / 2, i, i + 1, 23, repeats);
> + do_test (&json_ctx, getpagesize () / 2, i, i + 1, 0, repeats);
> + do_test (&json_ctx, getpagesize () / 2 + i, i, i + 1, 23, repeats);
> + do_test (&json_ctx, getpagesize () / 2 + i, i, i + 1, 0, repeats);
> + do_test (&json_ctx, getpagesize () / 2, i, i - 1, 23, repeats);
> + do_test (&json_ctx, getpagesize () / 2, i, i - 1, 0, repeats);
> + do_test (&json_ctx, getpagesize () / 2 + i, i, i - 1, 23, repeats);
> + do_test (&json_ctx, getpagesize () / 2 + i, i, i - 1, 0, repeats);
> +
> + do_test (&json_ctx, getpagesize () - 15, i, i - 1, 23, repeats);
> + do_test (&json_ctx, getpagesize () - 15, i, i - 1, 0, repeats);
> +
> + do_test (&json_ctx, getpagesize () - 15, i, i + 1, 23, repeats);
> + do_test (&json_ctx, getpagesize () - 15, i, i + 1, 0, repeats);
> +
> #ifdef USE_AS_MEMRCHR
> - /* Also test the position close to the beginning for memrchr. */
> - do_test (&json_ctx, 0, 1, i + 1, 23);
> - do_test (&json_ctx, 0, 2, i + 1, 0);
> + do_test (&json_ctx, 0, 1, i + 1, 23, repeats);
> + do_test (&json_ctx, 0, 2, i + 1, 0, repeats);
> +#endif
> + }
> +#ifndef USE_AS_MEMRCHR
> + break;
> #endif
> }
>
> --
> 2.34.1
>
On Mon, Jun 6, 2022 at 7:44 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> On Mon, Jun 6, 2022 at 3:37 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
> >
> > Add a second iteration for memrchr to set `pos` starting from the end
> > of the buffer.
> >
> > Previously `pos` was only set relative to the begining of the
>
> beginning
> > buffer. This isn't really useful for memchr because the beginning
> memrchr
Fixed in V5.
> > of the search space is (buf + len).
> > ---
> > benchtests/bench-memchr.c | 110 ++++++++++++++++++++++----------------
> > 1 file changed, 65 insertions(+), 45 deletions(-)
> >
> > diff --git a/benchtests/bench-memchr.c b/benchtests/bench-memchr.c
> > index 4d7212332f..0facda2fa0 100644
> > --- a/benchtests/bench-memchr.c
> > +++ b/benchtests/bench-memchr.c
> > @@ -76,7 +76,7 @@ do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, int c,
> >
> > static void
> > do_test (json_ctx_t *json_ctx, size_t align, size_t pos, size_t len,
> > - int seek_char)
> > + int seek_char, int invert_pos)
> > {
> > size_t i;
> >
> > @@ -96,7 +96,10 @@ do_test (json_ctx_t *json_ctx, size_t align, size_t pos, size_t len,
> >
> > if (pos < len)
> > {
> > - buf[align + pos] = seek_char;
> > + if (invert_pos)
> > + buf[align + len - pos] = seek_char;
> > + else
> > + buf[align + pos] = seek_char;
> > buf[align + len] = -seek_char;
> > }
> > else
> > @@ -109,6 +112,7 @@ do_test (json_ctx_t *json_ctx, size_t align, size_t pos, size_t len,
> > json_attr_uint (json_ctx, "pos", pos);
> > json_attr_uint (json_ctx, "len", len);
> > json_attr_uint (json_ctx, "seek_char", seek_char);
> > + json_attr_uint (json_ctx, "invert_pos", invert_pos);
> >
> > json_array_begin (json_ctx, "timings");
> >
> > @@ -123,6 +127,7 @@ int
> > test_main (void)
> > {
> > size_t i;
> > + int repeats;
> > json_ctx_t json_ctx;
> > test_init ();
> >
> > @@ -142,53 +147,68 @@ test_main (void)
> >
> > json_array_begin (&json_ctx, "results");
> >
> > - for (i = 1; i < 8; ++i)
> > + for (repeats = 0; repeats < 2; ++repeats)
> > {
> > - do_test (&json_ctx, 0, 16 << i, 2048, 23);
> > - do_test (&json_ctx, i, 64, 256, 23);
> > - do_test (&json_ctx, 0, 16 << i, 2048, 0);
> > - do_test (&json_ctx, i, 64, 256, 0);
> > -
> > - do_test (&json_ctx, getpagesize () - 15, 64, 256, 0);
> > + for (i = 1; i < 8; ++i)
> > + {
> > + do_test (&json_ctx, 0, 16 << i, 2048, 23, repeats);
> > + do_test (&json_ctx, i, 64, 256, 23, repeats);
> > + do_test (&json_ctx, 0, 16 << i, 2048, 0, repeats);
> > + do_test (&json_ctx, i, 64, 256, 0, repeats);
> > +
> > + do_test (&json_ctx, getpagesize () - 15, 64, 256, 0, repeats);
> > #ifdef USE_AS_MEMRCHR
> > - /* Also test the position close to the beginning for memrchr. */
> > - do_test (&json_ctx, 0, i, 256, 23);
> > - do_test (&json_ctx, 0, i, 256, 0);
> > - do_test (&json_ctx, i, i, 256, 23);
> > - do_test (&json_ctx, i, i, 256, 0);
> > + /* Also test the position close to the beginning for memrchr. */
> > + do_test (&json_ctx, 0, i, 256, 23, repeats);
> > + do_test (&json_ctx, 0, i, 256, 0, repeats);
> > + do_test (&json_ctx, i, i, 256, 23, repeats);
> > + do_test (&json_ctx, i, i, 256, 0, repeats);
> > #endif
> > - }
> > - for (i = 1; i < 8; ++i)
> > - {
> > - do_test (&json_ctx, i, i << 5, 192, 23);
> > - do_test (&json_ctx, i, i << 5, 192, 0);
> > - do_test (&json_ctx, i, i << 5, 256, 23);
> > - do_test (&json_ctx, i, i << 5, 256, 0);
> > - do_test (&json_ctx, i, i << 5, 512, 23);
> > - do_test (&json_ctx, i, i << 5, 512, 0);
> > -
> > - do_test (&json_ctx, getpagesize () - 15, i << 5, 256, 23);
> > - }
> > - for (i = 1; i < 32; ++i)
> > - {
> > - do_test (&json_ctx, 0, i, i + 1, 23);
> > - do_test (&json_ctx, 0, i, i + 1, 0);
> > - do_test (&json_ctx, i, i, i + 1, 23);
> > - do_test (&json_ctx, i, i, i + 1, 0);
> > - do_test (&json_ctx, 0, i, i - 1, 23);
> > - do_test (&json_ctx, 0, i, i - 1, 0);
> > - do_test (&json_ctx, i, i, i - 1, 23);
> > - do_test (&json_ctx, i, i, i - 1, 0);
> > -
> > - do_test (&json_ctx, getpagesize () - 15, i, i - 1, 23);
> > - do_test (&json_ctx, getpagesize () - 15, i, i - 1, 0);
> > -
> > - do_test (&json_ctx, getpagesize () - 15, i, i + 1, 23);
> > - do_test (&json_ctx, getpagesize () - 15, i, i + 1, 0);
> > + }
> > + for (i = 1; i < 8; ++i)
> > + {
> > + do_test (&json_ctx, i, i << 5, 192, 23, repeats);
> > + do_test (&json_ctx, i, i << 5, 192, 0, repeats);
> > + do_test (&json_ctx, i, i << 5, 256, 23, repeats);
> > + do_test (&json_ctx, i, i << 5, 256, 0, repeats);
> > + do_test (&json_ctx, i, i << 5, 512, 23, repeats);
> > + do_test (&json_ctx, i, i << 5, 512, 0, repeats);
> > +
> > + do_test (&json_ctx, getpagesize () - 15, i << 5, 256, 23, repeats);
> > + }
> > + for (i = 1; i < 32; ++i)
> > + {
> > + do_test (&json_ctx, 0, i, i + 1, 23, repeats);
> > + do_test (&json_ctx, 0, i, i + 1, 0, repeats);
> > + do_test (&json_ctx, i, i, i + 1, 23, repeats);
> > + do_test (&json_ctx, i, i, i + 1, 0, repeats);
> > + do_test (&json_ctx, 0, i, i - 1, 23, repeats);
> > + do_test (&json_ctx, 0, i, i - 1, 0, repeats);
> > + do_test (&json_ctx, i, i, i - 1, 23, repeats);
> > + do_test (&json_ctx, i, i, i - 1, 0, repeats);
> > +
> > + do_test (&json_ctx, getpagesize () / 2, i, i + 1, 23, repeats);
> > + do_test (&json_ctx, getpagesize () / 2, i, i + 1, 0, repeats);
> > + do_test (&json_ctx, getpagesize () / 2 + i, i, i + 1, 23, repeats);
> > + do_test (&json_ctx, getpagesize () / 2 + i, i, i + 1, 0, repeats);
> > + do_test (&json_ctx, getpagesize () / 2, i, i - 1, 23, repeats);
> > + do_test (&json_ctx, getpagesize () / 2, i, i - 1, 0, repeats);
> > + do_test (&json_ctx, getpagesize () / 2 + i, i, i - 1, 23, repeats);
> > + do_test (&json_ctx, getpagesize () / 2 + i, i, i - 1, 0, repeats);
> > +
> > + do_test (&json_ctx, getpagesize () - 15, i, i - 1, 23, repeats);
> > + do_test (&json_ctx, getpagesize () - 15, i, i - 1, 0, repeats);
> > +
> > + do_test (&json_ctx, getpagesize () - 15, i, i + 1, 23, repeats);
> > + do_test (&json_ctx, getpagesize () - 15, i, i + 1, 0, repeats);
> > +
> > #ifdef USE_AS_MEMRCHR
> > - /* Also test the position close to the beginning for memrchr. */
> > - do_test (&json_ctx, 0, 1, i + 1, 23);
> > - do_test (&json_ctx, 0, 2, i + 1, 0);
> > + do_test (&json_ctx, 0, 1, i + 1, 23, repeats);
> > + do_test (&json_ctx, 0, 2, i + 1, 0, repeats);
> > +#endif
> > + }
> > +#ifndef USE_AS_MEMRCHR
> > + break;
> > #endif
> > }
> >
> > --
> > 2.34.1
> >
>
>
> --
> H.J.
@@ -76,7 +76,7 @@ do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, int c,
static void
do_test (json_ctx_t *json_ctx, size_t align, size_t pos, size_t len,
- int seek_char)
+ int seek_char, int invert_pos)
{
size_t i;
@@ -96,7 +96,10 @@ do_test (json_ctx_t *json_ctx, size_t align, size_t pos, size_t len,
if (pos < len)
{
- buf[align + pos] = seek_char;
+ if (invert_pos)
+ buf[align + len - pos] = seek_char;
+ else
+ buf[align + pos] = seek_char;
buf[align + len] = -seek_char;
}
else
@@ -109,6 +112,7 @@ do_test (json_ctx_t *json_ctx, size_t align, size_t pos, size_t len,
json_attr_uint (json_ctx, "pos", pos);
json_attr_uint (json_ctx, "len", len);
json_attr_uint (json_ctx, "seek_char", seek_char);
+ json_attr_uint (json_ctx, "invert_pos", invert_pos);
json_array_begin (json_ctx, "timings");
@@ -123,6 +127,7 @@ int
test_main (void)
{
size_t i;
+ int repeats;
json_ctx_t json_ctx;
test_init ();
@@ -142,53 +147,68 @@ test_main (void)
json_array_begin (&json_ctx, "results");
- for (i = 1; i < 8; ++i)
+ for (repeats = 0; repeats < 2; ++repeats)
{
- do_test (&json_ctx, 0, 16 << i, 2048, 23);
- do_test (&json_ctx, i, 64, 256, 23);
- do_test (&json_ctx, 0, 16 << i, 2048, 0);
- do_test (&json_ctx, i, 64, 256, 0);
-
- do_test (&json_ctx, getpagesize () - 15, 64, 256, 0);
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (&json_ctx, 0, 16 << i, 2048, 23, repeats);
+ do_test (&json_ctx, i, 64, 256, 23, repeats);
+ do_test (&json_ctx, 0, 16 << i, 2048, 0, repeats);
+ do_test (&json_ctx, i, 64, 256, 0, repeats);
+
+ do_test (&json_ctx, getpagesize () - 15, 64, 256, 0, repeats);
#ifdef USE_AS_MEMRCHR
- /* Also test the position close to the beginning for memrchr. */
- do_test (&json_ctx, 0, i, 256, 23);
- do_test (&json_ctx, 0, i, 256, 0);
- do_test (&json_ctx, i, i, 256, 23);
- do_test (&json_ctx, i, i, 256, 0);
+ /* Also test the position close to the beginning for memrchr. */
+ do_test (&json_ctx, 0, i, 256, 23, repeats);
+ do_test (&json_ctx, 0, i, 256, 0, repeats);
+ do_test (&json_ctx, i, i, 256, 23, repeats);
+ do_test (&json_ctx, i, i, 256, 0, repeats);
#endif
- }
- for (i = 1; i < 8; ++i)
- {
- do_test (&json_ctx, i, i << 5, 192, 23);
- do_test (&json_ctx, i, i << 5, 192, 0);
- do_test (&json_ctx, i, i << 5, 256, 23);
- do_test (&json_ctx, i, i << 5, 256, 0);
- do_test (&json_ctx, i, i << 5, 512, 23);
- do_test (&json_ctx, i, i << 5, 512, 0);
-
- do_test (&json_ctx, getpagesize () - 15, i << 5, 256, 23);
- }
- for (i = 1; i < 32; ++i)
- {
- do_test (&json_ctx, 0, i, i + 1, 23);
- do_test (&json_ctx, 0, i, i + 1, 0);
- do_test (&json_ctx, i, i, i + 1, 23);
- do_test (&json_ctx, i, i, i + 1, 0);
- do_test (&json_ctx, 0, i, i - 1, 23);
- do_test (&json_ctx, 0, i, i - 1, 0);
- do_test (&json_ctx, i, i, i - 1, 23);
- do_test (&json_ctx, i, i, i - 1, 0);
-
- do_test (&json_ctx, getpagesize () - 15, i, i - 1, 23);
- do_test (&json_ctx, getpagesize () - 15, i, i - 1, 0);
-
- do_test (&json_ctx, getpagesize () - 15, i, i + 1, 23);
- do_test (&json_ctx, getpagesize () - 15, i, i + 1, 0);
+ }
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (&json_ctx, i, i << 5, 192, 23, repeats);
+ do_test (&json_ctx, i, i << 5, 192, 0, repeats);
+ do_test (&json_ctx, i, i << 5, 256, 23, repeats);
+ do_test (&json_ctx, i, i << 5, 256, 0, repeats);
+ do_test (&json_ctx, i, i << 5, 512, 23, repeats);
+ do_test (&json_ctx, i, i << 5, 512, 0, repeats);
+
+ do_test (&json_ctx, getpagesize () - 15, i << 5, 256, 23, repeats);
+ }
+ for (i = 1; i < 32; ++i)
+ {
+ do_test (&json_ctx, 0, i, i + 1, 23, repeats);
+ do_test (&json_ctx, 0, i, i + 1, 0, repeats);
+ do_test (&json_ctx, i, i, i + 1, 23, repeats);
+ do_test (&json_ctx, i, i, i + 1, 0, repeats);
+ do_test (&json_ctx, 0, i, i - 1, 23, repeats);
+ do_test (&json_ctx, 0, i, i - 1, 0, repeats);
+ do_test (&json_ctx, i, i, i - 1, 23, repeats);
+ do_test (&json_ctx, i, i, i - 1, 0, repeats);
+
+ do_test (&json_ctx, getpagesize () / 2, i, i + 1, 23, repeats);
+ do_test (&json_ctx, getpagesize () / 2, i, i + 1, 0, repeats);
+ do_test (&json_ctx, getpagesize () / 2 + i, i, i + 1, 23, repeats);
+ do_test (&json_ctx, getpagesize () / 2 + i, i, i + 1, 0, repeats);
+ do_test (&json_ctx, getpagesize () / 2, i, i - 1, 23, repeats);
+ do_test (&json_ctx, getpagesize () / 2, i, i - 1, 0, repeats);
+ do_test (&json_ctx, getpagesize () / 2 + i, i, i - 1, 23, repeats);
+ do_test (&json_ctx, getpagesize () / 2 + i, i, i - 1, 0, repeats);
+
+ do_test (&json_ctx, getpagesize () - 15, i, i - 1, 23, repeats);
+ do_test (&json_ctx, getpagesize () - 15, i, i - 1, 0, repeats);
+
+ do_test (&json_ctx, getpagesize () - 15, i, i + 1, 23, repeats);
+ do_test (&json_ctx, getpagesize () - 15, i, i + 1, 0, repeats);
+
#ifdef USE_AS_MEMRCHR
- /* Also test the position close to the beginning for memrchr. */
- do_test (&json_ctx, 0, 1, i + 1, 23);
- do_test (&json_ctx, 0, 2, i + 1, 0);
+ do_test (&json_ctx, 0, 1, i + 1, 23, repeats);
+ do_test (&json_ctx, 0, 2, i + 1, 0, repeats);
+#endif
+ }
+#ifndef USE_AS_MEMRCHR
+ break;
#endif
}