[all-commits] [llvm/llvm-project] 890a5c: [libc++][format][3/7] Improves std::format perform...

Mark de Wever via All-commits all-commits at lists.llvm.org
Sat Aug 3 04:30:59 PDT 2024


  Branch: refs/heads/users/mordante/format_performance__format
  Home:   https://github.com/llvm/llvm-project
  Commit: 890a5c8c4de141c1463e20feea35dad24bbcdcf5
      https://github.com/llvm/llvm-project/commit/890a5c8c4de141c1463e20feea35dad24bbcdcf5
  Author: Mark de Wever <koraq at xs4all.nl>
  Date:   2024-08-03 (Sat, 03 Aug 2024)

  Changed paths:
    M libcxx/include/__format/buffer.h
    M libcxx/include/__format/format_functions.h

  Log Message:
  -----------
  [libc++][format][3/7] Improves std::format performance.

This changes the __output_buffer to a new structure. Since the other
formatting fucntions std::format_to, std::format_to_n, and
std::formatted_size still use the old codepaths the class is in a
transition state. At the end of the series the class should be in its
final state.

write_double_comparison:

Before
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                           197 ns          196 ns      3550000
BM_to_string                                         218 ns          218 ns      3214000
BM_to_chars                                         42.4 ns         42.3 ns     16575000
BM_to_chars_as_string                               48.2 ns         48.1 ns     14542000
BM_format                                            175 ns          175 ns      4000000
BM_format_to_back_inserter<std::string>              175 ns          175 ns      3995000
BM_format_to_back_inserter<std::vector<char>>        207 ns          206 ns      3393000
BM_format_to_back_inserter<std::list<char>>          752 ns          750 ns       931000
BM_format_to_iterator/<std::array>                   161 ns          161 ns      4345000
BM_format_to_iterator/<std::string>                  161 ns          161 ns      4344000
BM_format_to_iterator/<std::vector>                  162 ns          161 ns      4344000

After
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                           197 ns          197 ns      3550000
BM_to_string                                         219 ns          219 ns      3199000
BM_to_chars                                         42.4 ns         42.4 ns     16554000
BM_to_chars_as_string                               48.1 ns         48.1 ns     14569000
BM_format                                            167 ns          167 ns      4203000
BM_format_to_back_inserter<std::string>              179 ns          179 ns      3920000
BM_format_to_back_inserter<std::vector<char>>        214 ns          214 ns      3274000
BM_format_to_back_inserter<std::list<char>>          751 ns          751 ns       930000
BM_format_to_iterator/<std::array>                   164 ns          164 ns      4258000
BM_format_to_iterator/<std::string>                  165 ns          164 ns      4247000
BM_format_to_iterator/<std::vector>                  165 ns          165 ns      4248000


Comparison
Benchmark                                                       Time             CPU      Time Old      Time New       CPU Old       CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf                                                   +0.0013         +0.0028           197           197           196           197
BM_to_string                                                 +0.0023         +0.0038           218           219           218           219
BM_to_chars                                                  +0.0014         +0.0030            42            42            42            42
BM_to_chars_as_string                                        -0.0025         -0.0010            48            48            48            48
BM_format                                                    -0.0476         -0.0462           175           167           175           167
BM_format_to_back_inserter<std::string>                      +0.0190         +0.0205           175           179           175           179
BM_format_to_back_inserter<std::vector<char>>                +0.0348         +0.0363           207           214           206           214
BM_format_to_back_inserter<std::list<char>>                  -0.0013         +0.0005           752           751           750           751
BM_format_to_iterator/<std::array>                           +0.0188         +0.0203           161           164           161           164
BM_format_to_iterator/<std::string>                          +0.0207         +0.0226           161           165           161           164
BM_format_to_iterator/<std::vector>                          +0.0197         +0.0212           162           165           161           165
OVERALL_GEOMEAN                                              +0.0058         +0.0074             0             0             0             0


write_int_comparison:

Before
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                          79.6 ns         79.5 ns      8739000
BM_to_string                                        14.9 ns         14.9 ns     46713000
BM_to_chars                                         5.68 ns         5.67 ns    120614000
BM_to_chars_as_string                               14.2 ns         14.1 ns     49513000
BM_format                                           69.3 ns         69.2 ns     10105000
BM_format_to_back_inserter<std::string>             69.2 ns         69.1 ns     10138000
BM_format_to_back_inserter<std::vector<char>>       90.6 ns         90.5 ns      7728000
BM_format_to_back_inserter<std::list<char>>          234 ns          234 ns      2986000
BM_format_to_iterator/<std::array>                  59.3 ns         59.3 ns     11805000
BM_format_to_iterator/<std::string>                 58.7 ns         58.6 ns     11943000
BM_format_to_iterator/<std::vector>                 60.1 ns         60.1 ns     11670000

After
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                          80.2 ns         80.2 ns      8670000
BM_to_string                                        15.0 ns         15.0 ns     46559000
BM_to_chars                                         4.93 ns         4.93 ns    138016000
BM_to_chars_as_string                               15.4 ns         15.4 ns     45415000
BM_format                                           62.1 ns         62.0 ns     11316000
BM_format_to_back_inserter<std::string>             70.2 ns         70.2 ns      9962000
BM_format_to_back_inserter<std::vector<char>>       92.8 ns         92.8 ns      7544000
BM_format_to_back_inserter<std::list<char>>          240 ns          240 ns      2917000
BM_format_to_iterator/<std::array>                  60.5 ns         60.5 ns     11572000
BM_format_to_iterator/<std::string>                 60.2 ns         60.2 ns     11653000
BM_format_to_iterator/<std::vector>                 60.1 ns         60.1 ns     11659000


Comparison
Benchmark                                                       Time             CPU      Time Old      Time New       CPU Old       CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf                                                   +0.0072         +0.0081            80            80            80            80
BM_to_string                                                 +0.0043         +0.0053            15            15            15            15
BM_to_chars                                                  -0.1324         -0.1316             6             5             6             5
BM_to_chars_as_string                                        +0.0895         +0.0906            14            15            14            15
BM_format                                                    -0.1047         -0.1040            69            62            69            62
BM_format_to_back_inserter<std::string>                      +0.0148         +0.0157            69            70            69            70
BM_format_to_back_inserter<std::vector<char>>                +0.0241         +0.0251            91            93            90            93
BM_format_to_back_inserter<std::list<char>>                  +0.0222         +0.0232           234           240           234           240
BM_format_to_iterator/<std::array>                           +0.0196         +0.0205            59            60            59            60
BM_format_to_iterator/<std::string>                          +0.0266         +0.0275            59            60            59            60
BM_format_to_iterator/<std::vector>                          -0.0004         +0.0005            60            60            60            60
OVERALL_GEOMEAN                                              -0.0045         -0.0036             0             0             0             0


write_string_comparison:

Before
---------------------------------------------------------------------------------------------------------------
Benchmark                                                                     Time             CPU   Iterations
---------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6                                                4.82 ns         4.82 ns    145548481
BM_format/C string len = 6                                                 55.1 ns         55.1 ns     12713693
BM_format_to_back_inserter<std::string>/C string len = 6                   55.1 ns         55.1 ns     12690821
BM_format_to_back_inserter<std::vector<char>>/C string len = 6             71.5 ns         71.5 ns      9805550
BM_format_to_back_inserter<std::deque<char>>/C string len = 6               154 ns          154 ns      4536256
BM_format_to_back_inserter<std::list<char>>/C string len = 6                130 ns          130 ns      5348845
BM_format_to_iterator/<std::array> C string len = 6                        44.9 ns         44.9 ns     15556175
BM_format_to_iterator/<std::string> C string len = 6                       45.8 ns         45.8 ns     15290662
BM_format_to_iterator/<std::vector> C string len = 6                       44.4 ns         44.4 ns     15807704
BM_format_to_iterator/<std::deque> C string len = 6                        50.0 ns         50.0 ns     13973893
BM_format/string len = 6                                                   54.7 ns         54.7 ns     12793406
BM_format_to_back_inserter<std::string>/string len = 6                     55.5 ns         55.5 ns     12620370
BM_format_to_back_inserter<std::vector<char>>/string len = 6               70.4 ns         70.4 ns      9936490
BM_format_to_back_inserter<std::deque<char>>/string len = 6                 155 ns          155 ns      4521357
BM_format_to_back_inserter<std::list<char>>/string len = 6                  135 ns          135 ns      5201519
BM_format_to_iterator/<std::array> string len = 6                          44.6 ns         44.6 ns     15703872
BM_format_to_iterator/<std::string> string len = 6                         45.0 ns         45.0 ns     15545182
BM_format_to_iterator/<std::vector> string len = 6                         45.0 ns         45.0 ns     15539130
BM_format_to_iterator/<std::deque> string len = 6                          50.5 ns         50.5 ns     13846916
BM_format/string_view len = 6                                              54.6 ns         54.6 ns     12821301
BM_format_to_back_inserter<std::string>/string_view len = 6                54.6 ns         54.6 ns     12827673
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6          69.9 ns         69.9 ns      9958365
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6            157 ns          157 ns      4462445
BM_format_to_back_inserter<std::list<char>>/string_view len = 6             134 ns          134 ns      5232155
BM_format_to_iterator/<std::array> string_view len = 6                     44.2 ns         44.2 ns     15871362
BM_format_to_iterator/<std::string> string_view len = 6                    45.0 ns         45.0 ns     15582582
BM_format_to_iterator/<std::vector> string_view len = 6                    45.1 ns         45.1 ns     15539906
BM_format_to_iterator/<std::deque> string_view len = 6                     50.5 ns         50.5 ns     13896524
BM_sprintf/C string len = 60                                               4.15 ns         4.15 ns    168165776
BM_format/C string len = 60                                                73.8 ns         73.8 ns      9498291
BM_format_to_back_inserter<std::string>/C string len = 60                  73.6 ns         73.6 ns      9535890
BM_format_to_back_inserter<std::vector<char>>/C string len = 60            83.1 ns         83.1 ns      8428154
BM_format_to_back_inserter<std::deque<char>>/C string len = 60              281 ns          281 ns      2490093
BM_format_to_back_inserter<std::list<char>>/C string len = 60              1157 ns         1157 ns       605227
BM_format_to_iterator/<std::array> C string len = 60                       44.9 ns         44.9 ns     15604442
BM_format_to_iterator/<std::string> C string len = 60                      45.8 ns         45.8 ns     15272196
BM_format_to_iterator/<std::vector> C string len = 60                      44.6 ns         44.7 ns     15683193
BM_format_to_iterator/<std::deque> C string len = 60                       50.6 ns         50.6 ns     13698382
BM_format/string len = 60                                                  72.3 ns         72.3 ns      9648955
BM_format_to_back_inserter<std::string>/string len = 60                    72.0 ns         72.0 ns      9738373
BM_format_to_back_inserter<std::vector<char>>/string len = 60              82.3 ns         82.3 ns      8517896
BM_format_to_back_inserter<std::deque<char>>/string len = 60                280 ns          280 ns      2496054
BM_format_to_back_inserter<std::list<char>>/string len = 60                1162 ns         1162 ns       602383
BM_format_to_iterator/<std::array> string len = 60                         44.5 ns         44.5 ns     15727799
BM_format_to_iterator/<std::string> string len = 60                        49.6 ns         49.6 ns     14096012
BM_format_to_iterator/<std::vector> string len = 60                        49.8 ns         49.8 ns     14053734
BM_format_to_iterator/<std::deque> string len = 60                         50.8 ns         50.8 ns     13801448
BM_format/string_view len = 60                                             72.5 ns         72.5 ns      9653638
BM_format_to_back_inserter<std::string>/string_view len = 60               72.7 ns         72.7 ns      9598203
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60         81.9 ns         81.9 ns      8522306
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60           283 ns          283 ns      2475014
BM_format_to_back_inserter<std::list<char>>/string_view len = 60           1162 ns         1162 ns       600924
BM_format_to_iterator/<std::array> string_view len = 60                    44.1 ns         44.1 ns     15858951
BM_format_to_iterator/<std::string> string_view len = 60                   44.9 ns         44.9 ns     15579340
BM_format_to_iterator/<std::vector> string_view len = 60                   44.9 ns         44.9 ns     15586711
BM_format_to_iterator/<std::deque> string_view len = 60                    50.0 ns         50.0 ns     13980804
BM_sprintf/C string len = 6000                                              116 ns          116 ns      6051541
BM_format/C string len = 6000                                              1000 ns         1000 ns       698647
BM_format_to_back_inserter<std::string>/C string len = 6000                1002 ns         1002 ns       701440
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000           956 ns          956 ns       727585
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000          14898 ns        14898 ns        46994
BM_format_to_back_inserter<std::list<char>>/C string len = 6000          114860 ns       114859 ns         6106
BM_format_to_iterator/<std::array> C string len = 6000                      158 ns          158 ns      4425133
BM_format_to_iterator/<std::string> C string len = 6000                     161 ns          161 ns      4335471
BM_format_to_iterator/<std::vector> C string len = 6000                     157 ns          157 ns      4444174
BM_format_to_iterator/<std::deque> C string len = 6000                      445 ns          445 ns      1574120
BM_format/string len = 6000                                                 929 ns          929 ns       753630
BM_format_to_back_inserter<std::string>/string len = 6000                   930 ns          930 ns       752888
BM_format_to_back_inserter<std::vector<char>>/string len = 6000             910 ns          910 ns       771111
BM_format_to_back_inserter<std::deque<char>>/string len = 6000            14875 ns        14876 ns        47221
BM_format_to_back_inserter<std::list<char>>/string len = 6000            114937 ns       114936 ns         6092
BM_format_to_iterator/<std::array> string len = 6000                        118 ns          118 ns      5963643
BM_format_to_iterator/<std::string> string len = 6000                       106 ns          106 ns      6584711
BM_format_to_iterator/<std::vector> string len = 6000                       106 ns          106 ns      6583118
BM_format_to_iterator/<std::deque> string len = 6000                        391 ns          391 ns      1790538
BM_format/string_view len = 6000                                            935 ns          935 ns       744348
BM_format_to_back_inserter<std::string>/string_view len = 6000              934 ns          934 ns       742039
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000        895 ns          895 ns       783527
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000       14864 ns        14865 ns        47122
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000       115042 ns       115044 ns         6091
BM_format_to_iterator/<std::array> string_view len = 6000                   115 ns          115 ns      6070197
BM_format_to_iterator/<std::string> string_view len = 6000                  116 ns          116 ns      6035109
BM_format_to_iterator/<std::vector> string_view len = 6000                  115 ns          115 ns      6067683
BM_format_to_iterator/<std::deque> string_view len = 6000                   387 ns          387 ns      1803466

After
---------------------------------------------------------------------------------------------------------------
Benchmark                                                                     Time             CPU   Iterations
---------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6                                                3.56 ns         3.56 ns    196337806
BM_format/C string len = 6                                                 49.1 ns         49.1 ns     14241174
BM_format_to_back_inserter<std::string>/C string len = 6                   56.8 ns         56.8 ns     12341483
BM_format_to_back_inserter<std::vector<char>>/C string len = 6             72.9 ns         72.9 ns      9610864
BM_format_to_back_inserter<std::deque<char>>/C string len = 6               155 ns          155 ns      4528719
BM_format_to_back_inserter<std::list<char>>/C string len = 6                137 ns          137 ns      5103340
BM_format_to_iterator/<std::array> C string len = 6                        46.4 ns         46.4 ns     15081626
BM_format_to_iterator/<std::string> C string len = 6                       47.0 ns         47.0 ns     14893458
BM_format_to_iterator/<std::vector> C string len = 6                       45.9 ns         45.9 ns     15243762
BM_format_to_iterator/<std::deque> C string len = 6                        52.6 ns         52.6 ns     13323560
BM_format/string len = 6                                                   49.3 ns         49.3 ns     14181485
BM_format_to_back_inserter<std::string>/string len = 6                     55.4 ns         55.4 ns     12644078
BM_format_to_back_inserter<std::vector<char>>/string len = 6               72.7 ns         72.7 ns      9618696
BM_format_to_back_inserter<std::deque<char>>/string len = 6                 154 ns          154 ns      4540873
BM_format_to_back_inserter<std::list<char>>/string len = 6                  134 ns          134 ns      5220153
BM_format_to_iterator/<std::array> string len = 6                          46.5 ns         46.5 ns     15064445
BM_format_to_iterator/<std::string> string len = 6                         47.3 ns         47.3 ns     14786851
BM_format_to_iterator/<std::vector> string len = 6                         46.5 ns         46.5 ns     15069381
BM_format_to_iterator/<std::deque> string len = 6                          52.9 ns         52.9 ns     13207437
BM_format/string_view len = 6                                              47.6 ns         47.6 ns     14688449
BM_format_to_back_inserter<std::string>/string_view len = 6                56.1 ns         56.1 ns     12514239
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6          72.0 ns         72.0 ns      9705591
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6            152 ns          152 ns      4607470
BM_format_to_back_inserter<std::list<char>>/string_view len = 6             134 ns          134 ns      5233005
BM_format_to_iterator/<std::array> string_view len = 6                     46.0 ns         46.0 ns     15205542
BM_format_to_iterator/<std::string> string_view len = 6                    46.5 ns         46.5 ns     15067775
BM_format_to_iterator/<std::vector> string_view len = 6                    46.5 ns         46.5 ns     15057288
BM_format_to_iterator/<std::deque> string_view len = 6                     51.8 ns         51.8 ns     13564649
BM_sprintf/C string len = 60                                               4.83 ns         4.83 ns    145020116
BM_format/C string len = 60                                                72.3 ns         72.3 ns      9665555
BM_format_to_back_inserter<std::string>/C string len = 60                  85.0 ns         85.0 ns      8249050
BM_format_to_back_inserter<std::vector<char>>/C string len = 60            94.7 ns         94.7 ns      7398143
BM_format_to_back_inserter<std::deque<char>>/C string len = 60              286 ns          286 ns      2452225
BM_format_to_back_inserter<std::list<char>>/C string len = 60              1179 ns         1179 ns       595011
BM_format_to_iterator/<std::array> C string len = 60                       46.1 ns         46.1 ns     15157525
BM_format_to_iterator/<std::string> C string len = 60                      47.0 ns         47.0 ns     14899863
BM_format_to_iterator/<std::vector> C string len = 60                      45.8 ns         45.8 ns     15272542
BM_format_to_iterator/<std::deque> C string len = 60                       58.7 ns         58.7 ns     11958910
BM_format/string len = 60                                                  61.7 ns         61.7 ns     11308865
BM_format_to_back_inserter<std::string>/string len = 60                    74.2 ns         74.2 ns      9401855
BM_format_to_back_inserter<std::vector<char>>/string len = 60              86.6 ns         86.6 ns      8079197
BM_format_to_back_inserter<std::deque<char>>/string len = 60                278 ns          278 ns      2519254
BM_format_to_back_inserter<std::list<char>>/string len = 60                1169 ns         1170 ns       597703
BM_format_to_iterator/<std::array> string len = 60                         46.4 ns         46.4 ns     15074759
BM_format_to_iterator/<std::string> string len = 60                        47.3 ns         47.3 ns     14801107
BM_format_to_iterator/<std::vector> string len = 60                        46.3 ns         46.4 ns     15085548
BM_format_to_iterator/<std::deque> string len = 60                         52.2 ns         52.2 ns     13331015
BM_format/string_view len = 60                                             65.0 ns         65.0 ns     10756847
BM_format_to_back_inserter<std::string>/string_view len = 60               78.5 ns         78.5 ns      9051370
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60         87.9 ns         87.9 ns      7946825
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60           280 ns          280 ns      2505999
BM_format_to_back_inserter<std::list<char>>/string_view len = 60           1174 ns         1174 ns       594829
BM_format_to_iterator/<std::array> string_view len = 60                    46.3 ns         46.3 ns     15149785
BM_format_to_iterator/<std::string> string_view len = 60                   46.7 ns         46.7 ns     15002678
BM_format_to_iterator/<std::vector> string_view len = 60                   46.7 ns         46.7 ns     14996445
BM_format_to_iterator/<std::deque> string_view len = 60                    52.6 ns         52.6 ns     13255470
BM_sprintf/C string len = 6000                                             77.1 ns         77.1 ns      9099121
BM_format/C string len = 6000                                               350 ns          350 ns      2013049
BM_format_to_back_inserter<std::string>/C string len = 6000                 992 ns          992 ns       709093
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000          1016 ns         1016 ns       694784
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000          15158 ns        15159 ns        46125
BM_format_to_back_inserter<std::list<char>>/C string len = 6000          115703 ns       115705 ns         6055
BM_format_to_iterator/<std::array> C string len = 6000                      166 ns          166 ns      4224749
BM_format_to_iterator/<std::string> C string len = 6000                     153 ns          153 ns      4573034
BM_format_to_iterator/<std::vector> C string len = 6000                     150 ns          150 ns      4678898
BM_format_to_iterator/<std::deque> C string len = 6000                      465 ns          465 ns      1506323
BM_format/string len = 6000                                                 281 ns          281 ns      2462572
BM_format_to_back_inserter<std::string>/string len = 6000                   935 ns          935 ns       745376
BM_format_to_back_inserter<std::vector<char>>/string len = 6000             939 ns          939 ns       747498
BM_format_to_back_inserter<std::deque<char>>/string len = 6000            15069 ns        15069 ns        46429
BM_format_to_back_inserter<std::list<char>>/string len = 6000            115537 ns       115539 ns         6063
BM_format_to_iterator/<std::array> string len = 6000                        120 ns          120 ns      5849159
BM_format_to_iterator/<std::string> string len = 6000                       108 ns          108 ns      6482306
BM_format_to_iterator/<std::vector> string len = 6000                       107 ns          107 ns      6547915
BM_format_to_iterator/<std::deque> string len = 6000                        397 ns          397 ns      1763729
BM_format/string_view len = 6000                                            282 ns          282 ns      2490133
BM_format_to_back_inserter<std::string>/string_view len = 6000              927 ns          927 ns       750931
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000        946 ns          946 ns       735544
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000       15028 ns        15029 ns        46612
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000       115153 ns       115153 ns         6057
BM_format_to_iterator/<std::array> string_view len = 6000                   122 ns          122 ns      5753940
BM_format_to_iterator/<std::string> string_view len = 6000                  108 ns          108 ns      6507555
BM_format_to_iterator/<std::vector> string_view len = 6000                  107 ns          107 ns      6510450
BM_format_to_iterator/<std::deque> string_view len = 6000                   398 ns          398 ns      1762517

Comparison
Benchmark                                                                              Time             CPU      Time Old      Time New       CPU Old       CPU New
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6                                                         -0.2599         -0.2599             5             4             5             4
BM_format/C string len = 6                                                          -0.1094         -0.1095            55            49            55            49
BM_format_to_back_inserter<std::string>/C string len = 6                            +0.0316         +0.0316            55            57            55            57
BM_format_to_back_inserter<std::vector<char>>/C string len = 6                      +0.0204         +0.0204            71            73            71            73
BM_format_to_back_inserter<std::deque<char>>/C string len = 6                       +0.0023         +0.0023           154           155           154           155
BM_format_to_back_inserter<std::list<char>>/C string len = 6                        +0.0521         +0.0520           130           137           130           137
BM_format_to_iterator/<std::array> C string len = 6                                 +0.0317         +0.0317            45            46            45            46
BM_format_to_iterator/<std::string> C string len = 6                                +0.0265         +0.0265            46            47            46            47
BM_format_to_iterator/<std::vector> C string len = 6                                +0.0345         +0.0345            44            46            44            46
BM_format_to_iterator/<std::deque> C string len = 6                                 +0.0511         +0.0511            50            53            50            53
BM_format/string len = 6                                                            -0.0981         -0.0981            55            49            55            49
BM_format_to_back_inserter<std::string>/string len = 6                              -0.0028         -0.0028            56            55            56            55
BM_format_to_back_inserter<std::vector<char>>/string len = 6                        +0.0331         +0.0331            70            73            70            73
BM_format_to_back_inserter<std::deque<char>>/string len = 6                         -0.0040         -0.0040           155           154           155           154
BM_format_to_back_inserter<std::list<char>>/string len = 6                          -0.0019         -0.0019           135           134           135           134
BM_format_to_iterator/<std::array> string len = 6                                   +0.0427         +0.0427            45            46            45            46
BM_format_to_iterator/<std::string> string len = 6                                  +0.0515         +0.0515            45            47            45            47
BM_format_to_iterator/<std::vector> string len = 6                                  +0.0316         +0.0316            45            46            45            46
BM_format_to_iterator/<std::deque> string len = 6                                   +0.0475         +0.0475            51            53            51            53
BM_format/string_view len = 6                                                       -0.1267         -0.1267            55            48            55            48
BM_format_to_back_inserter<std::string>/string_view len = 6                         +0.0283         +0.0283            55            56            55            56
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6                   +0.0291         +0.0291            70            72            70            72
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6                    -0.0305         -0.0306           157           152           157           152
BM_format_to_back_inserter<std::list<char>>/string_view len = 6                     -0.0012         -0.0012           134           134           134           134
BM_format_to_iterator/<std::array> string_view len = 6                              +0.0426         +0.0426            44            46            44            46
BM_format_to_iterator/<std::string> string_view len = 6                             +0.0322         +0.0322            45            46            45            46
BM_format_to_iterator/<std::vector> string_view len = 6                             +0.0309         +0.0309            45            46            45            46
BM_format_to_iterator/<std::deque> string_view len = 6                              +0.0248         +0.0248            51            52            51            52
BM_sprintf/C string len = 60                                                        +0.1633         +0.1633             4             5             4             5
BM_format/C string len = 60                                                         -0.0203         -0.0203            74            72            74            72
BM_format_to_back_inserter<std::string>/C string len = 60                           +0.1548         +0.1548            74            85            74            85
BM_format_to_back_inserter<std::vector<char>>/C string len = 60                     +0.1395         +0.1395            83            95            83            95
BM_format_to_back_inserter<std::deque<char>>/C string len = 60                      +0.0157         +0.0157           281           286           281           286
BM_format_to_back_inserter<std::list<char>>/C string len = 60                       +0.0191         +0.0191          1157          1179          1157          1179
BM_format_to_iterator/<std::array> C string len = 60                                +0.0283         +0.0283            45            46            45            46
BM_format_to_iterator/<std::string> C string len = 60                               +0.0251         +0.0252            46            47            46            47
BM_format_to_iterator/<std::vector> C string len = 60                               +0.0263         +0.0263            45            46            45            46
BM_format_to_iterator/<std::deque> C string len = 60                                +0.1592         +0.1591            51            59            51            59
BM_format/string len = 60                                                           -0.1466         -0.1466            72            62            72            62
BM_format_to_back_inserter<std::string>/string len = 60                             +0.0299         +0.0299            72            74            72            74
BM_format_to_back_inserter<std::vector<char>>/string len = 60                       +0.0522         +0.0522            82            87            82            87
BM_format_to_back_inserter<std::deque<char>>/string len = 60                        -0.0099         -0.0099           280           278           280           278
BM_format_to_back_inserter<std::list<char>>/string len = 60                         +0.0062         +0.0062          1162          1169          1162          1170
BM_format_to_iterator/<std::array> string len = 60                                  +0.0430         +0.0430            45            46            45            46
BM_format_to_iterator/<std::string> string len = 60                                 -0.0466         -0.0466            50            47            50            47
BM_format_to_iterator/<std::vector> string len = 60                                 -0.0693         -0.0693            50            46            50            46
BM_format_to_iterator/<std::deque> string len = 60                                  +0.0275         +0.0275            51            52            51            52
BM_format/string_view len = 60                                                      -0.1034         -0.1034            73            65            73            65
BM_format_to_back_inserter<std::string>/string_view len = 60                        +0.0790         +0.0790            73            78            73            78
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60                  +0.0735         +0.0735            82            88            82            88
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60                   -0.0103         -0.0104           283           280           283           280
BM_format_to_back_inserter<std::list<char>>/string_view len = 60                    +0.0101         +0.0101          1162          1174          1162          1174
BM_format_to_iterator/<std::array> string_view len = 60                             +0.0484         +0.0484            44            46            44            46
BM_format_to_iterator/<std::string> string_view len = 60                            +0.0387         +0.0387            45            47            45            47
BM_format_to_iterator/<std::vector> string_view len = 60                            +0.0402         +0.0402            45            47            45            47
BM_format_to_iterator/<std::deque> string_view len = 60                             +0.0508         +0.0508            50            53            50            53
BM_sprintf/C string len = 6000                                                      -0.3337         -0.3337           116            77           116            77
BM_format/C string len = 6000                                                       -0.6500         -0.6500          1000           350          1000           350
BM_format_to_back_inserter<std::string>/C string len = 6000                         -0.0104         -0.0105          1002           992          1002           992
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000                   +0.0630         +0.0630           956          1016           956          1016
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000                    +0.0175         +0.0175         14898         15158         14898         15159
BM_format_to_back_inserter<std::list<char>>/C string len = 6000                     +0.0073         +0.0074        114860        115703        114859        115705
BM_format_to_iterator/<std::array> C string len = 6000                              +0.0504         +0.0504           158           166           158           166
BM_format_to_iterator/<std::string> C string len = 6000                             -0.0486         -0.0486           161           153           161           153
BM_format_to_iterator/<std::vector> C string len = 6000                             -0.0483         -0.0483           157           150           157           150
BM_format_to_iterator/<std::deque> C string len = 6000                              +0.0459         +0.0459           445           465           445           465
BM_format/string len = 6000                                                         -0.6975         -0.6975           929           281           929           281
BM_format_to_back_inserter<std::string>/string len = 6000                           +0.0050         +0.0050           930           935           930           935
BM_format_to_back_inserter<std::vector<char>>/string len = 6000                     +0.0321         +0.0322           910           939           910           939
BM_format_to_back_inserter<std::deque<char>>/string len = 6000                      +0.0130         +0.0130         14875         15069         14876         15069
BM_format_to_back_inserter<std::list<char>>/string len = 6000                       +0.0052         +0.0052        114937        115537        114936        115539
BM_format_to_iterator/<std::array> string len = 6000                                +0.0211         +0.0211           118           120           118           120
BM_format_to_iterator/<std::string> string len = 6000                               +0.0146         +0.0146           106           108           106           108
BM_format_to_iterator/<std::vector> string len = 6000                               +0.0048         +0.0048           106           107           106           107
BM_format_to_iterator/<std::deque> string len = 6000                                +0.0150         +0.0150           391           397           391           397
BM_format/string_view len = 6000                                                    -0.6989         -0.6989           935           282           935           282
BM_format_to_back_inserter<std::string>/string_view len = 6000                      -0.0083         -0.0083           934           927           934           927
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000                +0.0566         +0.0566           895           946           895           946
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000                 +0.0111         +0.0110         14864         15028         14865         15029
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000                  +0.0010         +0.0009        115042        115153        115044        115153
BM_format_to_iterator/<std::array> string_view len = 6000                           +0.0560         +0.0560           115           122           115           122
BM_format_to_iterator/<std::string> string_view len = 6000                          -0.0693         -0.0693           116           108           116           108
BM_format_to_iterator/<std::vector> string_view len = 6000                          -0.0703         -0.0703           115           107           115           107
BM_format_to_iterator/<std::deque> string_view len = 6000                           +0.0271         +0.0271           387           398           387           398
OVERALL_GEOMEAN                                                                     -0.0350         -0.0350             0             0             0             0


format:
Before
--------------------------------------------------------------------------------------------
Benchmark                                  Time             CPU   Iterations UserCounters...
--------------------------------------------------------------------------------------------
BM_format_string<char>/1                55.5 ns         55.5 ns     12463288 bytes_per_second=17.187Mi/s
BM_format_string<char>/2                27.6 ns         27.6 ns     25421994 bytes_per_second=69.1874Mi/s
BM_format_string<char>/4                14.0 ns         14.0 ns     49785656 bytes_per_second=271.524Mi/s
BM_format_string<char>/8                7.07 ns         7.07 ns     99247048 bytes_per_second=1.05444Gi/s
BM_format_string<char>/16               3.53 ns         3.53 ns    198072224 bytes_per_second=4.21726Gi/s
BM_format_string<char>/32               2.31 ns         2.31 ns    302771136 bytes_per_second=12.9138Gi/s
BM_format_string<char>/64               1.15 ns         1.15 ns    606646976 bytes_per_second=51.7527Gi/s
BM_format_string<char>/128             0.597 ns        0.597 ns   1172263936 bytes_per_second=199.688Gi/s
BM_format_string<char>/256             0.327 ns        0.327 ns   2148927744 bytes_per_second=728.678Gi/s
BM_format_string<char>/512             0.248 ns        0.248 ns   2821635584 bytes_per_second=1.8779Ti/s
BM_format_string<char>/1024            0.203 ns        0.203 ns   3433579520 bytes_per_second=4.57798Ti/s
BM_format_string<char>/2048            0.164 ns        0.164 ns   4277524480 bytes_per_second=11.3793Ti/s
BM_format_string<char>/4096            0.137 ns        0.137 ns   5122269184 bytes_per_second=27.2589Ti/s
BM_format_string<char>/8192            0.126 ns        0.126 ns   5564243968 bytes_per_second=59.2812Ti/s
BM_format_string<char>/16384           0.136 ns        0.136 ns   5153013760 bytes_per_second=109.492Ti/s
BM_format_string<char>/32768           0.135 ns        0.135 ns   5165088768 bytes_per_second=219.985Ti/s
BM_format_string<char>/65536           0.243 ns        0.242 ns   2930180096 bytes_per_second=246.57Ti/s
BM_format_string<char>/131072          0.490 ns        0.489 ns   1437990912 bytes_per_second=243.75Ti/s
BM_format_string<char>/262144          0.593 ns        0.592 ns   1183055872 bytes_per_second=402.931Ti/s
BM_format_string<char>/524288          0.643 ns        0.641 ns   1092616192 bytes_per_second=743.445Ti/s
BM_format_string<char>/1048576         0.669 ns        0.668 ns   1045430272 bytes_per_second=1.39478Pi/s
BM_format_string<wchar_t>/1             56.0 ns         55.9 ns     12511543 bytes_per_second=68.2628Mi/s
BM_format_string<wchar_t>/2             28.0 ns         27.9 ns     25062366 bytes_per_second=273.519Mi/s
BM_format_string<wchar_t>/4             14.0 ns         14.0 ns     50257068 bytes_per_second=1.06742Gi/s
BM_format_string<wchar_t>/8             9.24 ns         9.21 ns     76118616 bytes_per_second=3.23473Gi/s
BM_format_string<wchar_t>/16            4.66 ns         4.65 ns    151420352 bytes_per_second=12.8261Gi/s
BM_format_string<wchar_t>/32            2.35 ns         2.35 ns    298417600 bytes_per_second=50.7972Gi/s
BM_format_string<wchar_t>/64            1.35 ns         1.34 ns    521608704 bytes_per_second=177.502Gi/s
BM_format_string<wchar_t>/128           1.03 ns         1.03 ns    680946304 bytes_per_second=463.91Gi/s
BM_format_string<wchar_t>/256          0.849 ns        0.847 ns    825871104 bytes_per_second=1.09901Ti/s
BM_format_string<wchar_t>/512          0.681 ns        0.679 ns   1033245696 bytes_per_second=2.74383Ti/s
BM_format_string<wchar_t>/1024         0.576 ns        0.575 ns   1219777536 bytes_per_second=6.48343Ti/s
BM_format_string<wchar_t>/2048         0.515 ns        0.514 ns   1361629184 bytes_per_second=14.4881Ti/s
BM_format_string<wchar_t>/4096         0.546 ns        0.545 ns   1285427200 bytes_per_second=27.3342Ti/s
BM_format_string<wchar_t>/8192         0.550 ns        0.548 ns   1277042688 bytes_per_second=54.3343Ti/s
BM_format_string<wchar_t>/16384        0.583 ns        0.581 ns   1203879936 bytes_per_second=102.544Ti/s
BM_format_string<wchar_t>/32768        0.640 ns        0.638 ns   1095139328 bytes_per_second=186.82Ti/s
BM_format_string<wchar_t>/65536        0.642 ns        0.640 ns   1093337088 bytes_per_second=372.283Ti/s
BM_format_string<wchar_t>/131072       0.655 ns        0.654 ns   1070596096 bytes_per_second=729.428Ti/s
BM_format_string<wchar_t>/262144        2.68 ns         2.67 ns    262406144 bytes_per_second=357.446Ti/s
BM_format_string<wchar_t>/524288        2.13 ns         2.13 ns    330301440 bytes_per_second=897.574Ti/s
BM_format_string<wchar_t>/1048576       2.44 ns         2.43 ns    288358400 bytes_per_second=1.53149Pi/s

After
--------------------------------------------------------------------------------------------
Benchmark                                  Time             CPU   Iterations UserCounters...
--------------------------------------------------------------------------------------------
BM_format_string<char>/1                49.3 ns         49.1 ns     14230742 bytes_per_second=19.4054Mi/s
BM_format_string<char>/2                24.8 ns         24.8 ns     28253114 bytes_per_second=77.0465Mi/s
BM_format_string<char>/4                12.4 ns         12.4 ns     56381440 bytes_per_second=307.462Mi/s
BM_format_string<char>/8                6.23 ns         6.21 ns    112951232 bytes_per_second=1.19924Gi/s
BM_format_string<char>/16               3.10 ns         3.09 ns    225822496 bytes_per_second=4.81566Gi/s
BM_format_string<char>/32               1.98 ns         1.98 ns    354208192 bytes_per_second=15.0825Gi/s
BM_format_string<char>/64              0.990 ns        0.987 ns    714296384 bytes_per_second=60.3689Gi/s
BM_format_string<char>/128             0.504 ns        0.503 ns   1399988480 bytes_per_second=237.144Gi/s
BM_format_string<char>/256             0.335 ns        0.334 ns   2084828928 bytes_per_second=712.859Gi/s
BM_format_string<char>/512             0.187 ns        0.186 ns   3760082432 bytes_per_second=2.50102Ti/s
BM_format_string<char>/1024            0.109 ns        0.108 ns   6455339008 bytes_per_second=8.59552Ti/s
BM_format_string<char>/2048            0.080 ns        0.080 ns   8754006016 bytes_per_second=23.2731Ti/s
BM_format_string<char>/4096            0.051 ns        0.051 ns   13786701824 bytes_per_second=73.4088Ti/s
BM_format_string<char>/8192            0.042 ns        0.042 ns   16851435520 bytes_per_second=178.737Ti/s
BM_format_string<char>/16384           0.122 ns        0.122 ns   5746589696 bytes_per_second=122.029Ti/s
BM_format_string<char>/32768           0.107 ns        0.106 ns   6571687936 bytes_per_second=280.122Ti/s
BM_format_string<char>/65536           0.102 ns        0.102 ns   6876626944 bytes_per_second=584.381Ti/s
BM_format_string<char>/131072          0.106 ns        0.105 ns   6643122176 bytes_per_second=1.10413Pi/s
BM_format_string<char>/262144          0.589 ns        0.587 ns   1189609472 bytes_per_second=406.438Ti/s
BM_format_string<char>/524288          0.644 ns        0.642 ns   1088946176 bytes_per_second=743.064Ti/s
BM_format_string<char>/1048576         0.672 ns        0.670 ns   1039138816 bytes_per_second=1.38968Pi/s
BM_format_string<wchar_t>/1             48.7 ns         48.6 ns     14423178 bytes_per_second=78.5263Mi/s
BM_format_string<wchar_t>/2             24.4 ns         24.3 ns     28831748 bytes_per_second=313.869Mi/s
BM_format_string<wchar_t>/4             12.2 ns         12.2 ns     57661220 bytes_per_second=1.2253Gi/s
BM_format_string<wchar_t>/8             7.81 ns         7.79 ns     89887592 bytes_per_second=3.82675Gi/s
BM_format_string<wchar_t>/16            3.88 ns         3.87 ns    180450176 bytes_per_second=15.418Gi/s
BM_format_string<wchar_t>/32            1.98 ns         1.98 ns    354046112 bytes_per_second=60.3262Gi/s
BM_format_string<wchar_t>/64            1.02 ns         1.01 ns    689511680 bytes_per_second=234.906Gi/s
BM_format_string<wchar_t>/128          0.577 ns        0.576 ns   1215361408 bytes_per_second=828.297Gi/s
BM_format_string<wchar_t>/256          0.804 ns        0.802 ns    872249088 bytes_per_second=1.16111Ti/s
BM_format_string<wchar_t>/512          0.642 ns        0.641 ns   1093858304 bytes_per_second=2.90766Ti/s
BM_format_string<wchar_t>/1024         0.517 ns        0.516 ns   1354798080 bytes_per_second=7.21845Ti/s
BM_format_string<wchar_t>/2048         0.469 ns        0.467 ns   1491910656 bytes_per_second=15.9386Ti/s
BM_format_string<wchar_t>/4096         0.794 ns        0.792 ns    883822592 bytes_per_second=18.8156Ti/s
BM_format_string<wchar_t>/8192         0.722 ns        0.720 ns    971718656 bytes_per_second=41.3996Ti/s
BM_format_string<wchar_t>/16384        0.703 ns        0.701 ns    998031360 bytes_per_second=85.0369Ti/s
BM_format_string<wchar_t>/32768        0.724 ns        0.720 ns    971538432 bytes_per_second=165.467Ti/s
BM_format_string<wchar_t>/65536        0.745 ns        0.744 ns    941228032 bytes_per_second=320.665Ti/s
BM_format_string<wchar_t>/131072       0.742 ns        0.740 ns    945422336 bytes_per_second=644.032Ti/s
BM_format_string<wchar_t>/262144        2.99 ns         2.98 ns    234881024 bytes_per_second=319.75Ti/s
BM_format_string<wchar_t>/524288        3.31 ns         3.30 ns    212860928 bytes_per_second=578.085Ti/s
BM_format_string<wchar_t>/1048576       2.69 ns         2.68 ns    260046848 bytes_per_second=1.39081Pi/s

Comparison
Benchmark                                           Time             CPU      Time Old      Time New       CPU Old       CPU New
--------------------------------------------------------------------------------------------------------------------------------
BM_format_string<char>/1                         -0.1122         -0.1143            55            49            55            49
BM_format_string<char>/2                         -0.0999         -0.1020            28            25            28            25
BM_format_string<char>/4                         -0.1148         -0.1169            14            12            14            12
BM_format_string<char>/8                         -0.1186         -0.1207             7             6             7             6
BM_format_string<char>/16                        -0.1222         -0.1243             4             3             4             3
BM_format_string<char>/32                        -0.1417         -0.1438             2             2             2             2
BM_format_string<char>/64                        -0.1407         -0.1427             1             1             1             1
BM_format_string<char>/128                       -0.1559         -0.1579             1             1             1             1
BM_format_string<char>/256                       +0.0249         +0.0222             0             0             0             0
BM_format_string<char>/512                       -0.2473         -0.2491             0             0             0             0
BM_format_string<char>/1024                      -0.4661         -0.4674             0             0             0             0
BM_format_string<char>/2048                      -0.5096         -0.5111             0             0             0             0
BM_format_string<char>/4096                      -0.6278         -0.6287             0             0             0             0
BM_format_string<char>/8192                      -0.6674         -0.6683             0             0             0             0
BM_format_string<char>/16384                     -0.1005         -0.1027             0             0             0             0
BM_format_string<char>/32768                     -0.2127         -0.2147             0             0             0             0
BM_format_string<char>/65536                     -0.5796         -0.5781             0             0             0             0
BM_format_string<char>/131072                    -0.7844         -0.7844             0             0             0             0
BM_format_string<char>/262144                    -0.0073         -0.0086             1             1             1             1
BM_format_string<char>/524288                    +0.0017         +0.0005             1             1             1             1
BM_format_string<char>/1048576                   +0.0039         +0.0037             1             1             1             1
BM_format_string<wchar_t>/1                      -0.1304         -0.1307            56            49            56            49
BM_format_string<wchar_t>/2                      -0.1285         -0.1286            28            24            28            24
BM_format_string<wchar_t>/4                      -0.1288         -0.1288            14            12            14            12
BM_format_string<wchar_t>/8                      -0.1547         -0.1547             9             8             9             8
BM_format_string<wchar_t>/16                     -0.1681         -0.1681             5             4             5             4
BM_format_string<wchar_t>/32                     -0.1579         -0.1580             2             2             2             2
BM_format_string<wchar_t>/64                     -0.2443         -0.2444             1             1             1             1
BM_format_string<wchar_t>/128                    -0.4400         -0.4399             1             1             1             1
BM_format_string<wchar_t>/256                    -0.0535         -0.0535             1             1             1             1
BM_format_string<wchar_t>/512                    -0.0563         -0.0563             1             1             1             1
BM_format_string<wchar_t>/1024                   -0.1018         -0.1018             1             1             1             1
BM_format_string<wchar_t>/2048                   -0.0910         -0.0910             1             0             1             0
BM_format_string<wchar_t>/4096                   +0.4528         +0.4527             1             1             1             1
BM_format_string<wchar_t>/8192                   +0.3121         +0.3124             1             1             1             1
BM_format_string<wchar_t>/16384                  +0.2059         +0.2059             1             1             1             1
BM_format_string<wchar_t>/32768                  +0.1316         +0.1290             1             1             1             1
BM_format_string<wchar_t>/65536                  +0.1604         +0.1610             1             1             1             1
BM_format_string<wchar_t>/131072                 +0.1326         +0.1326             1             1             1             1
BM_format_string<wchar_t>/262144                 +0.1181         +0.1179             3             3             3             3
BM_format_string<wchar_t>/524288                 +0.5515         +0.5527             2             3             2             3
BM_format_string<wchar_t>/1048576                +0.1007         +0.1011             2             3             2             3
OVERALL_GEOMEAN                                  -0.1685         -0.1693             0             0             0             0



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list