Fields
| hardware | None |
| os | None |
Parameters
Fields
| Name | Value |
|---|
Parameters
| Name | Value |
|---|---|
| git_commit |
commit d0cee6939a1a889b14dcfc0bb049f38063c81f9b Author: Peng Liu <winner245@hotmail.com> Date: Thu Oct 16 19:41:24 2025 -0400 [libc++] Optimize std::{,ranges}::{fill,fill_n} for segmented iterators (#132665) This patch optimizes `std::fill`, `std::fill_n`, `std::ranges::fill`, and `std::ranges::fill_n` for segmented iterators, achieving substantial performance improvements. Specifically, for `deque<int>` iterators, the performance improvements are above 10x for all these algorithms. The optimization also enables filling segmented memory of `deque<int>` to approach the performance of filling contiguous memory of `vector<int>`. Benchmark results comparing the before and after implementations are provided below. For additional context, we’ve included `vector<int>` results, which remain unchanged, as this patch specifically targets segmented iterators and leaves non-segmented iterator behavior untouched. Fixes two subtasks outlined in #102817. #### `fill_n` ``` ----------------------------------------------------------------------------- Benchmark Before After Speedup ----------------------------------------------------------------------------- std::fill_n(deque<int>)/32 11.4 ns 2.28 ns 5.0x std::fill_n(deque<int>)/50 19.7 ns 3.40 ns 5.8x std::fill_n(deque<int>)/1024 391 ns 37.3 ns 10.5x std::fill_n(deque<int>)/8192 3174 ns 301 ns 10.5x std::fill_n(deque<int>)/65536 26504 ns 2951 ns 9.0x std::fill_n(deque<int>)/1048576 407960 ns 80658 ns 5.1x rng::fill_n(deque<int>)/32 14.3 ns 2.15 ns 6.6x rng::fill_n(deque<int>)/50 20.2 ns 3.22 ns 6.3x rng::fill_n(deque<int>)/1024 381 ns 37.8 ns 10.1x rng::fill_n(deque<int>)/8192 3101 ns 294 ns 10.5x rng::fill_n(deque<int>)/65536 25098 ns 2926 ns 8.6x rng::fill_n(deque<int>)/1048576 394342 ns 78874 ns 5.0x std::fill_n(vector<int>)/32 1.76 ns 1.72 ns 1.0x std::fill_n(vector<int>)/50 3.00 ns 2.73 ns 1.1x std::fill_n(vector<int>)/1024 38.4 ns 37.9 ns 1.0x std::fill_n(vector<int>)/8192 258 ns 252 ns 1.0x std::fill_n(vector<int>)/65536 2993 ns 2889 ns 1.0x std::fill_n(vector<int>)/1048576 80328 ns 80468 ns 1.0x rng::fill_n(vector<int>)/32 1.99 ns 1.35 ns 1.5x rng::fill_n(vector<int>)/50 2.66 ns 2.12 ns 1.3x rng::fill_n(vector<int>)/1024 37.7 ns 35.8 ns 1.1x rng::fill_n(vector<int>)/8192 253 ns 250 ns 1.0x rng::fill_n(vector<int>)/65536 2922 ns 2930 ns 1.0x rng::fill_n(vector<int>)/1048576 79739 ns 79742 ns 1.0x ``` #### `fill` ``` -------------------------------------------------------------------------- Benchmark Before After Speedup -------------------------------------------------------------------------- std::fill(deque<int>)/32 13.7 ns 2.45 ns 5.6x std::fill(deque<int>)/50 21.7 ns 4.57 ns 4.7x std::fill(deque<int>)/1024 367 ns 38.5 ns 9.5x std::fill(deque<int>)/8192 2896 ns 247 ns 11.7x std::fill(deque<int>)/65536 23723 ns 2907 ns 8.2x std::fill(deque<int>)/1048576 379043 ns 79885 ns 4.7x rng::fill(deque<int>)/32 13.6 ns 2.70 ns 5.0x rng::fill(deque<int>)/50 23.4 ns 3.94 ns 5.9x rng::fill(deque<int>)/1024 377 ns 37.9 ns 9.9x rng::fill(deque<int>)/8192 2914 ns 286 ns 10.2x rng::fill(deque<int>)/65536 23612 ns 2939 ns 8.0x rng::fill(deque<int>)/1048576 379841 ns 80079 ns 4.7x std::fill(vector<int>)/32 1.99 ns 1.79 ns 1.1x std::fill(vector<int>)/50 3.05 ns 3.06 ns 1.0x std::fill(vector<int>)/1024 37.6 ns 38.0 ns 1.0x std::fill(vector<int>)/8192 255 ns 257 ns 1.0x std::fill(vector<int>)/65536 2966 ns 2981 ns 1.0x std::fill(vector<int>)/1048576 78300 ns 80348 ns 1.0x rng::fill(vector<int>)/32 1.77 ns 1.75 ns 1.0x rng::fill(vector<int>)/50 4.85 ns 2.31 ns 2.1x rng::fill(vector<int>)/1024 39.6 ns 36.1 ns 1.1x rng::fill(vector<int>)/8192 238 ns 251 ns 0.9x rng::fill(vector<int>)/65536 2941 ns 2918 ns 1.0x rng::fill(vector<int>)/1048576 80497 ns 80442 ns 1.0x ``` --------- Co-authored-by: Louis Dionne <ldionne.2@gmail.com> Co-authored-by: A. Jiang <de34@live.cn> |
Filter
ldionne-old-macbook-results test results
| Run | Order | Start Time | Duration |
|---|---|---|---|
| Current | 556296 | 2025-12-16T16:40:01 | 0:00:00 |
| Previous | 556176 | 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 | 6 | 0 |
| Added Tests | 0 | 16 |
| Unchanged Tests | 73 | 64 |
| Total Tests | 80 |
| Performance Regressions - execution_time | Δ | Previous | Current | σ | Δ (B) | σ (B) |
|---|---|---|---|---|---|---|
| 729_abc_r | 1.62% | 18.680 | 18.984 | - | 0.00% | - |
| Performance Improvements - execution_time | Δ | Previous | Current | σ | Δ (B) | σ (B) |
|---|---|---|---|---|---|---|
| 706_stockfish_r | -4.16% | 21.513 | 20.618 | - | 0.00% | - |
| 736_ocio_r | -3.43% | 16.745 | 16.170 | - | 0.00% | - |
| 707_ntest_r | -3.16% | 16.607 | 16.083 | - | 0.00% | - |
| 710_omnetpp_r | -2.91% | 8.559 | 8.310 | - | 0.00% | - |
| 709_cactus_r | -2.46% | 19.739 | 19.254 | - | 0.00% | - |
| 727_cppcheck_r | -1.68% | 24.874 | 24.456 | - | 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.21s