[PATCH] libstdc++: testsuite: reduce max_size_type.cc exec time [PR113175]
Jonathan Wakely
jwakely.gcc@gmail.com
Tue Jan 2 21:53:57 GMT 2024
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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20240102/9c64c316/attachment.htm>
More information about the Libstdc++
mailing list