<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/libcxx/include/__algorithm, branch users/fmayer/spr/main.wip-smartpointers</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[libc++][IWYU] Remove `std::move` header in `std::for_each` (#164272)</title>
<updated>2025-10-21T15:03:09+00:00</updated>
<author>
<name>Connector Switch</name>
<email>c8ef@outlook.com</email>
</author>
<published>2025-10-21T15:03:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=abf80b54bc752dc44f821da1fa9d2d3117a3c8c0'/>
<id>abf80b54bc752dc44f821da1fa9d2d3117a3c8c0</id>
<content type='text'>
It seems this was accidentally included; there's no use of std::move in
this header.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It seems this was accidentally included; there's no use of std::move in
this header.</pre>
</div>
</content>
</entry>
<entry>
<title>[libcxx] Optimize `std::generate_n` for segmented iterators (#164266)</title>
<updated>2025-10-21T10:01:36+00:00</updated>
<author>
<name>Connector Switch</name>
<email>c8ef@outlook.com</email>
</author>
<published>2025-10-21T10:01:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c06ae43e26aa5cd472d0b25d5904c44d20e84067'/>
<id>c06ae43e26aa5cd472d0b25d5904c44d20e84067</id>
<content type='text'>
Part of #102817.

This is a natural follow-up to #163006. We are forwarding
`std::generate_n` to `std::__for_each_n` (`std::for_each_n` needs
c++17), resulting in improved performance for segmented iterators.

before:

```
std::generate_n(deque&lt;int&gt;)/32          17.5 ns         17.3 ns     40727273
std::generate_n(deque&lt;int&gt;)/50          25.7 ns         25.5 ns     26352941
std::generate_n(deque&lt;int&gt;)/1024         490 ns          487 ns      1445161
std::generate_n(deque&lt;int&gt;)/8192        3908 ns         3924 ns       179200
```

after:

```
std::generate_n(deque&lt;int&gt;)/32          11.1 ns         11.0 ns     64000000
std::generate_n(deque&lt;int&gt;)/50          16.1 ns         16.0 ns     44800000
std::generate_n(deque&lt;int&gt;)/1024         291 ns          292 ns      2357895
std::generate_n(deque&lt;int&gt;)/8192        2269 ns         2250 ns       298667
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Part of #102817.

This is a natural follow-up to #163006. We are forwarding
`std::generate_n` to `std::__for_each_n` (`std::for_each_n` needs
c++17), resulting in improved performance for segmented iterators.

before:

```
std::generate_n(deque&lt;int&gt;)/32          17.5 ns         17.3 ns     40727273
std::generate_n(deque&lt;int&gt;)/50          25.7 ns         25.5 ns     26352941
std::generate_n(deque&lt;int&gt;)/1024         490 ns          487 ns      1445161
std::generate_n(deque&lt;int&gt;)/8192        3908 ns         3924 ns       179200
```

after:

```
std::generate_n(deque&lt;int&gt;)/32          11.1 ns         11.0 ns     64000000
std::generate_n(deque&lt;int&gt;)/50          16.1 ns         16.0 ns     44800000
std::generate_n(deque&lt;int&gt;)/1024         291 ns          292 ns      2357895
std::generate_n(deque&lt;int&gt;)/8192        2269 ns         2250 ns       298667
```</pre>
</div>
</content>
</entry>
<entry>
<title>[libcxx] Optimize std::generate for segmented iterators (#163006)</title>
<updated>2025-10-20T11:37:33+00:00</updated>
<author>
<name>Connector Switch</name>
<email>c8ef@outlook.com</email>
</author>
<published>2025-10-20T11:37:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=46e88169284aadb06fafcbe18ff440ff0fdebfa3'/>
<id>46e88169284aadb06fafcbe18ff440ff0fdebfa3</id>
<content type='text'>
Part of #102817.

This patch attempts to optimize the performance of `std::generate` for
segmented iterators. Below are the benchmark numbers from
`libcxx\test\benchmarks\algorithms\modifying\generate.bench.cpp`. Test
cases that use segmented iterators have also been added.

- before

```
std::generate(deque&lt;int&gt;)/32           194 ns          193 ns      3733333
std::generate(deque&lt;int&gt;)/50           276 ns          276 ns      2488889
std::generate(deque&lt;int&gt;)/1024        5096 ns         5022 ns       112000
std::generate(deque&lt;int&gt;)/8192       40806 ns        40806 ns        17231
```

- after

```
std::generate(deque&lt;int&gt;)/32           106 ns          105 ns      6400000
std::generate(deque&lt;int&gt;)/50           139 ns          138 ns      4977778
std::generate(deque&lt;int&gt;)/1024        2713 ns         2699 ns       248889
std::generate(deque&lt;int&gt;)/8192       18983 ns        19252 ns        37333
```

---------

Co-authored-by: A. Jiang &lt;de34@live.cn&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Part of #102817.

This patch attempts to optimize the performance of `std::generate` for
segmented iterators. Below are the benchmark numbers from
`libcxx\test\benchmarks\algorithms\modifying\generate.bench.cpp`. Test
cases that use segmented iterators have also been added.

- before

```
std::generate(deque&lt;int&gt;)/32           194 ns          193 ns      3733333
std::generate(deque&lt;int&gt;)/50           276 ns          276 ns      2488889
std::generate(deque&lt;int&gt;)/1024        5096 ns         5022 ns       112000
std::generate(deque&lt;int&gt;)/8192       40806 ns        40806 ns        17231
```

- after

```
std::generate(deque&lt;int&gt;)/32           106 ns          105 ns      6400000
std::generate(deque&lt;int&gt;)/50           139 ns          138 ns      4977778
std::generate(deque&lt;int&gt;)/1024        2713 ns         2699 ns       248889
std::generate(deque&lt;int&gt;)/8192       18983 ns        19252 ns        37333
```

---------

Co-authored-by: A. Jiang &lt;de34@live.cn&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Optimize std::{,ranges}::{fill,fill_n} for segmented iterators (#132665)</title>
<updated>2025-10-16T23:41:24+00:00</updated>
<author>
<name>Peng Liu</name>
<email>winner245@hotmail.com</email>
</author>
<published>2025-10-16T23:41:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d0cee6939a1a889b14dcfc0bb049f38063c81f9b'/>
<id>d0cee6939a1a889b14dcfc0bb049f38063c81f9b</id>
<content type='text'>
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&lt;int&gt;` iterators, the
performance improvements are above 10x for all these algorithms. The
optimization also enables filling segmented memory of `deque&lt;int&gt;` to
approach the performance of filling contiguous memory of `vector&lt;int&gt;`.


Benchmark results comparing the before and after implementations are
provided below. For additional context, we’ve included `vector&lt;int&gt;`
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&lt;int&gt;)/32              11.4 ns          2.28 ns        5.0x
std::fill_n(deque&lt;int&gt;)/50              19.7 ns          3.40 ns        5.8x
std::fill_n(deque&lt;int&gt;)/1024             391 ns          37.3 ns       10.5x
std::fill_n(deque&lt;int&gt;)/8192            3174 ns           301 ns       10.5x
std::fill_n(deque&lt;int&gt;)/65536          26504 ns          2951 ns        9.0x
std::fill_n(deque&lt;int&gt;)/1048576       407960 ns         80658 ns        5.1x
rng::fill_n(deque&lt;int&gt;)/32              14.3 ns          2.15 ns        6.6x
rng::fill_n(deque&lt;int&gt;)/50              20.2 ns          3.22 ns        6.3x
rng::fill_n(deque&lt;int&gt;)/1024             381 ns          37.8 ns       10.1x
rng::fill_n(deque&lt;int&gt;)/8192            3101 ns           294 ns       10.5x
rng::fill_n(deque&lt;int&gt;)/65536          25098 ns          2926 ns        8.6x
rng::fill_n(deque&lt;int&gt;)/1048576       394342 ns         78874 ns        5.0x
std::fill_n(vector&lt;int&gt;)/32             1.76 ns          1.72 ns        1.0x
std::fill_n(vector&lt;int&gt;)/50             3.00 ns          2.73 ns        1.1x
std::fill_n(vector&lt;int&gt;)/1024           38.4 ns          37.9 ns        1.0x
std::fill_n(vector&lt;int&gt;)/8192            258 ns           252 ns        1.0x
std::fill_n(vector&lt;int&gt;)/65536          2993 ns          2889 ns        1.0x
std::fill_n(vector&lt;int&gt;)/1048576       80328 ns         80468 ns        1.0x
rng::fill_n(vector&lt;int&gt;)/32             1.99 ns          1.35 ns        1.5x
rng::fill_n(vector&lt;int&gt;)/50             2.66 ns          2.12 ns        1.3x
rng::fill_n(vector&lt;int&gt;)/1024           37.7 ns          35.8 ns        1.1x
rng::fill_n(vector&lt;int&gt;)/8192            253 ns           250 ns        1.0x
rng::fill_n(vector&lt;int&gt;)/65536          2922 ns          2930 ns        1.0x
rng::fill_n(vector&lt;int&gt;)/1048576       79739 ns         79742 ns        1.0x
```

#### `fill`

```
--------------------------------------------------------------------------
Benchmark                              Before            After     Speedup
--------------------------------------------------------------------------
std::fill(deque&lt;int&gt;)/32              13.7 ns          2.45 ns        5.6x
std::fill(deque&lt;int&gt;)/50              21.7 ns          4.57 ns        4.7x
std::fill(deque&lt;int&gt;)/1024             367 ns          38.5 ns        9.5x
std::fill(deque&lt;int&gt;)/8192            2896 ns           247 ns       11.7x
std::fill(deque&lt;int&gt;)/65536          23723 ns          2907 ns        8.2x
std::fill(deque&lt;int&gt;)/1048576       379043 ns         79885 ns        4.7x
rng::fill(deque&lt;int&gt;)/32              13.6 ns          2.70 ns        5.0x
rng::fill(deque&lt;int&gt;)/50              23.4 ns          3.94 ns        5.9x
rng::fill(deque&lt;int&gt;)/1024             377 ns          37.9 ns        9.9x
rng::fill(deque&lt;int&gt;)/8192            2914 ns           286 ns       10.2x
rng::fill(deque&lt;int&gt;)/65536          23612 ns          2939 ns        8.0x
rng::fill(deque&lt;int&gt;)/1048576       379841 ns         80079 ns        4.7x
std::fill(vector&lt;int&gt;)/32             1.99 ns          1.79 ns        1.1x
std::fill(vector&lt;int&gt;)/50             3.05 ns          3.06 ns        1.0x
std::fill(vector&lt;int&gt;)/1024           37.6 ns          38.0 ns        1.0x
std::fill(vector&lt;int&gt;)/8192            255 ns           257 ns        1.0x
std::fill(vector&lt;int&gt;)/65536          2966 ns          2981 ns        1.0x
std::fill(vector&lt;int&gt;)/1048576       78300 ns         80348 ns        1.0x
rng::fill(vector&lt;int&gt;)/32             1.77 ns          1.75 ns        1.0x
rng::fill(vector&lt;int&gt;)/50             4.85 ns          2.31 ns        2.1x
rng::fill(vector&lt;int&gt;)/1024           39.6 ns          36.1 ns        1.1x
rng::fill(vector&lt;int&gt;)/8192            238 ns           251 ns        0.9x
rng::fill(vector&lt;int&gt;)/65536          2941 ns          2918 ns        1.0x
rng::fill(vector&lt;int&gt;)/1048576       80497 ns         80442 ns        1.0x
```

---------

Co-authored-by: Louis Dionne &lt;ldionne.2@gmail.com&gt;
Co-authored-by: A. Jiang &lt;de34@live.cn&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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&lt;int&gt;` iterators, the
performance improvements are above 10x for all these algorithms. The
optimization also enables filling segmented memory of `deque&lt;int&gt;` to
approach the performance of filling contiguous memory of `vector&lt;int&gt;`.


Benchmark results comparing the before and after implementations are
provided below. For additional context, we’ve included `vector&lt;int&gt;`
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&lt;int&gt;)/32              11.4 ns          2.28 ns        5.0x
std::fill_n(deque&lt;int&gt;)/50              19.7 ns          3.40 ns        5.8x
std::fill_n(deque&lt;int&gt;)/1024             391 ns          37.3 ns       10.5x
std::fill_n(deque&lt;int&gt;)/8192            3174 ns           301 ns       10.5x
std::fill_n(deque&lt;int&gt;)/65536          26504 ns          2951 ns        9.0x
std::fill_n(deque&lt;int&gt;)/1048576       407960 ns         80658 ns        5.1x
rng::fill_n(deque&lt;int&gt;)/32              14.3 ns          2.15 ns        6.6x
rng::fill_n(deque&lt;int&gt;)/50              20.2 ns          3.22 ns        6.3x
rng::fill_n(deque&lt;int&gt;)/1024             381 ns          37.8 ns       10.1x
rng::fill_n(deque&lt;int&gt;)/8192            3101 ns           294 ns       10.5x
rng::fill_n(deque&lt;int&gt;)/65536          25098 ns          2926 ns        8.6x
rng::fill_n(deque&lt;int&gt;)/1048576       394342 ns         78874 ns        5.0x
std::fill_n(vector&lt;int&gt;)/32             1.76 ns          1.72 ns        1.0x
std::fill_n(vector&lt;int&gt;)/50             3.00 ns          2.73 ns        1.1x
std::fill_n(vector&lt;int&gt;)/1024           38.4 ns          37.9 ns        1.0x
std::fill_n(vector&lt;int&gt;)/8192            258 ns           252 ns        1.0x
std::fill_n(vector&lt;int&gt;)/65536          2993 ns          2889 ns        1.0x
std::fill_n(vector&lt;int&gt;)/1048576       80328 ns         80468 ns        1.0x
rng::fill_n(vector&lt;int&gt;)/32             1.99 ns          1.35 ns        1.5x
rng::fill_n(vector&lt;int&gt;)/50             2.66 ns          2.12 ns        1.3x
rng::fill_n(vector&lt;int&gt;)/1024           37.7 ns          35.8 ns        1.1x
rng::fill_n(vector&lt;int&gt;)/8192            253 ns           250 ns        1.0x
rng::fill_n(vector&lt;int&gt;)/65536          2922 ns          2930 ns        1.0x
rng::fill_n(vector&lt;int&gt;)/1048576       79739 ns         79742 ns        1.0x
```

#### `fill`

```
--------------------------------------------------------------------------
Benchmark                              Before            After     Speedup
--------------------------------------------------------------------------
std::fill(deque&lt;int&gt;)/32              13.7 ns          2.45 ns        5.6x
std::fill(deque&lt;int&gt;)/50              21.7 ns          4.57 ns        4.7x
std::fill(deque&lt;int&gt;)/1024             367 ns          38.5 ns        9.5x
std::fill(deque&lt;int&gt;)/8192            2896 ns           247 ns       11.7x
std::fill(deque&lt;int&gt;)/65536          23723 ns          2907 ns        8.2x
std::fill(deque&lt;int&gt;)/1048576       379043 ns         79885 ns        4.7x
rng::fill(deque&lt;int&gt;)/32              13.6 ns          2.70 ns        5.0x
rng::fill(deque&lt;int&gt;)/50              23.4 ns          3.94 ns        5.9x
rng::fill(deque&lt;int&gt;)/1024             377 ns          37.9 ns        9.9x
rng::fill(deque&lt;int&gt;)/8192            2914 ns           286 ns       10.2x
rng::fill(deque&lt;int&gt;)/65536          23612 ns          2939 ns        8.0x
rng::fill(deque&lt;int&gt;)/1048576       379841 ns         80079 ns        4.7x
std::fill(vector&lt;int&gt;)/32             1.99 ns          1.79 ns        1.1x
std::fill(vector&lt;int&gt;)/50             3.05 ns          3.06 ns        1.0x
std::fill(vector&lt;int&gt;)/1024           37.6 ns          38.0 ns        1.0x
std::fill(vector&lt;int&gt;)/8192            255 ns           257 ns        1.0x
std::fill(vector&lt;int&gt;)/65536          2966 ns          2981 ns        1.0x
std::fill(vector&lt;int&gt;)/1048576       78300 ns         80348 ns        1.0x
rng::fill(vector&lt;int&gt;)/32             1.77 ns          1.75 ns        1.0x
rng::fill(vector&lt;int&gt;)/50             4.85 ns          2.31 ns        2.1x
rng::fill(vector&lt;int&gt;)/1024           39.6 ns          36.1 ns        1.1x
rng::fill(vector&lt;int&gt;)/8192            238 ns           251 ns        0.9x
rng::fill(vector&lt;int&gt;)/65536          2941 ns          2918 ns        1.0x
rng::fill(vector&lt;int&gt;)/1048576       80497 ns         80442 ns        1.0x
```

---------

Co-authored-by: Louis Dionne &lt;ldionne.2@gmail.com&gt;
Co-authored-by: A. Jiang &lt;de34@live.cn&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Avoid transitive inclusion for `&lt;__algorithm/find.h&gt;` (#162508)</title>
<updated>2025-10-09T09:57:59+00:00</updated>
<author>
<name>A. Jiang</name>
<email>de34@live.cn</email>
</author>
<published>2025-10-09T09:57:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d6d5026b5107b940d7a7853ab16480f83c14384d'/>
<id>d6d5026b5107b940d7a7853ab16480f83c14384d</id>
<content type='text'>
Currently, `size_t` and `__libcpp_is_constant_evaluated` are obtained by
transitive inclusion in `&lt;__algorithm/find.h&gt;` when `&lt;cwchar&gt;` is not
included. This broke module build when `_LIBCPP_HAS_WIDE_CHARACTERS` is
`1` and caused CI failure. We should explicitly include the
corresponding internal headers.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, `size_t` and `__libcpp_is_constant_evaluated` are obtained by
transitive inclusion in `&lt;__algorithm/find.h&gt;` when `&lt;cwchar&gt;` is not
included. This broke module build when `_LIBCPP_HAS_WIDE_CHARACTERS` is
`1` and caused CI failure. We should explicitly include the
corresponding internal headers.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Make the naming of the iterator_traits aliases consistent (#161661)</title>
<updated>2025-10-07T12:42:11+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-10-07T12:42:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=70b7874ab2e11a92b550397944d1f2b05e01398b'/>
<id>70b7874ab2e11a92b550397944d1f2b05e01398b</id>
<content type='text'>
This renames all the `iterator_traits` alises to be
`__iterator_&lt;type-name&gt;`. e.g `iterator_traits&lt;T&gt;::value_type` will be
`__iterator_value_type&lt;T&gt;`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This renames all the `iterator_traits` alises to be
`__iterator_&lt;type-name&gt;`. e.g `iterator_traits&lt;T&gt;::value_type` will be
`__iterator_value_type&lt;T&gt;`.</pre>
</div>
</content>
</entry>
<entry>
<title>Reapply "[libc++] Avoid constructing additional objects when using map::at" (#160738) (#161485)</title>
<updated>2025-10-02T09:15:33+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-10-02T09:15:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=55803b8af1e4ddde1c0c43a9cd283133205c295d'/>
<id>55803b8af1e4ddde1c0c43a9cd283133205c295d</id>
<content type='text'>
This reverts commit b86aaacf28b358b187071bc87075f1faa2d65c4e.

The issue in LLVM has been fixed now.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit b86aaacf28b358b187071bc87075f1faa2d65c4e.

The issue in LLVM has been fixed now.</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Fix &lt;__algorithm/find.h&gt; when using -flax-vector-conversions=none (#161362)</title>
<updated>2025-10-02T08:05:26+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-10-02T08:05:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=66558d70dc11fd04ce908ac94424ed7c6bd9e35b'/>
<id>66558d70dc11fd04ce908ac94424ed7c6bd9e35b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[libc++] Vectorize std::find (#156431)</title>
<updated>2025-09-29T09:10:19+00:00</updated>
<author>
<name>Nikolas Klauser</name>
<email>nikolasklauser@berlin.de</email>
</author>
<published>2025-09-29T09:10:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=97367d1046a2ec81e9b4e708ae7acdc83d99dcf7'/>
<id>97367d1046a2ec81e9b4e708ae7acdc83d99dcf7</id>
<content type='text'>
```
Apple M4:
-----------------------------------------------------------------------------
Benchmark                                                 old             new
-----------------------------------------------------------------------------
std::find(vector&lt;char&gt;) (bail 25%)/8                  1.43 ns         1.44 ns
std::find(vector&lt;char&gt;) (bail 25%)/1024               5.54 ns         5.59 ns
std::find(vector&lt;char&gt;) (bail 25%)/8192               38.4 ns         39.1 ns
std::find(vector&lt;char&gt;) (bail 25%)/32768               134 ns          136 ns
std::find(vector&lt;int&gt;) (bail 25%)/8                   1.56 ns         1.57 ns
std::find(vector&lt;int&gt;) (bail 25%)/1024                65.3 ns         65.4 ns
std::find(vector&lt;int&gt;) (bail 25%)/8192                 465 ns          464 ns
std::find(vector&lt;int&gt;) (bail 25%)/32768               1832 ns         1832 ns
std::find(vector&lt;long long&gt;) (bail 25%)/8            0.920 ns         1.20 ns
std::find(vector&lt;long long&gt;) (bail 25%)/1024          65.2 ns         31.2 ns
std::find(vector&lt;long long&gt;) (bail 25%)/8192           464 ns          255 ns
std::find(vector&lt;long long&gt;) (bail 25%)/32768         1833 ns          992 ns
std::find(vector&lt;char&gt;) (process all)/8               1.21 ns         1.22 ns
std::find(vector&lt;char&gt;) (process all)/50              1.92 ns         1.93 ns
std::find(vector&lt;char&gt;) (process all)/1024            16.6 ns         16.9 ns
std::find(vector&lt;char&gt;) (process all)/8192             134 ns          136 ns
std::find(vector&lt;char&gt;) (process all)/32768            488 ns          503 ns
std::find(vector&lt;int&gt;) (process all)/8                2.45 ns         2.48 ns
std::find(vector&lt;int&gt;) (process all)/50               12.7 ns         12.7 ns
std::find(vector&lt;int&gt;) (process all)/1024              236 ns          236 ns
std::find(vector&lt;int&gt;) (process all)/8192             1830 ns         1834 ns
std::find(vector&lt;int&gt;) (process all)/32768            7351 ns         7346 ns
std::find(vector&lt;long long&gt;) (process all)/8          2.02 ns         1.45 ns
std::find(vector&lt;long long&gt;) (process all)/50         12.0 ns         6.12 ns
std::find(vector&lt;long long&gt;) (process all)/1024        235 ns          123 ns
std::find(vector&lt;long long&gt;) (process all)/8192       1830 ns          983 ns
std::find(vector&lt;long long&gt;) (process all)/32768      7306 ns         3969 ns
std::find(vector&lt;bool&gt;) (process all)/8               1.14 ns         1.15 ns
std::find(vector&lt;bool&gt;) (process all)/50              1.16 ns         1.17 ns
std::find(vector&lt;bool&gt;) (process all)/1024            4.51 ns         4.53 ns
std::find(vector&lt;bool&gt;) (process all)/8192            33.6 ns         33.5 ns
std::find(vector&lt;bool&gt;) (process all)/1048576         3660 ns         3660 ns
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
```
Apple M4:
-----------------------------------------------------------------------------
Benchmark                                                 old             new
-----------------------------------------------------------------------------
std::find(vector&lt;char&gt;) (bail 25%)/8                  1.43 ns         1.44 ns
std::find(vector&lt;char&gt;) (bail 25%)/1024               5.54 ns         5.59 ns
std::find(vector&lt;char&gt;) (bail 25%)/8192               38.4 ns         39.1 ns
std::find(vector&lt;char&gt;) (bail 25%)/32768               134 ns          136 ns
std::find(vector&lt;int&gt;) (bail 25%)/8                   1.56 ns         1.57 ns
std::find(vector&lt;int&gt;) (bail 25%)/1024                65.3 ns         65.4 ns
std::find(vector&lt;int&gt;) (bail 25%)/8192                 465 ns          464 ns
std::find(vector&lt;int&gt;) (bail 25%)/32768               1832 ns         1832 ns
std::find(vector&lt;long long&gt;) (bail 25%)/8            0.920 ns         1.20 ns
std::find(vector&lt;long long&gt;) (bail 25%)/1024          65.2 ns         31.2 ns
std::find(vector&lt;long long&gt;) (bail 25%)/8192           464 ns          255 ns
std::find(vector&lt;long long&gt;) (bail 25%)/32768         1833 ns          992 ns
std::find(vector&lt;char&gt;) (process all)/8               1.21 ns         1.22 ns
std::find(vector&lt;char&gt;) (process all)/50              1.92 ns         1.93 ns
std::find(vector&lt;char&gt;) (process all)/1024            16.6 ns         16.9 ns
std::find(vector&lt;char&gt;) (process all)/8192             134 ns          136 ns
std::find(vector&lt;char&gt;) (process all)/32768            488 ns          503 ns
std::find(vector&lt;int&gt;) (process all)/8                2.45 ns         2.48 ns
std::find(vector&lt;int&gt;) (process all)/50               12.7 ns         12.7 ns
std::find(vector&lt;int&gt;) (process all)/1024              236 ns          236 ns
std::find(vector&lt;int&gt;) (process all)/8192             1830 ns         1834 ns
std::find(vector&lt;int&gt;) (process all)/32768            7351 ns         7346 ns
std::find(vector&lt;long long&gt;) (process all)/8          2.02 ns         1.45 ns
std::find(vector&lt;long long&gt;) (process all)/50         12.0 ns         6.12 ns
std::find(vector&lt;long long&gt;) (process all)/1024        235 ns          123 ns
std::find(vector&lt;long long&gt;) (process all)/8192       1830 ns          983 ns
std::find(vector&lt;long long&gt;) (process all)/32768      7306 ns         3969 ns
std::find(vector&lt;bool&gt;) (process all)/8               1.14 ns         1.15 ns
std::find(vector&lt;bool&gt;) (process all)/50              1.16 ns         1.17 ns
std::find(vector&lt;bool&gt;) (process all)/1024            4.51 ns         4.53 ns
std::find(vector&lt;bool&gt;) (process all)/8192            33.6 ns         33.5 ns
std::find(vector&lt;bool&gt;) (process all)/1048576         3660 ns         3660 ns
```</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[libc++] Avoid constructing additional objects when using map::at" (#160738)</title>
<updated>2025-09-25T22:10:37+00:00</updated>
<author>
<name>Andrew Lazarev</name>
<email>alazarev@google.com</email>
</author>
<published>2025-09-25T22:10:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b86aaacf28b358b187071bc87075f1faa2d65c4e'/>
<id>b86aaacf28b358b187071bc87075f1faa2d65c4e</id>
<content type='text'>
Reverts llvm/llvm-project#157866

It breaks a lot of sanitizer buildbots</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#157866

It breaks a lot of sanitizer buildbots</pre>
</div>
</content>
</entry>
</feed>
