Fields

hardware None
os None

Parameters

Fields

NameValue

Parameters

NameValue
git_commit commit d200df0557b71fae0d77bc7fc1650d22a05af371
Author: Aiden Grossman <aidengrossman@google.com>
Date: Mon Nov 3 11:04:22 2025 -0800

[libcxx] Remove Redundant Reset in ~basic_string (#164718)

8dae17be2991cd7f0d7fd9aa5aecd064520a14f6 refactors basic_string for more
code reuse. This makes sense in most cases, but has performance overhead
in the case of ~basic_string. The refactoring of ~basic_string to call
__reset_internal_buffer() added a redundant (inside the destructor)
reset of the object, which the optimizer is unable to optimize away in
many cases. This patch prevents a ~1% regression we observed on an
internal workload when applying the original refactoring. This does
slightly pessimize the code readability, but I think this change is
worth it given the performance impact.

I'm hoping to add a benchmark(s) to the upstream libc++ benchmark suite
around string construction/destruction to ensure that this case does not
regress as it seems common in real world applications. I will put up a
separate PR for that when I figure out a reasonable way to write it.
Filter

ldionne-old-macbook-results test results

Run Order Start Time Duration
Current 558036 2025-12-16T16:40:01 0:00:00
Previous 558006 2025-12-16T16:40:01 0:00:00
Baseline 485288 2025-12-16T16:40:01 0:00:00


Tests Summary

Status Group # # (B)
Performance Regressions 1 0
Performance Improvements 1 0
Added Tests 0 16
Unchanged Tests 78 64
Total Tests 80

Performance Regressions - execution_time Δ Previous Current σ Δ (B) σ (B)
748_flightdm_r 1.56% 8.864 9.002 - 0.00% -

Performance Improvements - execution_time Δ Previous Current σ Δ (B) σ (B)
753_ns3_r -2.32% 10.254 10.016 - 0.00% -

Added Tests - execution_time
706_stockfish_r
707_ntest_r
709_cactus_r
710_omnetpp_r
721_gcc_r
723_llvm_r
727_cppcheck_r
729_abc_r
731_astcenc_r
735_gem5_r
736_ocio_r
737_gmsh_r
748_flightdm_r
750_sealcrypto_r
753_ns3_r
766_femflow_r


Report Time: 0.64s