Fields
| hardware | None |
| os | None |
Parameters
Fields
| Name | Value |
|---|
Parameters
| Name | Value |
|---|---|
| git_commit |
commit 0298e58c7dd1fa76b98ff270cdb9e0eba4949185 Author: Peng Liu <winner245@hotmail.com> Date: Tue Jan 14 11:40:29 2025 -0500 [libc++] Optimize input_iterator-pair `insert` for std::vector (#113768) As a follow-up to #113852, this PR optimizes the performance of the `insert(const_iterator pos, InputIt first, InputIt last)` function for `input_iterator`-pair inputs in `std::vector` for cases where reallocation occurs during insertion. Additionally, this optimization enhances exception safety by replacing the traditional `try-catch` mechanism with a modern exception guard for the `insert` function. The optimization targets cases where insertion trigger reallocation. In scenarios without reallocation, the implementation remains unchanged. Previous implementation ----------------------- The previous implementation of `insert` is inefficient in reallocation scenarios because it performs the following steps separately: - `reserve()`: This leads to the first round of relocating old elements to new memory; - `rotate()`: This leads to the second round of reorganizing the existing elements; - Move-forward: Moves the elements after the insertion position to their final positions. - Insert: performs the actual insertion. This approach results in a lot of redundant operations, requiring the elements to undergo three rounds of relocations/reorganizations to be placed in their final positions. Proposed implementation ----------------------- The proposed implementation jointly optimize the above 4 steps in the previous implementation such that each element is placed in its final position in just one round of relocation. Specifically, this optimization reduces the total cost from 2 relocations + 1 std::rotate call to just 1 relocation, without needing to call `std::rotate`, thereby significantly improving overall performance. |
Filter
ldionne-old-macbook-results test results
| Run | Order | Start Time | Duration |
|---|---|---|---|
| Current | 523796 | 2025-12-16T16:40:01 | 0:00:00 |
| Previous | 523782 | 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 | 18 |
| Unchanged Tests | 88 | 72 |
| Total Tests | 90 |
| Performance Regressions - execution_time | Δ | Previous | Current | σ | Δ (B) | σ (B) |
|---|---|---|---|---|---|---|
| 727_cppcheck_r | 1.90% | 24.140 | 24.597 | - | 0.00% | - |
| Performance Improvements - execution_time | Δ | Previous | Current | σ | Δ (B) | σ (B) |
|---|---|---|---|---|---|---|
| 735_gem5_r | -1.24% | 13.746 | 13.576 | - | 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 |
| 734_vpr_r |
| 735_gem5_r |
| 736_ocio_r |
| 737_gmsh_r |
| 748_flightdm_r |
| 750_sealcrypto_r |
| 753_ns3_r |
| 766_femflow_r |
| 767_nest_r |
Report Time: 0.06s