public inbox for libstdc++@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] libstdc++: testsuite: reduce max_size_type.cc exec time [PR113175]
@ 2024-01-02 17:48 Patrick Palka
  2024-01-02 21:53 ` Jonathan Wakely
  2024-01-04  2:02 ` Hans-Peter Nilsson
  0 siblings, 2 replies; 3+ messages in thread
From: Patrick Palka @ 2024-01-02 17:48 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, hp, Patrick Palka

Tested on x86_64-pc-linux-gnu, does this look OK for trunk and release
branches (r14-205 was backported everywhere)?

-- >8 --

The adjustment to max_size_type.cc in r14-205-g83470a5cd4c3d2
inadvertently increased the execution time of the test by over 5x due to
enabling the two main loops to actually run in the signed_p case instead
of being dead code.  This suggests that the current range of the loop is
far too big and the test too time consuming, especially when run on
simulators.

So this patch cuts the loop range by 10x as proposed in the PR.  This
shouldn't significantly weaken the test since the same important edge
cases are still checked in the new range.  On my x86_64 machine this
reduces the test execution time by 10x, and 1.6x less time than before
r14-205.

	PR testsuite/113175

libstdc++-v3/ChangeLog:

	* testsuite/std/ranges/iota/max_size_type.cc (test02): Reduce
	'limit' to 100 from 1000 and adjust 'log2_limit' accordingly.
	(test03): Likewise.
---
 libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc b/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
index a1fbc3241dc..27f25c758fe 100644
--- a/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
+++ b/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
@@ -199,8 +199,8 @@ test02()
   using max_type = std::conditional_t<signed_p, max_diff_t, max_size_t>;
   using shorten_type = std::conditional_t<shorten_p, hw_type, max_type>;
   const int hw_type_bit_size = sizeof(hw_type) * __CHAR_BIT__;
-  const int limit = 1000;
-  const int log2_limit = 10;
+  const unsigned limit = 100;
+  const int log2_limit = 7;
   static_assert((1 << log2_limit) >= limit);
   const int min = (signed_p ? -limit : 0);
   const int max = limit;
@@ -257,8 +257,8 @@ test03()
   using max_type = std::conditional_t<signed_p, max_diff_t, max_size_t>;
   using base_type = std::conditional_t<toggle_base_p, hw_type, max_type>;
   constexpr int hw_type_bit_size = sizeof(hw_type) * __CHAR_BIT__;
-  constexpr int limit = 1000;
-  constexpr int log2_limit = 10;
+  constexpr unsigned limit = 100;
+  constexpr int log2_limit = 7;
   static_assert((1 << log2_limit) >= limit);
   const int min = (signed_p ? -limit : 0);
   const int max = limit;
-- 
2.43.0.232.ge79552d197


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] libstdc++: testsuite: reduce max_size_type.cc exec time [PR113175]
  2024-01-02 17:48 [PATCH] libstdc++: testsuite: reduce max_size_type.cc exec time [PR113175] Patrick Palka
@ 2024-01-02 21:53 ` Jonathan Wakely
  2024-01-04  2:02 ` Hans-Peter Nilsson
  1 sibling, 0 replies; 3+ messages in thread
From: Jonathan Wakely @ 2024-01-02 21:53 UTC (permalink / raw)
  To: Patrick Palka; +Cc: gcc-patches, libstdc++, Hans-Peter Nilsson

[-- Attachment #1: Type: text/plain, Size: 2609 bytes --]

On Tue, 2 Jan 2024, 17:49 Patrick Palka, <ppalka@redhat.com> wrote:

> Tested on x86_64-pc-linux-gnu, does this look OK for trunk and release
> branches (r14-205 was backported everywhere)?
>

Yes, thanks.



> -- >8 --
>
> The adjustment to max_size_type.cc in r14-205-g83470a5cd4c3d2
> inadvertently increased the execution time of the test by over 5x due to
> enabling the two main loops to actually run in the signed_p case instead
> of being dead code.  This suggests that the current range of the loop is
> far too big and the test too time consuming, especially when run on
> simulators.
>
> So this patch cuts the loop range by 10x as proposed in the PR.  This
> shouldn't significantly weaken the test since the same important edge
> cases are still checked in the new range.  On my x86_64 machine this
> reduces the test execution time by 10x, and 1.6x less time than before
> r14-205.
>
>         PR testsuite/113175
>
> libstdc++-v3/ChangeLog:
>
>         * testsuite/std/ranges/iota/max_size_type.cc (test02): Reduce
>         'limit' to 100 from 1000 and adjust 'log2_limit' accordingly.
>         (test03): Likewise.
> ---
>  libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
> b/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
> index a1fbc3241dc..27f25c758fe 100644
> --- a/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
> +++ b/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
> @@ -199,8 +199,8 @@ test02()
>    using max_type = std::conditional_t<signed_p, max_diff_t, max_size_t>;
>    using shorten_type = std::conditional_t<shorten_p, hw_type, max_type>;
>    const int hw_type_bit_size = sizeof(hw_type) * __CHAR_BIT__;
> -  const int limit = 1000;
> -  const int log2_limit = 10;
> +  const unsigned limit = 100;
> +  const int log2_limit = 7;
>    static_assert((1 << log2_limit) >= limit);
>    const int min = (signed_p ? -limit : 0);
>    const int max = limit;
> @@ -257,8 +257,8 @@ test03()
>    using max_type = std::conditional_t<signed_p, max_diff_t, max_size_t>;
>    using base_type = std::conditional_t<toggle_base_p, hw_type, max_type>;
>    constexpr int hw_type_bit_size = sizeof(hw_type) * __CHAR_BIT__;
> -  constexpr int limit = 1000;
> -  constexpr int log2_limit = 10;
> +  constexpr unsigned limit = 100;
> +  constexpr int log2_limit = 7;
>    static_assert((1 << log2_limit) >= limit);
>    const int min = (signed_p ? -limit : 0);
>    const int max = limit;
> --
> 2.43.0.232.ge79552d197
>
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] libstdc++: testsuite: reduce max_size_type.cc exec time [PR113175]
  2024-01-02 17:48 [PATCH] libstdc++: testsuite: reduce max_size_type.cc exec time [PR113175] Patrick Palka
  2024-01-02 21:53 ` Jonathan Wakely
@ 2024-01-04  2:02 ` Hans-Peter Nilsson
  1 sibling, 0 replies; 3+ messages in thread
From: Hans-Peter Nilsson @ 2024-01-04  2:02 UTC (permalink / raw)
  To: Patrick Palka; +Cc: gcc-patches, libstdc++, ppalka

> From: Patrick Palka <ppalka@redhat.com>
> Date: Tue,  2 Jan 2024 12:48:26 -0500

> Tested on x86_64-pc-linux-gnu, does this look OK for trunk and release
> branches (r14-205 was backported everywhere)?
> 
> -- >8 --
> 
> The adjustment to max_size_type.cc in r14-205-g83470a5cd4c3d2
> inadvertently increased the execution time of the test by over 5x due to
> enabling the two main loops to actually run in the signed_p case instead
> of being dead code.  This suggests that the current range of the loop is
> far too big and the test too time consuming, especially when run on
> simulators.
> 
> So this patch cuts the loop range by 10x as proposed in the PR.  This
> shouldn't significantly weaken the test since the same important edge
> cases are still checked in the new range.  On my x86_64 machine this
> reduces the test execution time by 10x, and 1.6x less time than before
> r14-205.
> 
> 	PR testsuite/113175
> 
> libstdc++-v3/ChangeLog:
> 
> 	* testsuite/std/ranges/iota/max_size_type.cc (test02): Reduce
> 	'limit' to 100 from 1000 and adjust 'log2_limit' accordingly.
> 	(test03): Likewise.


Oh the irony...  This now fails for cris-elf.  For CRIS,
it's not a timeout but an actual failure.

See PR113226; suddenly 1*-100 == 4294967196.  You changed
the type of "limit" to unsigned, but that doesn't appear to
matter.  So why would *narrowing* the tested range yield an
error?

I can't tell if this is target-specific: not enough
32-bitters results for r14-6888-ga138b99646a555 and later on
gcc-testresults@ for libstdc++ yet.  (No, I don't count the
32-bit multilibs of x86_64 and s390x.)

brgds, H-P

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-01-04  2:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-02 17:48 [PATCH] libstdc++: testsuite: reduce max_size_type.cc exec time [PR113175] Patrick Palka
2024-01-02 21:53 ` Jonathan Wakely
2024-01-04  2:02 ` Hans-Peter Nilsson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).