[libcxx-commits] [libcxx] [libc++] Improve the performance of std::make_heap a bit (PR #154092)

via libcxx-commits libcxx-commits at lists.llvm.org
Sun Sep 21 02:13:06 PDT 2025


nukyan wrote:

Using subscript operator in `__sift_down()` slows down iterators for `std::deque`. It this worth?

```
-----------------------------------------------------------------------------------------
Benchmark                                                                Before     After
-----------------------------------------------------------------------------------------
BM_MakeHeap_uint32_Random_16777216                                      10.3 ns   12.8 ns
BM_MakeHeap_uint32_Ascending_16777216                                   7.80 ns   10.4 ns
BM_MakeHeap_uint32_Descending_16777216                                  1.64 ns   2.46 ns
BM_MakeHeap_uint32_SingleElement_16777216                               7.69 ns   10.4 ns
BM_MakeHeap_uint32_PipeOrgan_16777216                                   7.90 ns   10.5 ns
BM_MakeHeap_uint32_Heap_16777216                                        1.64 ns   2.46 ns
BM_MakeHeap_uint32_QuickSortAdversary_16777216                          1.66 ns   2.49 ns
BM_MakeHeap_uint64_Random_16777216                                      12.8 ns   15.8 ns
BM_MakeHeap_uint64_Ascending_16777216                                   10.5 ns   13.8 ns
BM_MakeHeap_uint64_Descending_16777216                                  1.94 ns   2.70 ns
BM_MakeHeap_uint64_SingleElement_16777216                               10.5 ns   13.9 ns
BM_MakeHeap_uint64_PipeOrgan_16777216                                   10.5 ns   13.9 ns
BM_MakeHeap_uint64_Heap_16777216                                        1.93 ns   2.70 ns
BM_MakeHeap_uint64_QuickSortAdversary_16777216                          1.94 ns   2.72 ns
BM_MakeHeap_pair<uint32, uint32>_Random_16777216                        15.2 ns   16.4 ns
BM_MakeHeap_pair<uint32, uint32>_Ascending_16777216                     10.5 ns   12.3 ns
BM_MakeHeap_pair<uint32, uint32>_Descending_16777216                    3.60 ns   3.89 ns
BM_MakeHeap_pair<uint32, uint32>_SingleElement_16777216                 10.4 ns   12.4 ns
BM_MakeHeap_pair<uint32, uint32>_PipeOrgan_16777216                     10.5 ns   12.3 ns
BM_MakeHeap_pair<uint32, uint32>_Heap_16777216                          3.65 ns   3.84 ns
BM_MakeHeap_pair<uint32, uint32>_QuickSortAdversary_16777216            10.4 ns   12.1 ns
BM_MakeHeap_tuple<uint32, uint64, uint32>_Random_16777216               27.3 ns   28.6 ns
BM_MakeHeap_tuple<uint32, uint64, uint32>_Ascending_16777216            18.4 ns   22.6 ns
BM_MakeHeap_tuple<uint32, uint64, uint32>_Descending_16777216           5.58 ns   6.08 ns
BM_MakeHeap_tuple<uint32, uint64, uint32>_SingleElement_16777216        18.6 ns   24.0 ns
BM_MakeHeap_tuple<uint32, uint64, uint32>_PipeOrgan_16777216            18.3 ns   22.6 ns
BM_MakeHeap_tuple<uint32, uint64, uint32>_Heap_16777216                 6.20 ns   6.26 ns
BM_MakeHeap_tuple<uint32, uint64, uint32>_QuickSortAdversary_16777216   17.6 ns   21.3 ns
BM_MakeHeap_string_Random_16777216                                       257 ns    216 ns
BM_MakeHeap_string_Ascending_16777216                                    270 ns    226 ns
BM_MakeHeap_string_Descending_16777216                                  77.2 ns   80.2 ns
BM_MakeHeap_string_SingleElement_16777216                               88.3 ns   77.2 ns
BM_MakeHeap_string_PipeOrgan_16777216                                    267 ns    220 ns
BM_MakeHeap_string_Heap_16777216                                        36.1 ns   36.3 ns
BM_MakeHeap_string_QuickSortAdversary_16777216                          95.6 ns   88.1 ns
BM_MakeHeap_float_Random_16777216                                       10.6 ns   13.6 ns
BM_MakeHeap_float_Ascending_16777216                                    6.05 ns   11.1 ns
BM_MakeHeap_float_Descending_16777216                                   1.60 ns   2.68 ns
BM_MakeHeap_float_SingleElement_16777216                                5.81 ns   11.2 ns
BM_MakeHeap_float_PipeOrgan_16777216                                    5.91 ns   11.2 ns
BM_MakeHeap_float_Heap_16777216                                         1.60 ns   2.68 ns
BM_MakeHeap_float_QuickSortAdversary_16777216                           1.60 ns   2.70 ns
```

https://github.com/llvm/llvm-project/pull/154092


More information about the libcxx-commits mailing list