[libcxx-commits] [libcxx] [libc++][pstl] Implement pstl std::min_element (PR #173970)
Marcell Leleszi via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Dec 30 02:23:36 PST 2025
mleleszi wrote:
Benchmark results on an M1 mac with libdispatch backend
```
BM_min_element<int,_Seq,_MinFirst>/64.execution_time 648.2662291106913
BM_min_element<int,_Seq,_MinFirst>/512.execution_time 5247.762924411529
BM_min_element<int,_Seq,_MinFirst>/1024.execution_time 9306.808950896737
BM_min_element<int,_Seq,_MinFirst>/4096.execution_time 36841.670188940894
BM_min_element<int,_Seq,_MinFirst>/65536.execution_time 587980.2800379134
BM_min_element<int,_Seq,_MinFirst>/262144.execution_time 2291284.115762001
BM_min_element<int,_Unseq,_MinFirst>/64.execution_time 373.6198404530167
BM_min_element<int,_Unseq,_MinFirst>/512.execution_time 1840.638028767968
BM_min_element<int,_Unseq,_MinFirst>/1024.execution_time 3428.4622625079787
BM_min_element<int,_Unseq,_MinFirst>/4096.execution_time 13156.196682247959
BM_min_element<int,_Unseq,_MinFirst>/65536.execution_time 209583.9282688733
BM_min_element<int,_Unseq,_MinFirst>/262144.execution_time 838070.6954375358
BM_min_element<int,_Par,_MinFirst>/64.execution_time 888.5861121865879
BM_min_element<int,_Par,_MinFirst>/512.execution_time 7450.560929998984
BM_min_element<int,_Par,_MinFirst>/1024.execution_time 9273.812239690935
BM_min_element<int,_Par,_MinFirst>/4096.execution_time 21761.670505297825
BM_min_element<int,_Par,_MinFirst>/65536.execution_time 202835.63149946727
BM_min_element<int,_Par,_MinFirst>/262144.execution_time 576146.8732988294
BM_min_element<int,_ParUnseq,_MinFirst>/64.execution_time 542.5448835378186
BM_min_element<int,_ParUnseq,_MinFirst>/512.execution_time 3375.121422826883
BM_min_element<int,_ParUnseq,_MinFirst>/1024.execution_time 5733.887459490957
BM_min_element<int,_ParUnseq,_MinFirst>/4096.execution_time 14755.951622555505
BM_min_element<int,_ParUnseq,_MinFirst>/65536.execution_time 106254.10475182494
BM_min_element<int,_ParUnseq,_MinFirst>/262144.execution_time 289255.40551315737
BM_min_element<int,_Seq,_MinMiddle>/64.execution_time 649.2130108174342
BM_min_element<int,_Seq,_MinMiddle>/512.execution_time 4667.25377617629
BM_min_element<int,_Seq,_MinMiddle>/1024.execution_time 9362.183608969704
BM_min_element<int,_Seq,_MinMiddle>/4096.execution_time 36736.49727334264
BM_min_element<int,_Seq,_MinMiddle>/65536.execution_time 591188.8094876102
BM_min_element<int,_Seq,_MinMiddle>/262144.execution_time 2336231.589416333
BM_min_element<int,_Unseq,_MinMiddle>/64.execution_time 469.863851976245
BM_min_element<int,_Unseq,_MinMiddle>/512.execution_time 2557.3046648234435
BM_min_element<int,_Unseq,_MinMiddle>/1024.execution_time 4832.3203711494725
BM_min_element<int,_Unseq,_MinMiddle>/4096.execution_time 19129.40667535061
BM_min_element<int,_Unseq,_MinMiddle>/65536.execution_time 296028.30523046956
BM_min_element<int,_Unseq,_MinMiddle>/262144.execution_time 1165075.149000078
BM_min_element<int,_Par,_MinMiddle>/64.execution_time 929.8531793746373
BM_min_element<int,_Par,_MinMiddle>/512.execution_time 5737.621934588817
BM_min_element<int,_Par,_MinMiddle>/1024.execution_time 10388.764564201549
BM_min_element<int,_Par,_MinMiddle>/4096.execution_time 26850.73965208427
BM_min_element<int,_Par,_MinMiddle>/65536.execution_time 181073.6455312581
BM_min_element<int,_Par,_MinMiddle>/262144.execution_time 567402.4194191275
BM_min_element<int,_ParUnseq,_MinMiddle>/64.execution_time 612.6649565159477
BM_min_element<int,_ParUnseq,_MinMiddle>/512.execution_time 3124.074297752508
BM_min_element<int,_ParUnseq,_MinMiddle>/1024.execution_time 4927.427107617425
BM_min_element<int,_ParUnseq,_MinMiddle>/4096.execution_time 15760.692690784128
BM_min_element<int,_ParUnseq,_MinMiddle>/65536.execution_time 101623.4820617821
BM_min_element<int,_ParUnseq,_MinMiddle>/262144.execution_time 281140.7955713906
BM_min_element<int,_Seq,_MinLast>/64.execution_time 617.9706330370734
BM_min_element<int,_Seq,_MinLast>/512.execution_time 4470.173493276528
BM_min_element<int,_Seq,_MinLast>/1024.execution_time 8873.898904205289
BM_min_element<int,_Seq,_MinLast>/4096.execution_time 35375.18470267643
BM_min_element<int,_Seq,_MinLast>/65536.execution_time 564615.1455294577
BM_min_element<int,_Seq,_MinLast>/262144.execution_time 2290327.299589896
BM_min_element<int,_Unseq,_MinLast>/64.execution_time 524.7628794370917
BM_min_element<int,_Unseq,_MinLast>/512.execution_time 3117.129673334873
BM_min_element<int,_Unseq,_MinLast>/1024.execution_time 5984.954290021632
BM_min_element<int,_Unseq,_MinLast>/4096.execution_time 23400.94014773461
BM_min_element<int,_Unseq,_MinLast>/65536.execution_time 372484.8199685204
BM_min_element<int,_Unseq,_MinLast>/262144.execution_time 1471347.6881572679
BM_min_element<int,_Par,_MinLast>/64.execution_time 899.0146466420696
BM_min_element<int,_Par,_MinLast>/512.execution_time 5619.7565129496015
BM_min_element<int,_Par,_MinLast>/1024.execution_time 10336.124081398331
BM_min_element<int,_Par,_MinLast>/4096.execution_time 26862.192414531557
BM_min_element<int,_Par,_MinLast>/65536.execution_time 181690.19197899484
BM_min_element<int,_Par,_MinLast>/262144.execution_time 566572.5222583154
BM_min_element<int,_ParUnseq,_MinLast>/64.execution_time 689.6777136663708
BM_min_element<int,_ParUnseq,_MinLast>/512.execution_time 3236.7879388381784
BM_min_element<int,_ParUnseq,_MinLast>/1024.execution_time 5607.526878473608
BM_min_element<int,_ParUnseq,_MinLast>/4096.execution_time 16639.468574458886
BM_min_element<int,_ParUnseq,_MinLast>/65536.execution_time 101911.5101283184
BM_min_element<int,_ParUnseq,_MinLast>/262144.execution_time 284925.660226652
BM_min_element_expensive<Seq,_MinFirst>/64.execution_time 836.8839145973866
BM_min_element_expensive<Seq,_MinFirst>/512.execution_time 6180.412985285999
BM_min_element_expensive<Seq,_MinFirst>/1024.execution_time 12288.535489687452
BM_min_element_expensive<Seq,_MinFirst>/4096.execution_time 49049.33167715492
BM_min_element_expensive<Seq,_MinFirst>/65536.execution_time 784291.060847905
BM_min_element_expensive<Seq,_MinFirst>/262144.execution_time 3177434.2394195865
BM_min_element_expensive<Unseq,_MinFirst>/64.execution_time 637.3446861281546
BM_min_element_expensive<Unseq,_MinFirst>/512.execution_time 3579.9184816332595
BM_min_element_expensive<Unseq,_MinFirst>/1024.execution_time 7028.554298507668
BM_min_element_expensive<Unseq,_MinFirst>/4096.execution_time 27110.50184714873
BM_min_element_expensive<Unseq,_MinFirst>/65536.execution_time 434181.7429432502
BM_min_element_expensive<Unseq,_MinFirst>/262144.execution_time 1729439.1923522586
BM_min_element_expensive<Par,_MinFirst>/64.execution_time 1129.4936553499613
BM_min_element_expensive<Par,_MinFirst>/512.execution_time 7395.334226845165
BM_min_element_expensive<Par,_MinFirst>/1024.execution_time 12517.136081655222
BM_min_element_expensive<Par,_MinFirst>/4096.execution_time 26189.052013129327
BM_min_element_expensive<Par,_MinFirst>/65536.execution_time 228993.86239479334
BM_min_element_expensive<Par,_MinFirst>/262144.execution_time 793459.987099974
BM_min_element_expensive<ParUnseq,_MinFirst>/64.execution_time 817.9699185106944
BM_min_element_expensive<ParUnseq,_MinFirst>/512.execution_time 4738.455778195663
BM_min_element_expensive<ParUnseq,_MinFirst>/1024.execution_time 9127.086748132637
BM_min_element_expensive<ParUnseq,_MinFirst>/4096.execution_time 22528.063358430958
BM_min_element_expensive<ParUnseq,_MinFirst>/65536.execution_time 168397.38538748937
BM_min_element_expensive<ParUnseq,_MinFirst>/262144.execution_time 530682.1611632117
BM_min_element_expensive<Seq,_MinMiddle>/64.execution_time 855.0123342103167
BM_min_element_expensive<Seq,_MinMiddle>/512.execution_time 6198.607679728637
BM_min_element_expensive<Seq,_MinMiddle>/1024.execution_time 12448.186399900555
BM_min_element_expensive<Seq,_MinMiddle>/4096.execution_time 49090.43521707038
BM_min_element_expensive<Seq,_MinMiddle>/65536.execution_time 784535.9798145774
BM_min_element_expensive<Seq,_MinMiddle>/262144.execution_time 3151890.587861135
BM_min_element_expensive<Unseq,_MinMiddle>/64.execution_time 1073.9566048400638
BM_min_element_expensive<Unseq,_MinMiddle>/512.execution_time 6946.591737716098
BM_min_element_expensive<Unseq,_MinMiddle>/1024.execution_time 13354.57355653076
BM_min_element_expensive<Unseq,_MinMiddle>/4096.execution_time 52459.91151774861
BM_min_element_expensive<Unseq,_MinMiddle>/65536.execution_time 839101.2881128561
BM_min_element_expensive<Unseq,_MinMiddle>/262144.execution_time 3352864.985712446
BM_min_element_expensive<Par,_MinMiddle>/64.execution_time 1151.7898988820245
BM_min_element_expensive<Par,_MinMiddle>/512.execution_time 7834.434615142053
BM_min_element_expensive<Par,_MinMiddle>/1024.execution_time 13834.636622593593
BM_min_element_expensive<Par,_MinMiddle>/4096.execution_time 32483.649143366558
BM_min_element_expensive<Par,_MinMiddle>/65536.execution_time 233930.80404079647
BM_min_element_expensive<Par,_MinMiddle>/262144.execution_time 800426.423058405
BM_min_element_expensive<ParUnseq,_MinMiddle>/64.execution_time 1162.3994359083238
BM_min_element_expensive<ParUnseq,_MinMiddle>/512.execution_time 4742.526825314977
BM_min_element_expensive<ParUnseq,_MinMiddle>/1024.execution_time 9174.741720096983
BM_min_element_expensive<ParUnseq,_MinMiddle>/4096.execution_time 23648.714044507786
BM_min_element_expensive<ParUnseq,_MinMiddle>/65536.execution_time 168173.8793688327
BM_min_element_expensive<ParUnseq,_MinMiddle>/262144.execution_time 539523.5186896386
BM_min_element_expensive<Seq,_MinLast>/64.execution_time 842.667602471986
BM_min_element_expensive<Seq,_MinLast>/512.execution_time 6189.432940092766
BM_min_element_expensive<Seq,_MinLast>/1024.execution_time 12291.042411414148
BM_min_element_expensive<Seq,_MinLast>/4096.execution_time 49050.78550727677
BM_min_element_expensive<Seq,_MinLast>/65536.execution_time 784180.7437989803
BM_min_element_expensive<Seq,_MinLast>/262144.execution_time 3141194.061787279
BM_min_element_expensive<Unseq,_MinLast>/64.execution_time 1361.5987150043975
BM_min_element_expensive<Unseq,_MinLast>/512.execution_time 9828.123262245927
BM_min_element_expensive<Unseq,_MinLast>/1024.execution_time 19543.81239711087
BM_min_element_expensive<Unseq,_MinLast>/4096.execution_time 78836.82700275503
BM_min_element_expensive<Unseq,_MinLast>/65536.execution_time 1263766.220238592
BM_min_element_expensive<Unseq,_MinLast>/262144.execution_time 4969157.225696753
BM_min_element_expensive<Par,_MinLast>/64.execution_time 1145.527024079826
BM_min_element_expensive<Par,_MinLast>/512.execution_time 7385.851524194148
BM_min_element_expensive<Par,_MinLast>/1024.execution_time 13861.105750495024
BM_min_element_expensive<Par,_MinLast>/4096.execution_time 32267.307785441593
BM_min_element_expensive<Par,_MinLast>/65536.execution_time 233913.01547556475
BM_min_element_expensive<Par,_MinLast>/262144.execution_time 812895.4882881666
BM_min_element_expensive<ParUnseq,_MinLast>/64.execution_time 1501.0150689112957
BM_min_element_expensive<ParUnseq,_MinLast>/512.execution_time 7958.425413280945
BM_min_element_expensive<ParUnseq,_MinLast>/1024.execution_time 11816.317613475117
BM_min_element_expensive<ParUnseq,_MinLast>/4096.execution_time 28211.758420158014
BM_min_element_expensive<ParUnseq,_MinLast>/65536.execution_time 172178.21509685236
BM_min_element_expensive<ParUnseq,_MinLast>/262144.execution_time 551933.3584555264
BM_min_element_non_trivially_copyable<Seq,_MinFirst>/64.execution_time 3028.232721661347
BM_min_element_non_trivially_copyable<Seq,_MinFirst>/512.execution_time 23619.121639879777
BM_min_element_non_trivially_copyable<Seq,_MinFirst>/1024.execution_time 47041.132498070714
BM_min_element_non_trivially_copyable<Seq,_MinFirst>/4096.execution_time 187772.48010282827
BM_min_element_non_trivially_copyable<Seq,_MinFirst>/65536.execution_time 3018311.404606752
BM_min_element_non_trivially_copyable<Seq,_MinFirst>/262144.execution_time 12070966.916608399
BM_min_element_non_trivially_copyable<Unseq,_MinFirst>/64.execution_time 3049.4577426017036
BM_min_element_non_trivially_copyable<Unseq,_MinFirst>/512.execution_time 23564.4741770063
BM_min_element_non_trivially_copyable<Unseq,_MinFirst>/1024.execution_time 47476.08086994218
BM_min_element_non_trivially_copyable<Unseq,_MinFirst>/4096.execution_time 187809.05002726108
BM_min_element_non_trivially_copyable<Unseq,_MinFirst>/65536.execution_time 3017468.3940050933
BM_min_element_non_trivially_copyable<Unseq,_MinFirst>/262144.execution_time 12203446.139806304
BM_min_element_non_trivially_copyable<Par,_MinFirst>/64.execution_time 3516.0437196993375
BM_min_element_non_trivially_copyable<Par,_MinFirst>/512.execution_time 25831.078704692594
BM_min_element_non_trivially_copyable<Par,_MinFirst>/1024.execution_time 44821.99269258527
BM_min_element_non_trivially_copyable<Par,_MinFirst>/4096.execution_time 89790.92028389427
BM_min_element_non_trivially_copyable<Par,_MinFirst>/65536.execution_time 778876.9644984872
BM_min_element_non_trivially_copyable<Par,_MinFirst>/262144.execution_time 3094934.8946670434
BM_min_element_non_trivially_copyable<ParUnseq,_MinFirst>/64.execution_time 3545.3799655079656
BM_min_element_non_trivially_copyable<ParUnseq,_MinFirst>/512.execution_time 25595.940355222607
BM_min_element_non_trivially_copyable<ParUnseq,_MinFirst>/1024.execution_time 45278.66961064149
BM_min_element_non_trivially_copyable<ParUnseq,_MinFirst>/4096.execution_time 89993.73541917173
BM_min_element_non_trivially_copyable<ParUnseq,_MinFirst>/65536.execution_time 797151.9195258236
BM_min_element_non_trivially_copyable<ParUnseq,_MinFirst>/262144.execution_time 3152541.2900164523
BM_min_element_non_trivially_copyable<Seq,_MinMiddle>/64.execution_time 3212.5983444028357
BM_min_element_non_trivially_copyable<Seq,_MinMiddle>/512.execution_time 24472.411938116005
BM_min_element_non_trivially_copyable<Seq,_MinMiddle>/1024.execution_time 48134.787239909856
BM_min_element_non_trivially_copyable<Seq,_MinMiddle>/4096.execution_time 193539.14742888685
BM_min_element_non_trivially_copyable<Seq,_MinMiddle>/65536.execution_time 3082497.9726175903
BM_min_element_non_trivially_copyable<Seq,_MinMiddle>/262144.execution_time 12354630.094609762
BM_min_element_non_trivially_copyable<Unseq,_MinMiddle>/64.execution_time 3207.227178501367
BM_min_element_non_trivially_copyable<Unseq,_MinMiddle>/512.execution_time 24180.50577353826
BM_min_element_non_trivially_copyable<Unseq,_MinMiddle>/1024.execution_time 48294.33274133248
BM_min_element_non_trivially_copyable<Unseq,_MinMiddle>/4096.execution_time 191848.55584179566
BM_min_element_non_trivially_copyable<Unseq,_MinMiddle>/65536.execution_time 3114704.4775638287
BM_min_element_non_trivially_copyable<Unseq,_MinMiddle>/262144.execution_time 12331172.562482065
BM_min_element_non_trivially_copyable<Par,_MinMiddle>/64.execution_time 3675.6214148953018
BM_min_element_non_trivially_copyable<Par,_MinMiddle>/512.execution_time 25656.025035633917
BM_min_element_non_trivially_copyable<Par,_MinMiddle>/1024.execution_time 44846.67854718165
BM_min_element_non_trivially_copyable<Par,_MinMiddle>/4096.execution_time 91294.11618873643
BM_min_element_non_trivially_copyable<Par,_MinMiddle>/65536.execution_time 801085.3671846576
BM_min_element_non_trivially_copyable<Par,_MinMiddle>/262144.execution_time 3163028.6397125227
BM_min_element_non_trivially_copyable<ParUnseq,_MinMiddle>/64.execution_time 3583.4155409086493
BM_min_element_non_trivially_copyable<ParUnseq,_MinMiddle>/512.execution_time 25573.333984037094
BM_min_element_non_trivially_copyable<ParUnseq,_MinMiddle>/1024.execution_time 45225.60013775236
BM_min_element_non_trivially_copyable<ParUnseq,_MinMiddle>/4096.execution_time 90371.33696731832
BM_min_element_non_trivially_copyable<ParUnseq,_MinMiddle>/65536.execution_time 802071.8191419878
BM_min_element_non_trivially_copyable<ParUnseq,_MinMiddle>/262144.execution_time 3212391.2443227298
BM_min_element_non_trivially_copyable<Seq,_MinLast>/64.execution_time 3136.0979269511627
BM_min_element_non_trivially_copyable<Seq,_MinLast>/512.execution_time 24585.54801129872
BM_min_element_non_trivially_copyable<Seq,_MinLast>/1024.execution_time 48959.35773295665
BM_min_element_non_trivially_copyable<Seq,_MinLast>/4096.execution_time 195779.28521487463
BM_min_element_non_trivially_copyable<Seq,_MinLast>/65536.execution_time 3146151.771844782
BM_min_element_non_trivially_copyable<Seq,_MinLast>/262144.execution_time 12581873.552075455
BM_min_element_non_trivially_copyable<Unseq,_MinLast>/64.execution_time 3172.3223642609137
BM_min_element_non_trivially_copyable<Unseq,_MinLast>/512.execution_time 24524.972019533616
BM_min_element_non_trivially_copyable<Unseq,_MinLast>/1024.execution_time 48962.677061107985
BM_min_element_non_trivially_copyable<Unseq,_MinLast>/4096.execution_time 196213.3565693037
BM_min_element_non_trivially_copyable<Unseq,_MinLast>/65536.execution_time 3177829.7161674937
BM_min_element_non_trivially_copyable<Unseq,_MinLast>/262144.execution_time 12591799.85416787
BM_min_element_non_trivially_copyable<Par,_MinLast>/64.execution_time 3519.9532575722374
BM_min_element_non_trivially_copyable<Par,_MinLast>/512.execution_time 25637.877469767587
BM_min_element_non_trivially_copyable<Par,_MinLast>/1024.execution_time 45065.4627077798
BM_min_element_non_trivially_copyable<Par,_MinLast>/4096.execution_time 90251.73620853138
BM_min_element_non_trivially_copyable<Par,_MinLast>/65536.execution_time 795709.7572775987
BM_min_element_non_trivially_copyable<Par,_MinLast>/262144.execution_time 3166373.530650033
BM_min_element_non_trivially_copyable<ParUnseq,_MinLast>/64.execution_time 3520.172179514997
BM_min_element_non_trivially_copyable<ParUnseq,_MinLast>/512.execution_time 25618.11176265645
BM_min_element_non_trivially_copyable<ParUnseq,_MinLast>/1024.execution_time 45324.51002640047
BM_min_element_non_trivially_copyable<ParUnseq,_MinLast>/4096.execution_time 89954.09672050086
BM_min_element_non_trivially_copyable<ParUnseq,_MinLast>/65536.execution_time 826913.800383369
BM_min_element_non_trivially_copyable<ParUnseq,_MinLast>/262144.execution_time 3295914.1665034825
```
https://github.com/llvm/llvm-project/pull/173970
More information about the libcxx-commits
mailing list