[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