This is a sequence of related improvements to <mdspan> we
discussed during review and then postponed. The ideas are:

  * Pre-compute the product of static extents; and a follow up
    for fine-tuning for low-rank extents.

  * Returning to extents::operator== to improve the case of mixed
    dynamic/static extents, revealed that this can be simplified
    quite a bit.

  * There's several templates that depend on the IndexType, but
    the actual code only needs the static extents. Therefore,
    extents with the same Indices... but different IndexType can
    use the same code.

  * Recently, libstdc++ code was refactored to avoid
    numeric_limits and use __int_traits instead. Unfortunately,
    this is currently completely ineffective for <mdspan>. But
    since, it's a good idea, the changes are ready, and it might
    anyway be needed in the future, I've submitted the patch
    regardless.

Many of these look like optimizations, but since I've not
performed any runtime experiments, it might not be fair to call
them such. However, because they're principled changes to the
source code and the generated code "looks faster" (though it
might be overly bold to claim that I could tell), I think it
makes sense to propose them regardless.

Therefore, if anything looks iffy or you feel one should be
measuring performance, please suggest that we start.

The commit messages are a lot longer than in the past, because
the justification for each change is included, please let me know
if I should shorten them.

Luc Grosheintz (6):
  libstdc++: Fix style issues in <mdspan>.
  libstdc++: Precompute products of static extents.
  libstdc++: Improve low-rank layout_{left,right}::stride.
  libstdc++: Improve extents::operator==.
  libstdc++: Reduce template instantiations in <mdspan>.
  libstdc++: Replace numeric_limit with __int_traits in mdspan.

 libstdc++-v3/include/std/mdspan               | 195 +++++++++++-------
 .../mdspan/extents/class_mandates_neg.cc      |   3 +
 2 files changed, 128 insertions(+), 70 deletions(-)

-- 
2.50.0

Reply via email to