llvm-project
2d106844 - [libcxx] Optimize `ranges::fold_left_with_iter` for segmented iterators (#177853)

Commit
2 days ago
[libcxx] Optimize `ranges::fold_left_with_iter` for segmented iterators (#177853) Part of https://github.com/llvm/llvm-project/issues/102817. This patch attempts to optimize the performance of `ranges::fold_left_with_iter` for segmented iterators. - before ``` # | rng::fold_left(vector<int>)/8 2.78 ns 2.78 ns 241953718 # | rng::fold_left(vector<int>)/32 12.2 ns 12.2 ns 57579851 # | rng::fold_left(vector<int>)/50 19.2 ns 19.2 ns 36487764 # | rng::fold_left(vector<int>)/8192 3226 ns 3226 ns 216811 # | rng::fold_left(vector<int>)/1048576 441842 ns 441839 ns 1592 # | rng::fold_left(deque<int>)/8 2.83 ns 2.83 ns 243888678 # | rng::fold_left(deque<int>)/32 16.6 ns 16.6 ns 42297458 # | rng::fold_left(deque<int>)/50 22.3 ns 22.3 ns 31387998 # | rng::fold_left(deque<int>)/8192 2492 ns 2492 ns 281637 # | rng::fold_left(deque<int>)/1048576 324936 ns 324936 ns 2154 # | rng::fold_left(list<int>)/8 2.54 ns 2.54 ns 275946635 # | rng::fold_left(list<int>)/32 16.2 ns 16.2 ns 42901634 # | rng::fold_left(list<int>)/50 54.7 ns 54.7 ns 12767450 # | rng::fold_left(list<int>)/8192 15154 ns 15154 ns 56744 # | rng::fold_left(list<int>)/1048576 4976906 ns 4976867 ns 158 ``` - after ``` # | rng::fold_left(vector<int>)/8 2.74 ns 2.74 ns 255954900 # | rng::fold_left(vector<int>)/32 12.1 ns 12.1 ns 57843462 # | rng::fold_left(vector<int>)/50 19.2 ns 19.2 ns 36422594 # | rng::fold_left(vector<int>)/8192 3202 ns 3202 ns 218265 # | rng::fold_left(vector<int>)/1048576 435718 ns 435709 ns 1609 # | rng::fold_left(deque<int>)/8 2.52 ns 2.52 ns 277288254 # | rng::fold_left(deque<int>)/32 14.1 ns 14.1 ns 52244463 # | rng::fold_left(deque<int>)/50 16.2 ns 16.2 ns 43131857 # | rng::fold_left(deque<int>)/8192 1695 ns 1695 ns 415620 # | rng::fold_left(deque<int>)/1048576 277729 ns 277731 ns 2532 # | rng::fold_left(list<int>)/8 2.55 ns 2.55 ns 277025050 # | rng::fold_left(list<int>)/32 16.2 ns 16.2 ns 43058857 # | rng::fold_left(list<int>)/50 54.7 ns 54.7 ns 12705516 # | rng::fold_left(list<int>)/8192 15236 ns 15235 ns 56840 # | rng::fold_left(list<int>)/1048576 4827263 ns 4827147 ns 152 ```
Author
Parents
Loading