[llvm-branch-commits] [libcxx] [libc++][format][4/7] Improves std::format_to performance. (PR #101823)

Mark de Wever via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sat Aug 3 06:55:20 PDT 2024


https://github.com/mordante created https://github.com/llvm/llvm-project/pull/101823

This changes the __output_buffer users for format_to to the new structure. It also uses the new allocating buffer to improve performance.

write_double_comparison:

Before
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                           197 ns          197 ns      3537000
BM_to_string                                         219 ns          219 ns      3200000
BM_to_chars                                         42.3 ns         42.3 ns     16490000
BM_to_chars_as_string                               48.1 ns         48.1 ns     14508000
BM_format                                            167 ns          167 ns      4207000
BM_format_to_back_inserter<std::string>              179 ns          179 ns      3914000
BM_format_to_back_inserter<std::vector<char>>        216 ns          216 ns      3234000
BM_format_to_back_inserter<std::list<char>>          752 ns          752 ns       932000
BM_format_to_iterator/<std::array>                   165 ns          165 ns      4257000
BM_format_to_iterator/<std::string>                  165 ns          165 ns      4251000
BM_format_to_iterator/<std::vector>                  165 ns          165 ns      4254000

After
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                           197 ns          197 ns      3548000
BM_to_string                                         219 ns          219 ns      3203000
BM_to_chars                                         42.3 ns         42.3 ns     16540000
BM_to_chars_as_string                               48.2 ns         48.2 ns     14532000
BM_format                                            167 ns          167 ns      4190000
BM_format_to_back_inserter<std::string>              176 ns          176 ns      3959000
BM_format_to_back_inserter<std::vector<char>>        211 ns          211 ns      3312000
BM_format_to_back_inserter<std::list<char>>          752 ns          752 ns       934000
BM_format_to_iterator/<std::array>                   162 ns          162 ns      4313000
BM_format_to_iterator/<std::string>                  162 ns          162 ns      4307000
BM_format_to_iterator/<std::vector>                  162 ns          162 ns      4308000

Comparison
Benchmark                                                       Time             CPU      Time Old      Time New       CPU Old       CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf                                                   +0.0003         +0.0002           197           197           197           197
BM_to_string                                                 -0.0004         -0.0004           219           219           219           219
BM_to_chars                                                  +0.0003         +0.0003            42            42            42            42
BM_to_chars_as_string                                        +0.0004         +0.0004            48            48            48            48
BM_format                                                    +0.0016         +0.0016           167           167           167           167
BM_format_to_back_inserter<std::string>                      -0.0128         -0.0127           179           176           179           176
BM_format_to_back_inserter<std::vector<char>>                -0.0216         -0.0216           216           211           216           211
BM_format_to_back_inserter<std::list<char>>                  -0.0008         -0.0008           752           752           752           752
BM_format_to_iterator/<std::array>                           -0.0137         -0.0137           165           162           165           162
BM_format_to_iterator/<std::string>                          -0.0154         -0.0153           165           162           165           162
BM_format_to_iterator/<std::vector>                          -0.0138         -0.0138           165           162           165           162
OVERALL_GEOMEAN                                              -0.0069         -0.0069             0             0             0             0


write_int_comparison:

Before
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                          80.3 ns         80.1 ns      8703000
BM_to_string                                        15.0 ns         14.9 ns     46849000
BM_to_chars                                         4.94 ns         4.92 ns    139052000
BM_to_chars_as_string                               15.6 ns         15.6 ns     44945000
BM_format                                           62.1 ns         61.9 ns     11302000
BM_format_to_back_inserter<std::string>             70.3 ns         70.1 ns      9984000
BM_format_to_back_inserter<std::vector<char>>       92.9 ns         92.7 ns      7520000
BM_format_to_back_inserter<std::list<char>>          239 ns          239 ns      2926000
BM_format_to_iterator/<std::array>                  60.6 ns         60.4 ns     11582000
BM_format_to_iterator/<std::string>                 60.2 ns         60.0 ns     11671000
BM_format_to_iterator/<std::vector>                 60.1 ns         60.0 ns     11691000

After
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                          81.3 ns         81.2 ns      8546000
BM_to_string                                        14.9 ns         14.9 ns     46809000
BM_to_chars                                         4.93 ns         4.93 ns    138278000
BM_to_chars_as_string                               15.4 ns         15.4 ns     45504000
BM_format                                           62.0 ns         61.9 ns     11330000
BM_format_to_back_inserter<std::string>             69.0 ns         68.9 ns     10164000
BM_format_to_back_inserter<std::vector<char>>       90.4 ns         90.3 ns      7736000
BM_format_to_back_inserter<std::list<char>>          242 ns          242 ns      2891000
BM_format_to_iterator/<std::array>                  58.6 ns         58.6 ns     11952000
BM_format_to_iterator/<std::string>                 58.2 ns         58.1 ns     12052000
BM_format_to_iterator/<std::vector>                 58.4 ns         58.3 ns     11983000

Comparison
Benchmark                                                       Time             CPU      Time Old      Time New       CPU Old       CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf                                                   +0.0116         +0.0132            80            81            80            81
BM_to_string                                                 -0.0050         -0.0036            15            15            15            15
BM_to_chars                                                  -0.0005         +0.0010             5             5             5             5
BM_to_chars_as_string                                        -0.0168         -0.0149            16            15            16            15
BM_format                                                    -0.0015         +0.0001            62            62            62            62
BM_format_to_back_inserter<std::string>                      -0.0186         -0.0172            70            69            70            69
BM_format_to_back_inserter<std::vector<char>>                -0.0271         -0.0256            93            90            93            90
BM_format_to_back_inserter<std::list<char>>                  +0.0104         +0.0119           239           242           239           242
BM_format_to_iterator/<std::array>                           -0.0322         -0.0304            61            59            60            59
BM_format_to_iterator/<std::string>                          -0.0330         -0.0317            60            58            60            58
BM_format_to_iterator/<std::vector>                          -0.0285         -0.0270            60            58            60            58
OVERALL_GEOMEAN                                              -0.0130         -0.0114             0             0             0             0


write_string_comparison:
Comparison
Benchmark                                                                              Time             CPU      Time Old      Time New       CPU Old       CPU New
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6                                                         -0.0037         -0.0051             4             4             4             4
BM_format/C string len = 6                                                          -0.0022         -0.0037            50            49            50            49
BM_format_to_back_inserter<std::string>/C string len = 6                            -0.0136         -0.0151            57            56            57            56
BM_format_to_back_inserter<std::vector<char>>/C string len = 6                      +0.0408         +0.0392            73            76            73            76
BM_format_to_back_inserter<std::deque<char>>/C string len = 6                       +0.0115         +0.0099           156           158           156           157
BM_format_to_back_inserter<std::list<char>>/C string len = 6                        +0.0325         +0.0307           136           140           136           140
BM_format_to_iterator/<std::array> C string len = 6                                 -0.0153         -0.0167            47            46            47            46
BM_format_to_iterator/<std::string> C string len = 6                                -0.0332         -0.0346            47            46            47            46
BM_format_to_iterator/<std::vector> C string len = 6                                -0.0125         -0.0141            46            46            46            46
BM_format_to_iterator/<std::deque> C string len = 6                                 +0.0041         +0.0026            52            53            52            53
BM_format/string len = 6                                                            -0.0170         -0.0185            50            49            50            49
BM_format_to_back_inserter<std::string>/string len = 6                              -0.0092         -0.0106            56            55            56            55
BM_format_to_back_inserter<std::vector<char>>/string len = 6                        +0.0153         +0.0138            73            74            73            74
BM_format_to_back_inserter<std::deque<char>>/string len = 6                         +0.0392         +0.0371           155           161           154           160
BM_format_to_back_inserter<std::list<char>>/string len = 6                          +0.0367         +0.0351           133           138           133           138
BM_format_to_iterator/<std::array> string len = 6                                   -0.0107         -0.0125            47            46            47            46
BM_format_to_iterator/<std::string> string len = 6                                  -0.0312         -0.0326            47            46            47            46
BM_format_to_iterator/<std::vector> string len = 6                                  -0.0103         -0.0144            46            46            46            46
BM_format_to_iterator/<std::deque> string len = 6                                   -0.0042         -0.0057            53            53            53            52
BM_format/string_view len = 6                                                       -0.0191         -0.0206            49            48            49            48
BM_format_to_back_inserter<std::string>/string_view len = 6                         -0.0283         -0.0298            56            55            56            54
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6                   +0.0408         +0.0389            72            75            72            75
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6                    +0.0214         +0.0199           153           157           153           156
BM_format_to_back_inserter<std::list<char>>/string_view len = 6                     +0.0407         +0.0393           132           137           132           137
BM_format_to_iterator/<std::array> string_view len = 6                              -0.0235         -0.0249            46            45            46            45
BM_format_to_iterator/<std::string> string_view len = 6                             -0.0368         -0.0385            46            45            46            44
BM_format_to_iterator/<std::vector> string_view len = 6                             -0.0293         -0.0308            46            45            46            45
BM_format_to_iterator/<std::deque> string_view len = 6                              +0.0094         +0.0079            52            52            52            52
BM_sprintf/C string len = 60                                                        -0.0004         -0.0018             5             5             5             5
BM_format/C string len = 60                                                         +0.0250         +0.0232            64            65            64            65
BM_format_to_back_inserter<std::string>/C string len = 60                           -0.0027         -0.0041            75            75            75            75
BM_format_to_back_inserter<std::vector<char>>/C string len = 60                     +0.0228         +0.0233            89            91            89            91
BM_format_to_back_inserter<std::deque<char>>/C string len = 60                      +0.0303         +0.0312           285           294           285           294
BM_format_to_back_inserter<std::list<char>>/C string len = 60                       +0.0419         +0.0429          1164          1212          1163          1212
BM_format_to_iterator/<std::array> C string len = 60                                -0.0154         -0.0145            46            46            46            46
BM_format_to_iterator/<std::string> C string len = 60                               -0.0355         -0.0345            47            45            47            45
BM_format_to_iterator/<std::vector> C string len = 60                               -0.0161         -0.0152            46            46            46            46
BM_format_to_iterator/<std::deque> C string len = 60                                +0.0044         +0.0054            52            52            52            52
BM_format/string len = 60                                                           +0.0268         +0.0278            62            64            62            64
BM_format_to_back_inserter<std::string>/string len = 60                             -0.0031         -0.0022            75            74            75            74
BM_format_to_back_inserter<std::vector<char>>/string len = 60                       +0.0183         +0.0191            87            88            86            88
BM_format_to_back_inserter<std::deque<char>>/string len = 60                        +0.0567         +0.0578           279           295           279           295
BM_format_to_back_inserter<std::list<char>>/string len = 60                         +0.0386         +0.0396          1167          1212          1165          1212
BM_format_to_iterator/<std::array> string len = 60                                  -0.0094         -0.0084            47            46            47            46
BM_format_to_iterator/<std::string> string len = 60                                 -0.0268         -0.0259            47            46            47            46
BM_format_to_iterator/<std::vector> string len = 60                                 -0.0082         -0.0073            46            46            46            46
BM_format_to_iterator/<std::deque> string len = 60                                  +0.0254         +0.0264            52            54            52            54
BM_format/string_view len = 60                                                      -0.0084         -0.0075            62            62            62            62
BM_format_to_back_inserter<std::string>/string_view len = 60                        -0.0001         +0.0008            74            74            74            74
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60                  +0.0145         +0.0154            86            88            86            88
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60                   +0.0411         +0.0420           279           291           279           291
BM_format_to_back_inserter<std::list<char>>/string_view len = 60                    +0.0358         +0.0368          1164          1205          1163          1205
BM_format_to_iterator/<std::array> string_view len = 60                             -0.0306         -0.0297            47            45            47            45
BM_format_to_iterator/<std::string> string_view len = 60                            -0.0321         -0.0312            46            45            46            45
BM_format_to_iterator/<std::vector> string_view len = 60                            -0.0320         -0.0311            46            45            46            45
BM_format_to_iterator/<std::deque> string_view len = 60                             +0.0039         +0.0048            52            52            52            52
BM_sprintf/C string len = 6000                                                      +0.4788         +0.4802            77           114            77           114
BM_format/C string len = 6000                                                       -0.0087         -0.0078           345           342           345           342
BM_format_to_back_inserter<std::string>/C string len = 6000                         +0.0104         +0.0114          1001          1011          1000          1011
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000                   +0.0195         +0.0206           972           991           971           991
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000                    -0.0092         -0.0082         15129         14990         15114         14990
BM_format_to_back_inserter<std::list<char>>/C string len = 6000                     -0.0017         -0.0007        115290        115092        115167        115090
BM_format_to_iterator/<std::array> C string len = 6000                              -0.0136         -0.0127           161           159           161           159
BM_format_to_iterator/<std::string> C string len = 6000                             -0.0442         -0.0433           154           147           154           147
BM_format_to_iterator/<std::vector> C string len = 6000                             -0.0148         -0.0139           150           148           150           148
BM_format_to_iterator/<std::deque> C string len = 6000                              -0.3357         -0.3350           463           308           463           308
BM_format/string len = 6000                                                         +0.0329         +0.0341           282           291           281           291
BM_format_to_back_inserter<std::string>/string len = 6000                           +0.0289         +0.0299           941           968           940           968
BM_format_to_back_inserter<std::vector<char>>/string len = 6000                     +0.0058         +0.0068           933           938           932           938
BM_format_to_back_inserter<std::deque<char>>/string len = 6000                      -0.0053         -0.0043         15110         15029         15095         15030
BM_format_to_back_inserter<std::list<char>>/string len = 6000                       +0.0041         +0.0065        115131        115601        114854        115597
BM_format_to_iterator/<std::array> string len = 6000                                -0.0028         +0.0000           119           118           118           118
BM_format_to_iterator/<std::string> string len = 6000                               -0.0214         -0.0190           108           105           107           105
BM_format_to_iterator/<std::vector> string len = 6000                               -0.0125         -0.0100           107           105           107           105
BM_format_to_iterator/<std::deque> string len = 6000                                -0.3286         -0.3269           395           265           394           265
BM_format/string_view len = 6000                                                    +0.0084         +0.0110           282           284           281           284
BM_format_to_back_inserter<std::string>/string_view len = 6000                      +0.0347         +0.0373           936           969           934           969
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000                +0.0148         +0.0173           925           938           922           938
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000                 -0.0049         -0.0025         15072         14999         15036         14999
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000                  +0.0017         +0.0040        115332        115524        115059        115520
BM_format_to_iterator/<std::array> string_view len = 6000                           -0.0174         -0.0147           119           117           119           117
BM_format_to_iterator/<std::string> string_view len = 6000                          -0.0269         -0.0245           108           105           107           105
BM_format_to_iterator/<std::vector> string_view len = 6000                          -0.0226         -0.0202           107           105           107           105
BM_format_to_iterator/<std::deque> string_view len = 6000                           -0.3463         -0.3447           392           256           391           256
OVERALL_GEOMEAN                                                                     -0.0089         -0.0087             0             0             0             0


format_to:

Before
--------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                Time             CPU   Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------------------
BM_format_to_string_back_inserter<std::string>/1                      55.3 ns         55.2 ns     12600282 bytes_per_second=17.2841Mi/s
BM_format_to_string_back_inserter<std::string>/2                      55.3 ns         55.2 ns     12711392 bytes_per_second=34.584Mi/s
BM_format_to_string_back_inserter<std::string>/4                      55.3 ns         55.2 ns     12668346 bytes_per_second=69.1337Mi/s
BM_format_to_string_back_inserter<std::string>/8                      55.0 ns         54.8 ns     12806254 bytes_per_second=139.148Mi/s
BM_format_to_string_back_inserter<std::string>/16                     55.0 ns         54.9 ns     12771640 bytes_per_second=278.038Mi/s
BM_format_to_string_back_inserter<std::string>/32                     74.3 ns         74.1 ns      9425332 bytes_per_second=411.691Mi/s
BM_format_to_string_back_inserter<std::string>/64                     74.3 ns         74.1 ns      9467958 bytes_per_second=823.72Mi/s
BM_format_to_string_back_inserter<std::string>/128                    75.6 ns         75.4 ns      9244814 bytes_per_second=1.58012Gi/s
BM_format_to_string_back_inserter<std::string>/256                    90.4 ns         90.1 ns      7758708 bytes_per_second=2.64476Gi/s
BM_format_to_string_back_inserter<std::string>/512                     136 ns          135 ns      5171079 bytes_per_second=3.52016Gi/s
BM_format_to_string_back_inserter<std::string>/1024                    253 ns          252 ns      2766944 bytes_per_second=3.77704Gi/s
BM_format_to_string_back_inserter<std::string>/2048                    410 ns          409 ns      1711155 bytes_per_second=4.66192Gi/s
BM_format_to_string_back_inserter<std::string>/4096                    662 ns          660 ns      1063114 bytes_per_second=5.77795Gi/s
BM_format_to_string_back_inserter<std::string>/8192                   1124 ns         1121 ns       626215 bytes_per_second=6.80694Gi/s
BM_format_to_string_back_inserter<std::string>/16384                  2228 ns         2222 ns       315523 bytes_per_second=6.86706Gi/s
BM_format_to_string_back_inserter<std::string>/32768                  4795 ns         4783 ns       146357 bytes_per_second=6.38068Gi/s
BM_format_to_string_back_inserter<std::string>/65536                  8433 ns         8412 ns        83268 bytes_per_second=7.25532Gi/s
BM_format_to_string_back_inserter<std::string>/131072                44973 ns        44732 ns        15650 bytes_per_second=2.7289Gi/s
BM_format_to_string_back_inserter<std::string>/262144               134871 ns       134517 ns         5205 bytes_per_second=1.81495Gi/s
BM_format_to_string_back_inserter<std::string>/524288               316669 ns       316613 ns         2208 bytes_per_second=1.5422Gi/s
BM_format_to_string_back_inserter<std::string>/1048576              677580 ns       677582 ns         1036 bytes_per_second=1.44125Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1                69.9 ns         69.9 ns      9994480 bytes_per_second=13.6348Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/2                70.1 ns         70.1 ns      9995724 bytes_per_second=27.2205Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/4                71.3 ns         71.3 ns      9850375 bytes_per_second=53.5283Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/8                73.8 ns         73.8 ns      9486647 bytes_per_second=103.44Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/16               78.7 ns         78.7 ns      8873541 bytes_per_second=193.765Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/32               88.7 ns         88.7 ns      7913676 bytes_per_second=344.039Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/64               90.2 ns         90.2 ns      7740112 bytes_per_second=676.676Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/128              92.2 ns         92.2 ns      7569110 bytes_per_second=1.29352Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/256               106 ns          106 ns      6612544 bytes_per_second=2.25002Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/512               163 ns          163 ns      4299613 bytes_per_second=2.9327Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1024              240 ns          240 ns      2919691 bytes_per_second=3.98065Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/2048              400 ns          400 ns      1749907 bytes_per_second=4.76489Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/4096              635 ns          635 ns      1101669 bytes_per_second=6.00718Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/8192             1064 ns         1064 ns       655668 bytes_per_second=7.17313Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/16384            1986 ns         1986 ns       352665 bytes_per_second=7.68268Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/32768            3834 ns         3835 ns       182295 bytes_per_second=7.95861Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/65536            7388 ns         7388 ns        94038 bytes_per_second=8.26153Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/131072          17454 ns        17454 ns        40109 bytes_per_second=6.99363Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/262144          36133 ns        36133 ns        19353 bytes_per_second=6.75666Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/524288          73310 ns        73310 ns         9556 bytes_per_second=6.66053Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1048576        145001 ns       144996 ns         4828 bytes_per_second=6.73509Gi/s
BM_format_to_string_back_inserter<std::list<char>>/1                  62.9 ns         62.9 ns     11119088 bytes_per_second=15.1622Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2                  76.0 ns         76.0 ns      9212976 bytes_per_second=25.0904Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4                   103 ns          103 ns      6740929 bytes_per_second=36.8618Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8                   171 ns          171 ns      4096894 bytes_per_second=44.6147Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16                  324 ns          324 ns      2147006 bytes_per_second=47.0328Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32                  638 ns          638 ns      1096597 bytes_per_second=47.799Mi/s
BM_format_to_string_back_inserter<std::list<char>>/64                 1230 ns         1230 ns       570396 bytes_per_second=49.6318Mi/s
BM_format_to_string_back_inserter<std::list<char>>/128                2427 ns         2427 ns       289550 bytes_per_second=50.306Mi/s
BM_format_to_string_back_inserter<std::list<char>>/256                4847 ns         4847 ns       144614 bytes_per_second=50.3648Mi/s
BM_format_to_string_back_inserter<std::list<char>>/512                9656 ns         9656 ns        72476 bytes_per_second=50.5676Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1024              19415 ns        19416 ns        35934 bytes_per_second=50.298Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2048              38927 ns        38928 ns        17986 bytes_per_second=50.173Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4096              78062 ns        78064 ns         8967 bytes_per_second=50.0392Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8192             156624 ns       156628 ns         4464 bytes_per_second=49.8795Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16384            313781 ns       313788 ns         2232 bytes_per_second=49.7948Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32768            626674 ns       626667 ns         1112 bytes_per_second=49.867Mi/s
BM_format_to_string_back_inserter<std::list<char>>/65536           1248918 ns      1248933 ns          558 bytes_per_second=50.0427Mi/s
BM_format_to_string_back_inserter<std::list<char>>/131072          2512031 ns      2511949 ns          277 bytes_per_second=49.7622Mi/s
BM_format_to_string_back_inserter<std::list<char>>/262144          5118786 ns      5118308 ns          126 bytes_per_second=48.8443Mi/s
BM_format_to_string_back_inserter<std::list<char>>/524288         10395742 ns     10395288 ns           63 bytes_per_second=48.0987Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1048576        21110172 ns     21110073 ns           31 bytes_per_second=47.3708Mi/s
BM_format_to_string_begin<std::string>/1                              47.0 ns         47.0 ns     14928464 bytes_per_second=20.2942Mi/s
BM_format_to_string_begin<std::string>/2                              47.0 ns         47.0 ns     14889677 bytes_per_second=40.5641Mi/s
BM_format_to_string_begin<std::string>/4                              47.1 ns         47.1 ns     14877893 bytes_per_second=81.0735Mi/s
BM_format_to_string_begin<std::string>/8                              47.0 ns         47.0 ns     14855791 bytes_per_second=162.307Mi/s
BM_format_to_string_begin<std::string>/16                             47.1 ns         47.1 ns     14867291 bytes_per_second=324.274Mi/s
BM_format_to_string_begin<std::string>/32                             47.0 ns         47.0 ns     14863938 bytes_per_second=649.013Mi/s
BM_format_to_string_begin<std::string>/64                             46.5 ns         46.5 ns     14004459 bytes_per_second=1.28171Gi/s
BM_format_to_string_begin<std::string>/128                            47.1 ns         47.1 ns     14831108 bytes_per_second=2.53299Gi/s
BM_format_to_string_begin<std::string>/256                            51.6 ns         51.6 ns     13604783 bytes_per_second=4.62228Gi/s
BM_format_to_string_begin<std::string>/512                            50.0 ns         50.0 ns     13980138 bytes_per_second=9.53155Gi/s
BM_format_to_string_begin<std::string>/1024                           59.2 ns         59.2 ns     11872452 bytes_per_second=16.1221Gi/s
BM_format_to_string_begin<std::string>/2048                           69.0 ns         69.0 ns     10128771 bytes_per_second=27.6377Gi/s
BM_format_to_string_begin<std::string>/4096                            100 ns          100 ns      6963452 bytes_per_second=38.0663Gi/s
BM_format_to_string_begin<std::string>/8192                            151 ns          151 ns      4635381 bytes_per_second=50.5416Gi/s
BM_format_to_string_begin<std::string>/16384                           314 ns          314 ns      2233442 bytes_per_second=48.5983Gi/s
BM_format_to_string_begin<std::string>/32768                          1336 ns         1336 ns       524989 bytes_per_second=22.8492Gi/s
BM_format_to_string_begin<std::string>/65536                          3763 ns         3763 ns       185762 bytes_per_second=16.2188Gi/s
BM_format_to_string_begin<std::string>/131072                         6556 ns         6556 ns       106616 bytes_per_second=18.6207Gi/s
BM_format_to_string_begin<std::string>/262144                        13979 ns        13979 ns        50149 bytes_per_second=17.4643Gi/s
BM_format_to_string_begin<std::string>/524288                        28719 ns        28719 ns        24379 bytes_per_second=17.0019Gi/s
BM_format_to_string_begin<std::string>/1048576                       57299 ns        57299 ns        12180 bytes_per_second=17.0432Gi/s
BM_format_to_string_begin<std::vector<char>>/1                        46.1 ns         46.1 ns     15188343 bytes_per_second=20.6809Mi/s
BM_format_to_string_begin<std::vector<char>>/2                        46.1 ns         46.1 ns     15158904 bytes_per_second=41.3318Mi/s
BM_format_to_string_begin<std::vector<char>>/4                        46.1 ns         46.1 ns     15170378 bytes_per_second=82.6776Mi/s
BM_format_to_string_begin<std::vector<char>>/8                        45.7 ns         45.7 ns     15315671 bytes_per_second=167.026Mi/s
BM_format_to_string_begin<std::vector<char>>/16                       46.2 ns         46.2 ns     15163881 bytes_per_second=330.559Mi/s
BM_format_to_string_begin<std::vector<char>>/32                       46.1 ns         46.1 ns     15201091 bytes_per_second=661.98Mi/s
BM_format_to_string_begin<std::vector<char>>/64                       46.2 ns         46.2 ns     14183997 bytes_per_second=1.28927Gi/s
BM_format_to_string_begin<std::vector<char>>/128                      46.7 ns         46.7 ns     14987395 bytes_per_second=2.55007Gi/s
BM_format_to_string_begin<std::vector<char>>/256                      51.3 ns         51.3 ns     13898949 bytes_per_second=4.64462Gi/s
BM_format_to_string_begin<std::vector<char>>/512                      50.1 ns         50.1 ns     10000000 bytes_per_second=9.52165Gi/s
BM_format_to_string_begin<std::vector<char>>/1024                     59.2 ns         59.2 ns     11805042 bytes_per_second=16.105Gi/s
BM_format_to_string_begin<std::vector<char>>/2048                     69.0 ns         69.0 ns     10139614 bytes_per_second=27.6266Gi/s
BM_format_to_string_begin<std::vector<char>>/4096                     97.6 ns         97.6 ns      7179535 bytes_per_second=39.0938Gi/s
BM_format_to_string_begin<std::vector<char>>/8192                      152 ns          152 ns      4610486 bytes_per_second=50.227Gi/s
BM_format_to_string_begin<std::vector<char>>/16384                     314 ns          314 ns      2230251 bytes_per_second=48.5946Gi/s
BM_format_to_string_begin<std::vector<char>>/32768                    1333 ns         1333 ns       525550 bytes_per_second=22.8868Gi/s
BM_format_to_string_begin<std::vector<char>>/65536                    3760 ns         3760 ns       185821 bytes_per_second=16.2322Gi/s
BM_format_to_string_begin<std::vector<char>>/131072                   6479 ns         6480 ns       107960 bytes_per_second=18.8391Gi/s
BM_format_to_string_begin<std::vector<char>>/262144                  14164 ns        14164 ns        49862 bytes_per_second=17.2368Gi/s
BM_format_to_string_begin<std::vector<char>>/524288                  28916 ns        28916 ns        24149 bytes_per_second=16.8861Gi/s
BM_format_to_string_begin<std::vector<char>>/1048576                 57621 ns        57622 ns        12140 bytes_per_second=16.9478Gi/s
BM_format_to_string_begin<std::list<char>>/1                          47.6 ns         47.6 ns     14675857 bytes_per_second=20.0271Mi/s
BM_format_to_string_begin<std::list<char>>/2                          48.8 ns         48.8 ns     14331930 bytes_per_second=39.1155Mi/s
BM_format_to_string_begin<std::list<char>>/4                          50.9 ns         50.9 ns     13747606 bytes_per_second=74.9309Mi/s
BM_format_to_string_begin<std::list<char>>/8                          63.4 ns         63.4 ns     11065440 bytes_per_second=120.329Mi/s
BM_format_to_string_begin<std::list<char>>/16                         82.4 ns         82.4 ns      8510480 bytes_per_second=185.222Mi/s
BM_format_to_string_begin<std::list<char>>/32                          126 ns          126 ns      5564932 bytes_per_second=242.653Mi/s
BM_format_to_string_begin<std::list<char>>/64                          211 ns          211 ns      3311820 bytes_per_second=289.214Mi/s
BM_format_to_string_begin<std::list<char>>/128                         384 ns          384 ns      1825012 bytes_per_second=318.238Mi/s
BM_format_to_string_begin<std::list<char>>/256                         735 ns          735 ns       951285 bytes_per_second=332.108Mi/s
BM_format_to_string_begin<std::list<char>>/512                        1428 ns         1428 ns       489437 bytes_per_second=341.969Mi/s
BM_format_to_string_begin<std::list<char>>/1024                       2792 ns         2792 ns       242406 bytes_per_second=349.822Mi/s
BM_format_to_string_begin<std::list<char>>/2048                       5594 ns         5594 ns       124188 bytes_per_second=349.129Mi/s
BM_format_to_string_begin<std::list<char>>/4096                      11163 ns        11163 ns        62794 bytes_per_second=349.936Mi/s
BM_format_to_string_begin<std::list<char>>/8192                      22339 ns        22339 ns        31335 bytes_per_second=349.718Mi/s
BM_format_to_string_begin<std::list<char>>/16384                     44673 ns        44674 ns        15675 bytes_per_second=349.754Mi/s
BM_format_to_string_begin<std::list<char>>/32768                     89015 ns        89016 ns         7849 bytes_per_second=351.06Mi/s
BM_format_to_string_begin<std::list<char>>/65536                    177988 ns       177989 ns         3938 bytes_per_second=351.145Mi/s
BM_format_to_string_begin<std::list<char>>/131072                   362715 ns       362697 ns         1933 bytes_per_second=344.64Mi/s
BM_format_to_string_begin<std::list<char>>/262144                   846730 ns       846685 ns          825 bytes_per_second=295.269Mi/s
BM_format_to_string_begin<std::list<char>>/524288                  2018755 ns      2018721 ns          347 bytes_per_second=247.682Mi/s
BM_format_to_string_begin<std::list<char>>/1048576                 4225251 ns      4225188 ns          165 bytes_per_second=236.676Mi/s
BM_format_to_string_span<char>/1                                      46.2 ns         46.2 ns     15156896 bytes_per_second=20.6258Mi/s
BM_format_to_string_span<char>/2                                      46.3 ns         46.3 ns     15114242 bytes_per_second=41.1559Mi/s
BM_format_to_string_span<char>/4                                      46.4 ns         46.4 ns     15089475 bytes_per_second=82.1686Mi/s
BM_format_to_string_span<char>/8                                      45.9 ns         45.9 ns     15249334 bytes_per_second=166.143Mi/s
BM_format_to_string_span<char>/16                                     46.3 ns         46.3 ns     15087074 bytes_per_second=329.233Mi/s
BM_format_to_string_span<char>/32                                     46.4 ns         46.4 ns     15099464 bytes_per_second=657.611Mi/s
BM_format_to_string_span<char>/64                                     46.4 ns         46.4 ns     14101746 bytes_per_second=1.2849Gi/s
BM_format_to_string_span<char>/128                                    47.0 ns         47.0 ns     14919410 bytes_per_second=2.53769Gi/s
BM_format_to_string_span<char>/256                                    50.8 ns         50.8 ns     13874090 bytes_per_second=4.69274Gi/s
BM_format_to_string_span<char>/512                                    50.5 ns         50.5 ns     13849265 bytes_per_second=9.44604Gi/s
BM_format_to_string_span<char>/1024                                   59.6 ns         59.6 ns     11774716 bytes_per_second=16.008Gi/s
BM_format_to_string_span<char>/2048                                   69.3 ns         69.3 ns     10102354 bytes_per_second=27.5137Gi/s
BM_format_to_string_span<char>/4096                                   98.0 ns         98.0 ns      7137947 bytes_per_second=38.9144Gi/s
BM_format_to_string_span<char>/8192                                    153 ns          153 ns      4585057 bytes_per_second=49.9901Gi/s
BM_format_to_string_span<char>/16384                                   316 ns          316 ns      2225896 bytes_per_second=48.3398Gi/s
BM_format_to_string_span<char>/32768                                  1339 ns         1339 ns       520365 bytes_per_second=22.7872Gi/s
BM_format_to_string_span<char>/65536                                  3780 ns         3780 ns       184720 bytes_per_second=16.1474Gi/s
BM_format_to_string_span<char>/131072                                 6557 ns         6557 ns       106444 bytes_per_second=18.6157Gi/s
BM_format_to_string_span<char>/262144                                14199 ns        14199 ns        49363 bytes_per_second=17.1939Gi/s
BM_format_to_string_span<char>/524288                                28833 ns        28834 ns        24254 bytes_per_second=16.9343Gi/s
BM_format_to_string_span<char>/1048576                               57660 ns        57660 ns        12166 bytes_per_second=16.9365Gi/s
BM_format_to_string_pointer<char>/1                                   46.4 ns         46.4 ns     15070582 bytes_per_second=20.5355Mi/s
BM_format_to_string_pointer<char>/2                                   46.5 ns         46.5 ns     15064611 bytes_per_second=41.0239Mi/s
BM_format_to_string_pointer<char>/4                                   46.4 ns         46.4 ns     15080092 bytes_per_second=82.1674Mi/s
BM_format_to_string_pointer<char>/8                                   45.9 ns         45.9 ns     15239465 bytes_per_second=166.094Mi/s
BM_format_to_string_pointer<char>/16                                  46.4 ns         46.4 ns     15077440 bytes_per_second=328.884Mi/s
BM_format_to_string_pointer<char>/32                                  46.4 ns         46.4 ns     15070278 bytes_per_second=657.438Mi/s
BM_format_to_string_pointer<char>/64                                  46.4 ns         46.4 ns     14094814 bytes_per_second=1.28358Gi/s
BM_format_to_string_pointer<char>/128                                 46.8 ns         46.8 ns     14894522 bytes_per_second=2.54466Gi/s
BM_format_to_string_pointer<char>/256                                 51.2 ns         51.2 ns     13908865 bytes_per_second=4.65713Gi/s
BM_format_to_string_pointer<char>/512                                 50.2 ns         50.2 ns     13999036 bytes_per_second=9.5049Gi/s
BM_format_to_string_pointer<char>/1024                                59.4 ns         59.4 ns     11805502 bytes_per_second=16.0611Gi/s
BM_format_to_string_pointer<char>/2048                                69.1 ns         69.1 ns     10114415 bytes_per_second=27.5936Gi/s
BM_format_to_string_pointer<char>/4096                                97.6 ns         97.6 ns      7154104 bytes_per_second=39.0914Gi/s
BM_format_to_string_pointer<char>/8192                                 151 ns          151 ns      4653492 bytes_per_second=50.6101Gi/s
BM_format_to_string_pointer<char>/16384                                314 ns          314 ns      2222259 bytes_per_second=48.6129Gi/s
BM_format_to_string_pointer<char>/32768                               1336 ns         13…

>From 0b9f969b2a9676bd62995d0d0a46460cf12cd9b5 Mon Sep 17 00:00:00 2001
From: Mark de Wever <koraq at xs4all.nl>
Date: Sat, 30 Mar 2024 17:35:56 +0100
Subject: [PATCH] [libc++][format][4/7] Improves std::format_to performance.

This changes the __output_buffer users for format_to to the new structure.
It also uses the new allocating buffer to improve performance.

write_double_comparison:

Before
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                           197 ns          197 ns      3537000
BM_to_string                                         219 ns          219 ns      3200000
BM_to_chars                                         42.3 ns         42.3 ns     16490000
BM_to_chars_as_string                               48.1 ns         48.1 ns     14508000
BM_format                                            167 ns          167 ns      4207000
BM_format_to_back_inserter<std::string>              179 ns          179 ns      3914000
BM_format_to_back_inserter<std::vector<char>>        216 ns          216 ns      3234000
BM_format_to_back_inserter<std::list<char>>          752 ns          752 ns       932000
BM_format_to_iterator/<std::array>                   165 ns          165 ns      4257000
BM_format_to_iterator/<std::string>                  165 ns          165 ns      4251000
BM_format_to_iterator/<std::vector>                  165 ns          165 ns      4254000

After
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                           197 ns          197 ns      3548000
BM_to_string                                         219 ns          219 ns      3203000
BM_to_chars                                         42.3 ns         42.3 ns     16540000
BM_to_chars_as_string                               48.2 ns         48.2 ns     14532000
BM_format                                            167 ns          167 ns      4190000
BM_format_to_back_inserter<std::string>              176 ns          176 ns      3959000
BM_format_to_back_inserter<std::vector<char>>        211 ns          211 ns      3312000
BM_format_to_back_inserter<std::list<char>>          752 ns          752 ns       934000
BM_format_to_iterator/<std::array>                   162 ns          162 ns      4313000
BM_format_to_iterator/<std::string>                  162 ns          162 ns      4307000
BM_format_to_iterator/<std::vector>                  162 ns          162 ns      4308000

Comparison
Benchmark                                                       Time             CPU      Time Old      Time New       CPU Old       CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf                                                   +0.0003         +0.0002           197           197           197           197
BM_to_string                                                 -0.0004         -0.0004           219           219           219           219
BM_to_chars                                                  +0.0003         +0.0003            42            42            42            42
BM_to_chars_as_string                                        +0.0004         +0.0004            48            48            48            48
BM_format                                                    +0.0016         +0.0016           167           167           167           167
BM_format_to_back_inserter<std::string>                      -0.0128         -0.0127           179           176           179           176
BM_format_to_back_inserter<std::vector<char>>                -0.0216         -0.0216           216           211           216           211
BM_format_to_back_inserter<std::list<char>>                  -0.0008         -0.0008           752           752           752           752
BM_format_to_iterator/<std::array>                           -0.0137         -0.0137           165           162           165           162
BM_format_to_iterator/<std::string>                          -0.0154         -0.0153           165           162           165           162
BM_format_to_iterator/<std::vector>                          -0.0138         -0.0138           165           162           165           162
OVERALL_GEOMEAN                                              -0.0069         -0.0069             0             0             0             0


write_int_comparison:

Before
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                          80.3 ns         80.1 ns      8703000
BM_to_string                                        15.0 ns         14.9 ns     46849000
BM_to_chars                                         4.94 ns         4.92 ns    139052000
BM_to_chars_as_string                               15.6 ns         15.6 ns     44945000
BM_format                                           62.1 ns         61.9 ns     11302000
BM_format_to_back_inserter<std::string>             70.3 ns         70.1 ns      9984000
BM_format_to_back_inserter<std::vector<char>>       92.9 ns         92.7 ns      7520000
BM_format_to_back_inserter<std::list<char>>          239 ns          239 ns      2926000
BM_format_to_iterator/<std::array>                  60.6 ns         60.4 ns     11582000
BM_format_to_iterator/<std::string>                 60.2 ns         60.0 ns     11671000
BM_format_to_iterator/<std::vector>                 60.1 ns         60.0 ns     11691000

After
----------------------------------------------------------------------------------------
Benchmark                                              Time             CPU   Iterations
----------------------------------------------------------------------------------------
BM_sprintf                                          81.3 ns         81.2 ns      8546000
BM_to_string                                        14.9 ns         14.9 ns     46809000
BM_to_chars                                         4.93 ns         4.93 ns    138278000
BM_to_chars_as_string                               15.4 ns         15.4 ns     45504000
BM_format                                           62.0 ns         61.9 ns     11330000
BM_format_to_back_inserter<std::string>             69.0 ns         68.9 ns     10164000
BM_format_to_back_inserter<std::vector<char>>       90.4 ns         90.3 ns      7736000
BM_format_to_back_inserter<std::list<char>>          242 ns          242 ns      2891000
BM_format_to_iterator/<std::array>                  58.6 ns         58.6 ns     11952000
BM_format_to_iterator/<std::string>                 58.2 ns         58.1 ns     12052000
BM_format_to_iterator/<std::vector>                 58.4 ns         58.3 ns     11983000

Comparison
Benchmark                                                       Time             CPU      Time Old      Time New       CPU Old       CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf                                                   +0.0116         +0.0132            80            81            80            81
BM_to_string                                                 -0.0050         -0.0036            15            15            15            15
BM_to_chars                                                  -0.0005         +0.0010             5             5             5             5
BM_to_chars_as_string                                        -0.0168         -0.0149            16            15            16            15
BM_format                                                    -0.0015         +0.0001            62            62            62            62
BM_format_to_back_inserter<std::string>                      -0.0186         -0.0172            70            69            70            69
BM_format_to_back_inserter<std::vector<char>>                -0.0271         -0.0256            93            90            93            90
BM_format_to_back_inserter<std::list<char>>                  +0.0104         +0.0119           239           242           239           242
BM_format_to_iterator/<std::array>                           -0.0322         -0.0304            61            59            60            59
BM_format_to_iterator/<std::string>                          -0.0330         -0.0317            60            58            60            58
BM_format_to_iterator/<std::vector>                          -0.0285         -0.0270            60            58            60            58
OVERALL_GEOMEAN                                              -0.0130         -0.0114             0             0             0             0


write_string_comparison:

Before
---------------------------------------------------------------------------------------------------------------
Benchmark                                                                     Time             CPU   Iterations
---------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6                                                3.58 ns         3.58 ns    195215226
BM_format/C string len = 6                                                 49.6 ns         49.6 ns     14114169
BM_format_to_back_inserter<std::string>/C string len = 6                   56.8 ns         56.7 ns     12354503
BM_format_to_back_inserter<std::vector<char>>/C string len = 6             73.0 ns         72.9 ns      9558050
BM_format_to_back_inserter<std::deque<char>>/C string len = 6               156 ns          156 ns      4498803
BM_format_to_back_inserter<std::list<char>>/C string len = 6                136 ns          136 ns      5164775
BM_format_to_iterator/<std::array> C string len = 6                        46.6 ns         46.5 ns     15056991
BM_format_to_iterator/<std::string> C string len = 6                       47.2 ns         47.1 ns     14865806
BM_format_to_iterator/<std::vector> C string len = 6                       46.4 ns         46.4 ns     15115383
BM_format_to_iterator/<std::deque> C string len = 6                        52.5 ns         52.4 ns     13340197
BM_format/string len = 6                                                   49.7 ns         49.6 ns     14109221
BM_format_to_back_inserter<std::string>/string len = 6                     55.7 ns         55.6 ns     12566789
BM_format_to_back_inserter<std::vector<char>>/string len = 6               73.0 ns         72.9 ns      9615078
BM_format_to_back_inserter<std::deque<char>>/string len = 6                 155 ns          154 ns      4527026
BM_format_to_back_inserter<std::list<char>>/string len = 6                  133 ns          133 ns      5260984
BM_format_to_iterator/<std::array> string len = 6                          46.7 ns         46.7 ns     14997233
BM_format_to_iterator/<std::string> string len = 6                         47.3 ns         47.3 ns     14823572
BM_format_to_iterator/<std::vector> string len = 6                         46.4 ns         46.4 ns     15096193
BM_format_to_iterator/<std::deque> string len = 6                          52.8 ns         52.8 ns     13255170
BM_format/string_view len = 6                                              48.9 ns         48.9 ns     14343000
BM_format_to_back_inserter<std::string>/string_view len = 6                56.2 ns         56.2 ns     12465511
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6          72.0 ns         72.0 ns      9713443
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6            153 ns          153 ns      4567407
BM_format_to_back_inserter<std::list<char>>/string_view len = 6             132 ns          132 ns      5299318
BM_format_to_iterator/<std::array> string_view len = 6                     46.3 ns         46.3 ns     15136404
BM_format_to_iterator/<std::string> string_view len = 6                    46.3 ns         46.2 ns     15109243
BM_format_to_iterator/<std::vector> string_view len = 6                    46.2 ns         46.2 ns     15109163
BM_format_to_iterator/<std::deque> string_view len = 6                     51.7 ns         51.6 ns     13596607
BM_sprintf/C string len = 60                                               4.84 ns         4.84 ns    144840145
BM_format/C string len = 60                                                63.7 ns         63.6 ns     10992968
BM_format_to_back_inserter<std::string>/C string len = 60                  75.1 ns         75.0 ns      9344335
BM_format_to_back_inserter<std::vector<char>>/C string len = 60            88.7 ns         88.6 ns      7890501
BM_format_to_back_inserter<std::deque<char>>/C string len = 60              285 ns          285 ns      2456362
BM_format_to_back_inserter<std::list<char>>/C string len = 60              1164 ns         1163 ns       601922
BM_format_to_iterator/<std::array> C string len = 60                       46.3 ns         46.3 ns     15130688
BM_format_to_iterator/<std::string> C string len = 60                      47.0 ns         47.0 ns     14932772
BM_format_to_iterator/<std::vector> C string len = 60                      46.4 ns         46.3 ns     15105615
BM_format_to_iterator/<std::deque> C string len = 60                       52.1 ns         52.1 ns     13457398
BM_format/string len = 60                                                  62.2 ns         62.2 ns     11214844
BM_format_to_back_inserter<std::string>/string len = 60                    74.7 ns         74.7 ns      9362502
BM_format_to_back_inserter<std::vector<char>>/string len = 60              86.6 ns         86.5 ns      8089613
BM_format_to_back_inserter<std::deque<char>>/string len = 60                279 ns          279 ns      2512066
BM_format_to_back_inserter<std::list<char>>/string len = 60                1167 ns         1165 ns       599277
BM_format_to_iterator/<std::array> string len = 60                         46.7 ns         46.7 ns     15001681
BM_format_to_iterator/<std::string> string len = 60                        47.3 ns         47.2 ns     14812974
BM_format_to_iterator/<std::vector> string len = 60                        46.4 ns         46.4 ns     15082006
BM_format_to_iterator/<std::deque> string len = 60                         52.3 ns         52.2 ns     13388503
BM_format/string_view len = 60                                             62.1 ns         62.0 ns     11284789
BM_format_to_back_inserter<std::string>/string_view len = 60               74.4 ns         74.3 ns      9417398
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60         86.4 ns         86.3 ns      8130553
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60           279 ns          279 ns      2504047
BM_format_to_back_inserter<std::list<char>>/string_view len = 60           1164 ns         1163 ns       602294
BM_format_to_iterator/<std::array> string_view len = 60                    46.7 ns         46.6 ns     15000596
BM_format_to_iterator/<std::string> string_view len = 60                   46.4 ns         46.4 ns     15109351
BM_format_to_iterator/<std::vector> string_view len = 60                   46.4 ns         46.4 ns     15094222
BM_format_to_iterator/<std::deque> string_view len = 60                    52.1 ns         52.1 ns     13453584
BM_sprintf/C string len = 6000                                             77.1 ns         77.0 ns      9095120
BM_format/C string len = 6000                                               345 ns          345 ns      2032789
BM_format_to_back_inserter<std::string>/C string len = 6000                1001 ns         1000 ns       697688
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000           972 ns          971 ns       720843
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000          15129 ns        15114 ns        46330
BM_format_to_back_inserter<std::list<char>>/C string len = 6000          115290 ns       115167 ns         6065
BM_format_to_iterator/<std::array> C string len = 6000                      161 ns          161 ns      4358261
BM_format_to_iterator/<std::string> C string len = 6000                     154 ns          154 ns      4559197
BM_format_to_iterator/<std::vector> C string len = 6000                     150 ns          150 ns      4660257
BM_format_to_iterator/<std::deque> C string len = 6000                      463 ns          463 ns      1512400
BM_format/string len = 6000                                                 282 ns          281 ns      2494935
BM_format_to_back_inserter<std::string>/string len = 6000                   941 ns          940 ns       742779
BM_format_to_back_inserter<std::vector<char>>/string len = 6000             933 ns          932 ns       749515
BM_format_to_back_inserter<std::deque<char>>/string len = 6000            15110 ns        15095 ns        46447
BM_format_to_back_inserter<std::list<char>>/string len = 6000            115131 ns       114854 ns         6080
BM_format_to_iterator/<std::array> string len = 6000                        119 ns          118 ns      5903779
BM_format_to_iterator/<std::string> string len = 6000                       108 ns          107 ns      6528813
BM_format_to_iterator/<std::vector> string len = 6000                       107 ns          107 ns      6574916
BM_format_to_iterator/<std::deque> string len = 6000                        395 ns          394 ns      1776801
BM_format/string_view len = 6000                                            282 ns          281 ns      2484729
BM_format_to_back_inserter<std::string>/string_view len = 6000              936 ns          934 ns       751176
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000        925 ns          922 ns       759237
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000       15072 ns        15036 ns        46625
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000       115332 ns       115059 ns         6094
BM_format_to_iterator/<std::array> string_view len = 6000                   119 ns          119 ns      5907620
BM_format_to_iterator/<std::string> string_view len = 6000                  108 ns          107 ns      6509157
BM_format_to_iterator/<std::vector> string_view len = 6000                  107 ns          107 ns      6556001
BM_format_to_iterator/<std::deque> string_view len = 6000                   392 ns          391 ns      1791454

After
---------------------------------------------------------------------------------------------------------------
Benchmark                                                                     Time             CPU   Iterations
---------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6                                                3.57 ns         3.56 ns    196180052
BM_format/C string len = 6                                                 49.5 ns         49.4 ns     14164054
BM_format_to_back_inserter<std::string>/C string len = 6                   56.0 ns         55.9 ns     12538707
BM_format_to_back_inserter<std::vector<char>>/C string len = 6             75.9 ns         75.7 ns      9240871
BM_format_to_back_inserter<std::deque<char>>/C string len = 6               158 ns          157 ns      4451418
BM_format_to_back_inserter<std::list<char>>/C string len = 6                140 ns          140 ns      5027890
BM_format_to_iterator/<std::array> C string len = 6                        45.8 ns         45.7 ns     15319048
BM_format_to_iterator/<std::string> C string len = 6                       45.6 ns         45.5 ns     15401554
BM_format_to_iterator/<std::vector> C string len = 6                       45.8 ns         45.7 ns     15300166
BM_format_to_iterator/<std::deque> C string len = 6                        52.7 ns         52.6 ns     13285185
BM_format/string len = 6                                                   48.8 ns         48.7 ns     14348744
BM_format_to_back_inserter<std::string>/string len = 6                     55.2 ns         55.0 ns     12741162
BM_format_to_back_inserter<std::vector<char>>/string len = 6               74.1 ns         73.9 ns      9486802
BM_format_to_back_inserter<std::deque<char>>/string len = 6                 161 ns          160 ns      4378461
BM_format_to_back_inserter<std::list<char>>/string len = 6                  138 ns          138 ns      5093901
BM_format_to_iterator/<std::array> string len = 6                          46.2 ns         46.1 ns     15206070
BM_format_to_iterator/<std::string> string len = 6                         45.9 ns         45.8 ns     15308600
BM_format_to_iterator/<std::vector> string len = 6                         46.0 ns         45.7 ns     15294308
BM_format_to_iterator/<std::deque> string len = 6                          52.6 ns         52.5 ns     13337923
BM_format/string_view len = 6                                              48.0 ns         47.9 ns     14613157
BM_format_to_back_inserter<std::string>/string_view len = 6                54.6 ns         54.5 ns     12873822
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6          75.0 ns         74.8 ns      9336395
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6            157 ns          156 ns      4485483
BM_format_to_back_inserter<std::list<char>>/string_view len = 6             137 ns          137 ns      5103661
BM_format_to_iterator/<std::array> string_view len = 6                     45.2 ns         45.1 ns     15521006
BM_format_to_iterator/<std::string> string_view len = 6                    44.6 ns         44.5 ns     15774831
BM_format_to_iterator/<std::vector> string_view len = 6                    44.8 ns         44.7 ns     15675865
BM_format_to_iterator/<std::deque> string_view len = 6                     52.2 ns         52.0 ns     13439531
BM_sprintf/C string len = 60                                               4.84 ns         4.83 ns    145140791
BM_format/C string len = 60                                                65.3 ns         65.1 ns     10780458
BM_format_to_back_inserter<std::string>/C string len = 60                  74.9 ns         74.7 ns      9347593
BM_format_to_back_inserter<std::vector<char>>/C string len = 60            90.8 ns         90.7 ns      7662645
BM_format_to_back_inserter<std::deque<char>>/C string len = 60              294 ns          294 ns      2381522
BM_format_to_back_inserter<std::list<char>>/C string len = 60              1212 ns         1212 ns       577916
BM_format_to_iterator/<std::array> C string len = 60                       45.6 ns         45.6 ns     15344329
BM_format_to_iterator/<std::string> C string len = 60                      45.3 ns         45.3 ns     15441949
BM_format_to_iterator/<std::vector> C string len = 60                      45.6 ns         45.6 ns     15338324
BM_format_to_iterator/<std::deque> C string len = 60                       52.3 ns         52.3 ns     13400650
BM_format/string len = 60                                                  63.9 ns         63.9 ns     10949816
BM_format_to_back_inserter<std::string>/string len = 60                    74.5 ns         74.5 ns      9381269
BM_format_to_back_inserter<std::vector<char>>/string len = 60              88.1 ns         88.1 ns      7951042
BM_format_to_back_inserter<std::deque<char>>/string len = 60                295 ns          295 ns      2376712
BM_format_to_back_inserter<std::list<char>>/string len = 60                1212 ns         1212 ns       577933
BM_format_to_iterator/<std::array> string len = 60                         46.3 ns         46.3 ns     15126961
BM_format_to_iterator/<std::string> string len = 60                        46.0 ns         46.0 ns     15209386
BM_format_to_iterator/<std::vector> string len = 60                        46.0 ns         46.0 ns     15215256
BM_format_to_iterator/<std::deque> string len = 60                         53.6 ns         53.6 ns     13026167
BM_format/string_view len = 60                                             61.6 ns         61.6 ns     11367134
BM_format_to_back_inserter<std::string>/string_view len = 60               74.4 ns         74.4 ns      9414535
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60         87.6 ns         87.6 ns      7985409
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60           291 ns          291 ns      2409202
BM_format_to_back_inserter<std::list<char>>/string_view len = 60           1205 ns         1205 ns       580314
BM_format_to_iterator/<std::array> string_view len = 60                    45.2 ns         45.2 ns     15495462
BM_format_to_iterator/<std::string> string_view len = 60                   44.9 ns         45.0 ns     15592145
BM_format_to_iterator/<std::vector> string_view len = 60                   44.9 ns         44.9 ns     15573834
BM_format_to_iterator/<std::deque> string_view len = 60                    52.3 ns         52.3 ns     13381282
BM_sprintf/C string len = 6000                                              114 ns          114 ns      6138575
BM_format/C string len = 6000                                               342 ns          342 ns      2047071
BM_format_to_back_inserter<std::string>/C string len = 6000                1011 ns         1011 ns       691579
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000           991 ns          991 ns       711574
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000          14990 ns        14990 ns        46648
BM_format_to_back_inserter<std::list<char>>/C string len = 6000          115092 ns       115090 ns         6097
BM_format_to_iterator/<std::array> C string len = 6000                      159 ns          159 ns      4420990
BM_format_to_iterator/<std::string> C string len = 6000                     147 ns          147 ns      4762118
BM_format_to_iterator/<std::vector> C string len = 6000                     148 ns          148 ns      4733276
BM_format_to_iterator/<std::deque> C string len = 6000                      308 ns          308 ns      2278285
BM_format/string len = 6000                                                 291 ns          291 ns      2409136
BM_format_to_back_inserter<std::string>/string len = 6000                   968 ns          968 ns       721845
BM_format_to_back_inserter<std::vector<char>>/string len = 6000             938 ns          938 ns       752091
BM_format_to_back_inserter<std::deque<char>>/string len = 6000            15029 ns        15030 ns        46591
BM_format_to_back_inserter<std::list<char>>/string len = 6000            115601 ns       115597 ns         6066
BM_format_to_iterator/<std::array> string len = 6000                        118 ns          118 ns      5924962
BM_format_to_iterator/<std::string> string len = 6000                       105 ns          105 ns      6630413
BM_format_to_iterator/<std::vector> string len = 6000                       105 ns          105 ns      6628677
BM_format_to_iterator/<std::deque> string len = 6000                        265 ns          265 ns      2684420
BM_format/string_view len = 6000                                            284 ns          284 ns      2461853
BM_format_to_back_inserter<std::string>/string_view len = 6000              969 ns          969 ns       724433
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000        938 ns          938 ns       749795
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000       14999 ns        14999 ns        46697
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000       115524 ns       115520 ns         6033
BM_format_to_iterator/<std::array> string_view len = 6000                   117 ns          117 ns      5982505
BM_format_to_iterator/<std::string> string_view len = 6000                  105 ns          105 ns      6664752
BM_format_to_iterator/<std::vector> string_view len = 6000                  105 ns          105 ns      6684043
BM_format_to_iterator/<std::deque> string_view len = 6000                   256 ns          256 ns      2689843

Comparison
Benchmark                                                                              Time             CPU      Time Old      Time New       CPU Old       CPU New
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6                                                         -0.0037         -0.0051             4             4             4             4
BM_format/C string len = 6                                                          -0.0022         -0.0037            50            49            50            49
BM_format_to_back_inserter<std::string>/C string len = 6                            -0.0136         -0.0151            57            56            57            56
BM_format_to_back_inserter<std::vector<char>>/C string len = 6                      +0.0408         +0.0392            73            76            73            76
BM_format_to_back_inserter<std::deque<char>>/C string len = 6                       +0.0115         +0.0099           156           158           156           157
BM_format_to_back_inserter<std::list<char>>/C string len = 6                        +0.0325         +0.0307           136           140           136           140
BM_format_to_iterator/<std::array> C string len = 6                                 -0.0153         -0.0167            47            46            47            46
BM_format_to_iterator/<std::string> C string len = 6                                -0.0332         -0.0346            47            46            47            46
BM_format_to_iterator/<std::vector> C string len = 6                                -0.0125         -0.0141            46            46            46            46
BM_format_to_iterator/<std::deque> C string len = 6                                 +0.0041         +0.0026            52            53            52            53
BM_format/string len = 6                                                            -0.0170         -0.0185            50            49            50            49
BM_format_to_back_inserter<std::string>/string len = 6                              -0.0092         -0.0106            56            55            56            55
BM_format_to_back_inserter<std::vector<char>>/string len = 6                        +0.0153         +0.0138            73            74            73            74
BM_format_to_back_inserter<std::deque<char>>/string len = 6                         +0.0392         +0.0371           155           161           154           160
BM_format_to_back_inserter<std::list<char>>/string len = 6                          +0.0367         +0.0351           133           138           133           138
BM_format_to_iterator/<std::array> string len = 6                                   -0.0107         -0.0125            47            46            47            46
BM_format_to_iterator/<std::string> string len = 6                                  -0.0312         -0.0326            47            46            47            46
BM_format_to_iterator/<std::vector> string len = 6                                  -0.0103         -0.0144            46            46            46            46
BM_format_to_iterator/<std::deque> string len = 6                                   -0.0042         -0.0057            53            53            53            52
BM_format/string_view len = 6                                                       -0.0191         -0.0206            49            48            49            48
BM_format_to_back_inserter<std::string>/string_view len = 6                         -0.0283         -0.0298            56            55            56            54
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6                   +0.0408         +0.0389            72            75            72            75
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6                    +0.0214         +0.0199           153           157           153           156
BM_format_to_back_inserter<std::list<char>>/string_view len = 6                     +0.0407         +0.0393           132           137           132           137
BM_format_to_iterator/<std::array> string_view len = 6                              -0.0235         -0.0249            46            45            46            45
BM_format_to_iterator/<std::string> string_view len = 6                             -0.0368         -0.0385            46            45            46            44
BM_format_to_iterator/<std::vector> string_view len = 6                             -0.0293         -0.0308            46            45            46            45
BM_format_to_iterator/<std::deque> string_view len = 6                              +0.0094         +0.0079            52            52            52            52
BM_sprintf/C string len = 60                                                        -0.0004         -0.0018             5             5             5             5
BM_format/C string len = 60                                                         +0.0250         +0.0232            64            65            64            65
BM_format_to_back_inserter<std::string>/C string len = 60                           -0.0027         -0.0041            75            75            75            75
BM_format_to_back_inserter<std::vector<char>>/C string len = 60                     +0.0228         +0.0233            89            91            89            91
BM_format_to_back_inserter<std::deque<char>>/C string len = 60                      +0.0303         +0.0312           285           294           285           294
BM_format_to_back_inserter<std::list<char>>/C string len = 60                       +0.0419         +0.0429          1164          1212          1163          1212
BM_format_to_iterator/<std::array> C string len = 60                                -0.0154         -0.0145            46            46            46            46
BM_format_to_iterator/<std::string> C string len = 60                               -0.0355         -0.0345            47            45            47            45
BM_format_to_iterator/<std::vector> C string len = 60                               -0.0161         -0.0152            46            46            46            46
BM_format_to_iterator/<std::deque> C string len = 60                                +0.0044         +0.0054            52            52            52            52
BM_format/string len = 60                                                           +0.0268         +0.0278            62            64            62            64
BM_format_to_back_inserter<std::string>/string len = 60                             -0.0031         -0.0022            75            74            75            74
BM_format_to_back_inserter<std::vector<char>>/string len = 60                       +0.0183         +0.0191            87            88            86            88
BM_format_to_back_inserter<std::deque<char>>/string len = 60                        +0.0567         +0.0578           279           295           279           295
BM_format_to_back_inserter<std::list<char>>/string len = 60                         +0.0386         +0.0396          1167          1212          1165          1212
BM_format_to_iterator/<std::array> string len = 60                                  -0.0094         -0.0084            47            46            47            46
BM_format_to_iterator/<std::string> string len = 60                                 -0.0268         -0.0259            47            46            47            46
BM_format_to_iterator/<std::vector> string len = 60                                 -0.0082         -0.0073            46            46            46            46
BM_format_to_iterator/<std::deque> string len = 60                                  +0.0254         +0.0264            52            54            52            54
BM_format/string_view len = 60                                                      -0.0084         -0.0075            62            62            62            62
BM_format_to_back_inserter<std::string>/string_view len = 60                        -0.0001         +0.0008            74            74            74            74
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60                  +0.0145         +0.0154            86            88            86            88
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60                   +0.0411         +0.0420           279           291           279           291
BM_format_to_back_inserter<std::list<char>>/string_view len = 60                    +0.0358         +0.0368          1164          1205          1163          1205
BM_format_to_iterator/<std::array> string_view len = 60                             -0.0306         -0.0297            47            45            47            45
BM_format_to_iterator/<std::string> string_view len = 60                            -0.0321         -0.0312            46            45            46            45
BM_format_to_iterator/<std::vector> string_view len = 60                            -0.0320         -0.0311            46            45            46            45
BM_format_to_iterator/<std::deque> string_view len = 60                             +0.0039         +0.0048            52            52            52            52
BM_sprintf/C string len = 6000                                                      +0.4788         +0.4802            77           114            77           114
BM_format/C string len = 6000                                                       -0.0087         -0.0078           345           342           345           342
BM_format_to_back_inserter<std::string>/C string len = 6000                         +0.0104         +0.0114          1001          1011          1000          1011
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000                   +0.0195         +0.0206           972           991           971           991
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000                    -0.0092         -0.0082         15129         14990         15114         14990
BM_format_to_back_inserter<std::list<char>>/C string len = 6000                     -0.0017         -0.0007        115290        115092        115167        115090
BM_format_to_iterator/<std::array> C string len = 6000                              -0.0136         -0.0127           161           159           161           159
BM_format_to_iterator/<std::string> C string len = 6000                             -0.0442         -0.0433           154           147           154           147
BM_format_to_iterator/<std::vector> C string len = 6000                             -0.0148         -0.0139           150           148           150           148
BM_format_to_iterator/<std::deque> C string len = 6000                              -0.3357         -0.3350           463           308           463           308
BM_format/string len = 6000                                                         +0.0329         +0.0341           282           291           281           291
BM_format_to_back_inserter<std::string>/string len = 6000                           +0.0289         +0.0299           941           968           940           968
BM_format_to_back_inserter<std::vector<char>>/string len = 6000                     +0.0058         +0.0068           933           938           932           938
BM_format_to_back_inserter<std::deque<char>>/string len = 6000                      -0.0053         -0.0043         15110         15029         15095         15030
BM_format_to_back_inserter<std::list<char>>/string len = 6000                       +0.0041         +0.0065        115131        115601        114854        115597
BM_format_to_iterator/<std::array> string len = 6000                                -0.0028         +0.0000           119           118           118           118
BM_format_to_iterator/<std::string> string len = 6000                               -0.0214         -0.0190           108           105           107           105
BM_format_to_iterator/<std::vector> string len = 6000                               -0.0125         -0.0100           107           105           107           105
BM_format_to_iterator/<std::deque> string len = 6000                                -0.3286         -0.3269           395           265           394           265
BM_format/string_view len = 6000                                                    +0.0084         +0.0110           282           284           281           284
BM_format_to_back_inserter<std::string>/string_view len = 6000                      +0.0347         +0.0373           936           969           934           969
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000                +0.0148         +0.0173           925           938           922           938
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000                 -0.0049         -0.0025         15072         14999         15036         14999
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000                  +0.0017         +0.0040        115332        115524        115059        115520
BM_format_to_iterator/<std::array> string_view len = 6000                           -0.0174         -0.0147           119           117           119           117
BM_format_to_iterator/<std::string> string_view len = 6000                          -0.0269         -0.0245           108           105           107           105
BM_format_to_iterator/<std::vector> string_view len = 6000                          -0.0226         -0.0202           107           105           107           105
BM_format_to_iterator/<std::deque> string_view len = 6000                           -0.3463         -0.3447           392           256           391           256
OVERALL_GEOMEAN                                                                     -0.0089         -0.0087             0             0             0             0


format_to:

Before
--------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                Time             CPU   Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------------------
BM_format_to_string_back_inserter<std::string>/1                      55.3 ns         55.2 ns     12600282 bytes_per_second=17.2841Mi/s
BM_format_to_string_back_inserter<std::string>/2                      55.3 ns         55.2 ns     12711392 bytes_per_second=34.584Mi/s
BM_format_to_string_back_inserter<std::string>/4                      55.3 ns         55.2 ns     12668346 bytes_per_second=69.1337Mi/s
BM_format_to_string_back_inserter<std::string>/8                      55.0 ns         54.8 ns     12806254 bytes_per_second=139.148Mi/s
BM_format_to_string_back_inserter<std::string>/16                     55.0 ns         54.9 ns     12771640 bytes_per_second=278.038Mi/s
BM_format_to_string_back_inserter<std::string>/32                     74.3 ns         74.1 ns      9425332 bytes_per_second=411.691Mi/s
BM_format_to_string_back_inserter<std::string>/64                     74.3 ns         74.1 ns      9467958 bytes_per_second=823.72Mi/s
BM_format_to_string_back_inserter<std::string>/128                    75.6 ns         75.4 ns      9244814 bytes_per_second=1.58012Gi/s
BM_format_to_string_back_inserter<std::string>/256                    90.4 ns         90.1 ns      7758708 bytes_per_second=2.64476Gi/s
BM_format_to_string_back_inserter<std::string>/512                     136 ns          135 ns      5171079 bytes_per_second=3.52016Gi/s
BM_format_to_string_back_inserter<std::string>/1024                    253 ns          252 ns      2766944 bytes_per_second=3.77704Gi/s
BM_format_to_string_back_inserter<std::string>/2048                    410 ns          409 ns      1711155 bytes_per_second=4.66192Gi/s
BM_format_to_string_back_inserter<std::string>/4096                    662 ns          660 ns      1063114 bytes_per_second=5.77795Gi/s
BM_format_to_string_back_inserter<std::string>/8192                   1124 ns         1121 ns       626215 bytes_per_second=6.80694Gi/s
BM_format_to_string_back_inserter<std::string>/16384                  2228 ns         2222 ns       315523 bytes_per_second=6.86706Gi/s
BM_format_to_string_back_inserter<std::string>/32768                  4795 ns         4783 ns       146357 bytes_per_second=6.38068Gi/s
BM_format_to_string_back_inserter<std::string>/65536                  8433 ns         8412 ns        83268 bytes_per_second=7.25532Gi/s
BM_format_to_string_back_inserter<std::string>/131072                44973 ns        44732 ns        15650 bytes_per_second=2.7289Gi/s
BM_format_to_string_back_inserter<std::string>/262144               134871 ns       134517 ns         5205 bytes_per_second=1.81495Gi/s
BM_format_to_string_back_inserter<std::string>/524288               316669 ns       316613 ns         2208 bytes_per_second=1.5422Gi/s
BM_format_to_string_back_inserter<std::string>/1048576              677580 ns       677582 ns         1036 bytes_per_second=1.44125Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1                69.9 ns         69.9 ns      9994480 bytes_per_second=13.6348Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/2                70.1 ns         70.1 ns      9995724 bytes_per_second=27.2205Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/4                71.3 ns         71.3 ns      9850375 bytes_per_second=53.5283Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/8                73.8 ns         73.8 ns      9486647 bytes_per_second=103.44Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/16               78.7 ns         78.7 ns      8873541 bytes_per_second=193.765Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/32               88.7 ns         88.7 ns      7913676 bytes_per_second=344.039Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/64               90.2 ns         90.2 ns      7740112 bytes_per_second=676.676Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/128              92.2 ns         92.2 ns      7569110 bytes_per_second=1.29352Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/256               106 ns          106 ns      6612544 bytes_per_second=2.25002Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/512               163 ns          163 ns      4299613 bytes_per_second=2.9327Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1024              240 ns          240 ns      2919691 bytes_per_second=3.98065Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/2048              400 ns          400 ns      1749907 bytes_per_second=4.76489Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/4096              635 ns          635 ns      1101669 bytes_per_second=6.00718Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/8192             1064 ns         1064 ns       655668 bytes_per_second=7.17313Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/16384            1986 ns         1986 ns       352665 bytes_per_second=7.68268Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/32768            3834 ns         3835 ns       182295 bytes_per_second=7.95861Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/65536            7388 ns         7388 ns        94038 bytes_per_second=8.26153Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/131072          17454 ns        17454 ns        40109 bytes_per_second=6.99363Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/262144          36133 ns        36133 ns        19353 bytes_per_second=6.75666Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/524288          73310 ns        73310 ns         9556 bytes_per_second=6.66053Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1048576        145001 ns       144996 ns         4828 bytes_per_second=6.73509Gi/s
BM_format_to_string_back_inserter<std::list<char>>/1                  62.9 ns         62.9 ns     11119088 bytes_per_second=15.1622Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2                  76.0 ns         76.0 ns      9212976 bytes_per_second=25.0904Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4                   103 ns          103 ns      6740929 bytes_per_second=36.8618Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8                   171 ns          171 ns      4096894 bytes_per_second=44.6147Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16                  324 ns          324 ns      2147006 bytes_per_second=47.0328Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32                  638 ns          638 ns      1096597 bytes_per_second=47.799Mi/s
BM_format_to_string_back_inserter<std::list<char>>/64                 1230 ns         1230 ns       570396 bytes_per_second=49.6318Mi/s
BM_format_to_string_back_inserter<std::list<char>>/128                2427 ns         2427 ns       289550 bytes_per_second=50.306Mi/s
BM_format_to_string_back_inserter<std::list<char>>/256                4847 ns         4847 ns       144614 bytes_per_second=50.3648Mi/s
BM_format_to_string_back_inserter<std::list<char>>/512                9656 ns         9656 ns        72476 bytes_per_second=50.5676Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1024              19415 ns        19416 ns        35934 bytes_per_second=50.298Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2048              38927 ns        38928 ns        17986 bytes_per_second=50.173Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4096              78062 ns        78064 ns         8967 bytes_per_second=50.0392Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8192             156624 ns       156628 ns         4464 bytes_per_second=49.8795Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16384            313781 ns       313788 ns         2232 bytes_per_second=49.7948Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32768            626674 ns       626667 ns         1112 bytes_per_second=49.867Mi/s
BM_format_to_string_back_inserter<std::list<char>>/65536           1248918 ns      1248933 ns          558 bytes_per_second=50.0427Mi/s
BM_format_to_string_back_inserter<std::list<char>>/131072          2512031 ns      2511949 ns          277 bytes_per_second=49.7622Mi/s
BM_format_to_string_back_inserter<std::list<char>>/262144          5118786 ns      5118308 ns          126 bytes_per_second=48.8443Mi/s
BM_format_to_string_back_inserter<std::list<char>>/524288         10395742 ns     10395288 ns           63 bytes_per_second=48.0987Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1048576        21110172 ns     21110073 ns           31 bytes_per_second=47.3708Mi/s
BM_format_to_string_begin<std::string>/1                              47.0 ns         47.0 ns     14928464 bytes_per_second=20.2942Mi/s
BM_format_to_string_begin<std::string>/2                              47.0 ns         47.0 ns     14889677 bytes_per_second=40.5641Mi/s
BM_format_to_string_begin<std::string>/4                              47.1 ns         47.1 ns     14877893 bytes_per_second=81.0735Mi/s
BM_format_to_string_begin<std::string>/8                              47.0 ns         47.0 ns     14855791 bytes_per_second=162.307Mi/s
BM_format_to_string_begin<std::string>/16                             47.1 ns         47.1 ns     14867291 bytes_per_second=324.274Mi/s
BM_format_to_string_begin<std::string>/32                             47.0 ns         47.0 ns     14863938 bytes_per_second=649.013Mi/s
BM_format_to_string_begin<std::string>/64                             46.5 ns         46.5 ns     14004459 bytes_per_second=1.28171Gi/s
BM_format_to_string_begin<std::string>/128                            47.1 ns         47.1 ns     14831108 bytes_per_second=2.53299Gi/s
BM_format_to_string_begin<std::string>/256                            51.6 ns         51.6 ns     13604783 bytes_per_second=4.62228Gi/s
BM_format_to_string_begin<std::string>/512                            50.0 ns         50.0 ns     13980138 bytes_per_second=9.53155Gi/s
BM_format_to_string_begin<std::string>/1024                           59.2 ns         59.2 ns     11872452 bytes_per_second=16.1221Gi/s
BM_format_to_string_begin<std::string>/2048                           69.0 ns         69.0 ns     10128771 bytes_per_second=27.6377Gi/s
BM_format_to_string_begin<std::string>/4096                            100 ns          100 ns      6963452 bytes_per_second=38.0663Gi/s
BM_format_to_string_begin<std::string>/8192                            151 ns          151 ns      4635381 bytes_per_second=50.5416Gi/s
BM_format_to_string_begin<std::string>/16384                           314 ns          314 ns      2233442 bytes_per_second=48.5983Gi/s
BM_format_to_string_begin<std::string>/32768                          1336 ns         1336 ns       524989 bytes_per_second=22.8492Gi/s
BM_format_to_string_begin<std::string>/65536                          3763 ns         3763 ns       185762 bytes_per_second=16.2188Gi/s
BM_format_to_string_begin<std::string>/131072                         6556 ns         6556 ns       106616 bytes_per_second=18.6207Gi/s
BM_format_to_string_begin<std::string>/262144                        13979 ns        13979 ns        50149 bytes_per_second=17.4643Gi/s
BM_format_to_string_begin<std::string>/524288                        28719 ns        28719 ns        24379 bytes_per_second=17.0019Gi/s
BM_format_to_string_begin<std::string>/1048576                       57299 ns        57299 ns        12180 bytes_per_second=17.0432Gi/s
BM_format_to_string_begin<std::vector<char>>/1                        46.1 ns         46.1 ns     15188343 bytes_per_second=20.6809Mi/s
BM_format_to_string_begin<std::vector<char>>/2                        46.1 ns         46.1 ns     15158904 bytes_per_second=41.3318Mi/s
BM_format_to_string_begin<std::vector<char>>/4                        46.1 ns         46.1 ns     15170378 bytes_per_second=82.6776Mi/s
BM_format_to_string_begin<std::vector<char>>/8                        45.7 ns         45.7 ns     15315671 bytes_per_second=167.026Mi/s
BM_format_to_string_begin<std::vector<char>>/16                       46.2 ns         46.2 ns     15163881 bytes_per_second=330.559Mi/s
BM_format_to_string_begin<std::vector<char>>/32                       46.1 ns         46.1 ns     15201091 bytes_per_second=661.98Mi/s
BM_format_to_string_begin<std::vector<char>>/64                       46.2 ns         46.2 ns     14183997 bytes_per_second=1.28927Gi/s
BM_format_to_string_begin<std::vector<char>>/128                      46.7 ns         46.7 ns     14987395 bytes_per_second=2.55007Gi/s
BM_format_to_string_begin<std::vector<char>>/256                      51.3 ns         51.3 ns     13898949 bytes_per_second=4.64462Gi/s
BM_format_to_string_begin<std::vector<char>>/512                      50.1 ns         50.1 ns     10000000 bytes_per_second=9.52165Gi/s
BM_format_to_string_begin<std::vector<char>>/1024                     59.2 ns         59.2 ns     11805042 bytes_per_second=16.105Gi/s
BM_format_to_string_begin<std::vector<char>>/2048                     69.0 ns         69.0 ns     10139614 bytes_per_second=27.6266Gi/s
BM_format_to_string_begin<std::vector<char>>/4096                     97.6 ns         97.6 ns      7179535 bytes_per_second=39.0938Gi/s
BM_format_to_string_begin<std::vector<char>>/8192                      152 ns          152 ns      4610486 bytes_per_second=50.227Gi/s
BM_format_to_string_begin<std::vector<char>>/16384                     314 ns          314 ns      2230251 bytes_per_second=48.5946Gi/s
BM_format_to_string_begin<std::vector<char>>/32768                    1333 ns         1333 ns       525550 bytes_per_second=22.8868Gi/s
BM_format_to_string_begin<std::vector<char>>/65536                    3760 ns         3760 ns       185821 bytes_per_second=16.2322Gi/s
BM_format_to_string_begin<std::vector<char>>/131072                   6479 ns         6480 ns       107960 bytes_per_second=18.8391Gi/s
BM_format_to_string_begin<std::vector<char>>/262144                  14164 ns        14164 ns        49862 bytes_per_second=17.2368Gi/s
BM_format_to_string_begin<std::vector<char>>/524288                  28916 ns        28916 ns        24149 bytes_per_second=16.8861Gi/s
BM_format_to_string_begin<std::vector<char>>/1048576                 57621 ns        57622 ns        12140 bytes_per_second=16.9478Gi/s
BM_format_to_string_begin<std::list<char>>/1                          47.6 ns         47.6 ns     14675857 bytes_per_second=20.0271Mi/s
BM_format_to_string_begin<std::list<char>>/2                          48.8 ns         48.8 ns     14331930 bytes_per_second=39.1155Mi/s
BM_format_to_string_begin<std::list<char>>/4                          50.9 ns         50.9 ns     13747606 bytes_per_second=74.9309Mi/s
BM_format_to_string_begin<std::list<char>>/8                          63.4 ns         63.4 ns     11065440 bytes_per_second=120.329Mi/s
BM_format_to_string_begin<std::list<char>>/16                         82.4 ns         82.4 ns      8510480 bytes_per_second=185.222Mi/s
BM_format_to_string_begin<std::list<char>>/32                          126 ns          126 ns      5564932 bytes_per_second=242.653Mi/s
BM_format_to_string_begin<std::list<char>>/64                          211 ns          211 ns      3311820 bytes_per_second=289.214Mi/s
BM_format_to_string_begin<std::list<char>>/128                         384 ns          384 ns      1825012 bytes_per_second=318.238Mi/s
BM_format_to_string_begin<std::list<char>>/256                         735 ns          735 ns       951285 bytes_per_second=332.108Mi/s
BM_format_to_string_begin<std::list<char>>/512                        1428 ns         1428 ns       489437 bytes_per_second=341.969Mi/s
BM_format_to_string_begin<std::list<char>>/1024                       2792 ns         2792 ns       242406 bytes_per_second=349.822Mi/s
BM_format_to_string_begin<std::list<char>>/2048                       5594 ns         5594 ns       124188 bytes_per_second=349.129Mi/s
BM_format_to_string_begin<std::list<char>>/4096                      11163 ns        11163 ns        62794 bytes_per_second=349.936Mi/s
BM_format_to_string_begin<std::list<char>>/8192                      22339 ns        22339 ns        31335 bytes_per_second=349.718Mi/s
BM_format_to_string_begin<std::list<char>>/16384                     44673 ns        44674 ns        15675 bytes_per_second=349.754Mi/s
BM_format_to_string_begin<std::list<char>>/32768                     89015 ns        89016 ns         7849 bytes_per_second=351.06Mi/s
BM_format_to_string_begin<std::list<char>>/65536                    177988 ns       177989 ns         3938 bytes_per_second=351.145Mi/s
BM_format_to_string_begin<std::list<char>>/131072                   362715 ns       362697 ns         1933 bytes_per_second=344.64Mi/s
BM_format_to_string_begin<std::list<char>>/262144                   846730 ns       846685 ns          825 bytes_per_second=295.269Mi/s
BM_format_to_string_begin<std::list<char>>/524288                  2018755 ns      2018721 ns          347 bytes_per_second=247.682Mi/s
BM_format_to_string_begin<std::list<char>>/1048576                 4225251 ns      4225188 ns          165 bytes_per_second=236.676Mi/s
BM_format_to_string_span<char>/1                                      46.2 ns         46.2 ns     15156896 bytes_per_second=20.6258Mi/s
BM_format_to_string_span<char>/2                                      46.3 ns         46.3 ns     15114242 bytes_per_second=41.1559Mi/s
BM_format_to_string_span<char>/4                                      46.4 ns         46.4 ns     15089475 bytes_per_second=82.1686Mi/s
BM_format_to_string_span<char>/8                                      45.9 ns         45.9 ns     15249334 bytes_per_second=166.143Mi/s
BM_format_to_string_span<char>/16                                     46.3 ns         46.3 ns     15087074 bytes_per_second=329.233Mi/s
BM_format_to_string_span<char>/32                                     46.4 ns         46.4 ns     15099464 bytes_per_second=657.611Mi/s
BM_format_to_string_span<char>/64                                     46.4 ns         46.4 ns     14101746 bytes_per_second=1.2849Gi/s
BM_format_to_string_span<char>/128                                    47.0 ns         47.0 ns     14919410 bytes_per_second=2.53769Gi/s
BM_format_to_string_span<char>/256                                    50.8 ns         50.8 ns     13874090 bytes_per_second=4.69274Gi/s
BM_format_to_string_span<char>/512                                    50.5 ns         50.5 ns     13849265 bytes_per_second=9.44604Gi/s
BM_format_to_string_span<char>/1024                                   59.6 ns         59.6 ns     11774716 bytes_per_second=16.008Gi/s
BM_format_to_string_span<char>/2048                                   69.3 ns         69.3 ns     10102354 bytes_per_second=27.5137Gi/s
BM_format_to_string_span<char>/4096                                   98.0 ns         98.0 ns      7137947 bytes_per_second=38.9144Gi/s
BM_format_to_string_span<char>/8192                                    153 ns          153 ns      4585057 bytes_per_second=49.9901Gi/s
BM_format_to_string_span<char>/16384                                   316 ns          316 ns      2225896 bytes_per_second=48.3398Gi/s
BM_format_to_string_span<char>/32768                                  1339 ns         1339 ns       520365 bytes_per_second=22.7872Gi/s
BM_format_to_string_span<char>/65536                                  3780 ns         3780 ns       184720 bytes_per_second=16.1474Gi/s
BM_format_to_string_span<char>/131072                                 6557 ns         6557 ns       106444 bytes_per_second=18.6157Gi/s
BM_format_to_string_span<char>/262144                                14199 ns        14199 ns        49363 bytes_per_second=17.1939Gi/s
BM_format_to_string_span<char>/524288                                28833 ns        28834 ns        24254 bytes_per_second=16.9343Gi/s
BM_format_to_string_span<char>/1048576                               57660 ns        57660 ns        12166 bytes_per_second=16.9365Gi/s
BM_format_to_string_pointer<char>/1                                   46.4 ns         46.4 ns     15070582 bytes_per_second=20.5355Mi/s
BM_format_to_string_pointer<char>/2                                   46.5 ns         46.5 ns     15064611 bytes_per_second=41.0239Mi/s
BM_format_to_string_pointer<char>/4                                   46.4 ns         46.4 ns     15080092 bytes_per_second=82.1674Mi/s
BM_format_to_string_pointer<char>/8                                   45.9 ns         45.9 ns     15239465 bytes_per_second=166.094Mi/s
BM_format_to_string_pointer<char>/16                                  46.4 ns         46.4 ns     15077440 bytes_per_second=328.884Mi/s
BM_format_to_string_pointer<char>/32                                  46.4 ns         46.4 ns     15070278 bytes_per_second=657.438Mi/s
BM_format_to_string_pointer<char>/64                                  46.4 ns         46.4 ns     14094814 bytes_per_second=1.28358Gi/s
BM_format_to_string_pointer<char>/128                                 46.8 ns         46.8 ns     14894522 bytes_per_second=2.54466Gi/s
BM_format_to_string_pointer<char>/256                                 51.2 ns         51.2 ns     13908865 bytes_per_second=4.65713Gi/s
BM_format_to_string_pointer<char>/512                                 50.2 ns         50.2 ns     13999036 bytes_per_second=9.5049Gi/s
BM_format_to_string_pointer<char>/1024                                59.4 ns         59.4 ns     11805502 bytes_per_second=16.0611Gi/s
BM_format_to_string_pointer<char>/2048                                69.1 ns         69.1 ns     10114415 bytes_per_second=27.5936Gi/s
BM_format_to_string_pointer<char>/4096                                97.6 ns         97.6 ns      7154104 bytes_per_second=39.0914Gi/s
BM_format_to_string_pointer<char>/8192                                 151 ns          151 ns      4653492 bytes_per_second=50.6101Gi/s
BM_format_to_string_pointer<char>/16384                                314 ns          314 ns      2222259 bytes_per_second=48.6129Gi/s
BM_format_to_string_pointer<char>/32768                               1336 ns         1336 ns       524528 bytes_per_second=22.8497Gi/s
BM_format_to_string_pointer<char>/65536                               3759 ns         3759 ns       185462 bytes_per_second=16.2357Gi/s
BM_format_to_string_pointer<char>/131072                              6538 ns         6537 ns       106885 bytes_per_second=18.6728Gi/s
BM_format_to_string_pointer<char>/262144                             14087 ns        14087 ns        49626 bytes_per_second=17.3304Gi/s
BM_format_to_string_pointer<char>/524288                             28681 ns        28681 ns        24379 bytes_per_second=17.0248Gi/s
BM_format_to_string_pointer<char>/1048576                            57528 ns        57529 ns        12227 bytes_per_second=16.9753Gi/s
BM_format_to_string_back_inserter<std::wstring>/1                     54.3 ns         54.3 ns     12869648 bytes_per_second=70.2204Mi/s
BM_format_to_string_back_inserter<std::wstring>/2                     54.4 ns         54.4 ns     12867459 bytes_per_second=140.262Mi/s
BM_format_to_string_back_inserter<std::wstring>/4                     54.3 ns         54.3 ns     12872545 bytes_per_second=281.006Mi/s
BM_format_to_string_back_inserter<std::wstring>/8                     75.5 ns         75.5 ns      9299734 bytes_per_second=404.319Mi/s
BM_format_to_string_back_inserter<std::wstring>/16                    75.7 ns         75.7 ns      9250422 bytes_per_second=806.724Mi/s
BM_format_to_string_back_inserter<std::wstring>/32                    77.2 ns         77.2 ns      9055549 bytes_per_second=1.54468Gi/s
BM_format_to_string_back_inserter<std::wstring>/64                    89.8 ns         89.8 ns      7807327 bytes_per_second=2.65577Gi/s
BM_format_to_string_back_inserter<std::wstring>/128                    137 ns          137 ns      5098880 bytes_per_second=3.47031Gi/s
BM_format_to_string_back_inserter<std::wstring>/256                    248 ns          248 ns      2826115 bytes_per_second=3.85063Gi/s
BM_format_to_string_back_inserter<std::wstring>/512                    403 ns          403 ns      1736395 bytes_per_second=4.72998Gi/s
BM_format_to_string_back_inserter<std::wstring>/1024                   640 ns          640 ns      1094838 bytes_per_second=5.95878Gi/s
BM_format_to_string_back_inserter<std::wstring>/2048                  1091 ns         1091 ns       640668 bytes_per_second=6.99457Gi/s
BM_format_to_string_back_inserter<std::wstring>/4096                  2174 ns         2174 ns       322224 bytes_per_second=7.01864Gi/s
BM_format_to_string_back_inserter<std::wstring>/8192                  4557 ns         4557 ns       153328 bytes_per_second=6.69681Gi/s
BM_format_to_string_back_inserter<std::wstring>/16384                 8636 ns         8636 ns        81139 bytes_per_second=7.06717Gi/s
BM_format_to_string_back_inserter<std::wstring>/32768                19780 ns        19780 ns        35336 bytes_per_second=6.17141Gi/s
BM_format_to_string_back_inserter<std::wstring>/65536                43104 ns        43103 ns        16273 bytes_per_second=5.66406Gi/s
BM_format_to_string_back_inserter<std::wstring>/131072               89918 ns        89919 ns         7768 bytes_per_second=5.43021Gi/s
BM_format_to_string_back_inserter<std::wstring>/262144              681804 ns       681826 ns         1024 bytes_per_second=1.43228Gi/s
BM_format_to_string_back_inserter<std::wstring>/524288             1478856 ns      1478765 ns          473 bytes_per_second=1.32078Gi/s
BM_format_to_string_back_inserter<std::wstring>/1048576            2840508 ns      2840412 ns          246 bytes_per_second=1.37524Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1             68.5 ns         68.5 ns     10223705 bytes_per_second=55.6912Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2             68.6 ns         68.6 ns     10201348 bytes_per_second=111.156Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4             70.9 ns         70.9 ns      9862572 bytes_per_second=215.354Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8             74.0 ns         74.0 ns      9451942 bytes_per_second=412.501Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16            81.3 ns         81.3 ns      8532932 bytes_per_second=751.16Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32            88.8 ns         88.8 ns      7891710 bytes_per_second=1.34179Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/64             126 ns          126 ns      5575610 bytes_per_second=1.89895Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/128            199 ns          199 ns      3505605 bytes_per_second=2.39111Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/256            293 ns          293 ns      2389141 bytes_per_second=3.25591Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/512            468 ns          468 ns      1493575 bytes_per_second=4.07284Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1024           701 ns          701 ns       998453 bytes_per_second=5.44024Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2048          1138 ns         1138 ns       617167 bytes_per_second=6.70671Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4096          2060 ns         2060 ns       340010 bytes_per_second=7.40872Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8192          3858 ns         3858 ns       181166 bytes_per_second=7.90994Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16384         7401 ns         7401 ns        94453 bytes_per_second=8.24654Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32768        17462 ns        17462 ns        40112 bytes_per_second=6.99062Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/65536        36165 ns        36166 ns        19349 bytes_per_second=6.75053Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/131072       72945 ns        72947 ns         9617 bytes_per_second=6.69361Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/262144      142931 ns       142930 ns         4903 bytes_per_second=6.83246Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/524288      336502 ns       336501 ns         2081 bytes_per_second=5.80422Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1048576     962003 ns       961961 ns          714 bytes_per_second=4.06072Gi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1               61.4 ns         61.4 ns     11413917 bytes_per_second=62.1089Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/2               76.9 ns         76.9 ns      9050279 bytes_per_second=99.1771Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/4                111 ns          111 ns      6278973 bytes_per_second=137.261Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/8                179 ns          179 ns      3915106 bytes_per_second=170.439Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/16               336 ns          336 ns      2087463 bytes_per_second=181.661Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/32               650 ns          650 ns      1065880 bytes_per_second=187.814Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/64              1272 ns         1272 ns       549372 bytes_per_second=191.923Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/128             2487 ns         2487 ns       281680 bytes_per_second=196.314Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/256             4964 ns         4964 ns       141195 bytes_per_second=196.723Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/512             9837 ns         9837 ns        71145 bytes_per_second=198.553Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1024           19842 ns        19842 ns        35289 bytes_per_second=196.87Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/2048           39731 ns        39730 ns        17616 bytes_per_second=196.639Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/4096           79592 ns        79593 ns         8776 bytes_per_second=196.31Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/8192          159493 ns       159495 ns         4394 bytes_per_second=195.93Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/16384         317842 ns       317840 ns         2205 bytes_per_second=196.64Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/32768         634422 ns       634434 ns         1097 bytes_per_second=197.026Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/65536        1271414 ns      1271449 ns          548 bytes_per_second=196.626Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/131072       2553515 ns      2553543 ns          273 bytes_per_second=195.806Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/262144       5225959 ns      5225902 ns          124 bytes_per_second=191.355Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/524288      10623331 ns     10622433 ns           61 bytes_per_second=188.281Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1048576     21606244 ns     21606044 ns           31 bytes_per_second=185.133Mi/s
BM_format_to_string_begin<std::wstring>/1                             45.5 ns         45.5 ns     15441091 bytes_per_second=83.9024Mi/s
BM_format_to_string_begin<std::wstring>/2                             45.5 ns         45.5 ns     15397107 bytes_per_second=167.71Mi/s
BM_format_to_string_begin<std::wstring>/4                             45.5 ns         45.5 ns     15401917 bytes_per_second=335.622Mi/s
BM_format_to_string_begin<std::wstring>/8                             45.5 ns         45.5 ns     15383295 bytes_per_second=671.319Mi/s
BM_format_to_string_begin<std::wstring>/16                            45.5 ns         45.5 ns     14420804 bytes_per_second=1.31019Gi/s
BM_format_to_string_begin<std::wstring>/32                            46.1 ns         46.1 ns     15219075 bytes_per_second=2.58554Gi/s
BM_format_to_string_begin<std::wstring>/64                            48.9 ns         48.9 ns     14295070 bytes_per_second=4.87739Gi/s
BM_format_to_string_begin<std::wstring>/128                           49.9 ns         49.9 ns     14037943 bytes_per_second=9.54779Gi/s
BM_format_to_string_begin<std::wstring>/256                           54.4 ns         54.4 ns     12874278 bytes_per_second=17.5196Gi/s
BM_format_to_string_begin<std::wstring>/512                           65.1 ns         65.1 ns     10754308 bytes_per_second=29.2923Gi/s
BM_format_to_string_begin<std::wstring>/1024                          93.7 ns         93.7 ns      7477344 bytes_per_second=40.7095Gi/s
BM_format_to_string_begin<std::wstring>/2048                           148 ns          148 ns      4740067 bytes_per_second=51.6162Gi/s
BM_format_to_string_begin<std::wstring>/4096                           317 ns          317 ns      2201236 bytes_per_second=48.1154Gi/s
BM_format_to_string_begin<std::wstring>/8192                          1338 ns         1338 ns       521312 bytes_per_second=22.8053Gi/s
BM_format_to_string_begin<std::wstring>/16384                         3910 ns         3910 ns       179370 bytes_per_second=15.6115Gi/s
BM_format_to_string_begin<std::wstring>/32768                         7066 ns         7066 ns        98872 bytes_per_second=17.2764Gi/s
BM_format_to_string_begin<std::wstring>/65536                        14908 ns        14908 ns        47055 bytes_per_second=16.3764Gi/s
BM_format_to_string_begin<std::wstring>/131072                       32636 ns        32636 ns        21371 bytes_per_second=14.9616Gi/s
BM_format_to_string_begin<std::wstring>/262144                       60037 ns        60037 ns        11586 bytes_per_second=16.2661Gi/s
BM_format_to_string_begin<std::wstring>/524288                      116806 ns       116808 ns         5988 bytes_per_second=16.7209Gi/s
BM_format_to_string_begin<std::wstring>/1048576                     247097 ns       247089 ns         2829 bytes_per_second=15.8091Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1                     44.5 ns         44.5 ns     15715279 bytes_per_second=85.8146Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/2                     44.5 ns         44.5 ns     15767209 bytes_per_second=171.549Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/4                     44.5 ns         44.5 ns     15751321 bytes_per_second=343.037Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/8                     44.4 ns         44.4 ns     15767406 bytes_per_second=687.57Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/16                    44.6 ns         44.6 ns     14528930 bytes_per_second=1.3365Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/32                    45.2 ns         45.2 ns     15485958 bytes_per_second=2.63519Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/64                    51.9 ns         51.9 ns     13492663 bytes_per_second=4.59426Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/128                   49.1 ns         49.1 ns     14249935 bytes_per_second=9.71722Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/256                   54.5 ns         54.5 ns     12851483 bytes_per_second=17.4989Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/512                   64.3 ns         64.3 ns     10899647 bytes_per_second=29.6783Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1024                  93.8 ns         93.8 ns      7466466 bytes_per_second=40.682Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/2048                   148 ns          148 ns      4742068 bytes_per_second=51.6486Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/4096                   319 ns          319 ns      2195494 bytes_per_second=47.8887Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/8192                  1340 ns         1340 ns       522769 bytes_per_second=22.7802Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/16384                 3978 ns         3978 ns       176216 bytes_per_second=15.3416Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/32768                 6980 ns         6980 ns        99513 bytes_per_second=17.4884Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/65536                14353 ns        14353 ns        48818 bytes_per_second=17.0098Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/131072               31866 ns        31866 ns        21957 bytes_per_second=15.3229Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/262144               58559 ns        58559 ns        11988 bytes_per_second=16.6765Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/524288              117130 ns       117127 ns         5976 bytes_per_second=16.6752Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1048576             247971 ns       247961 ns         2820 bytes_per_second=15.7535Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/1                       45.7 ns         45.7 ns     15314802 bytes_per_second=83.4396Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/2                       46.9 ns         46.9 ns     14929862 bytes_per_second=162.749Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/4                       48.4 ns         48.4 ns     14465135 bytes_per_second=315.113Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/8                       61.5 ns         61.5 ns     11210175 bytes_per_second=495.818Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/16                      80.9 ns         80.9 ns      8650119 bytes_per_second=754.522Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/32                       125 ns          125 ns      5618285 bytes_per_second=979.747Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/64                       214 ns          214 ns      3275402 bytes_per_second=1.11499Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/128                      385 ns          385 ns      1819548 bytes_per_second=1.23843Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/256                      730 ns          730 ns       959436 bytes_per_second=1.3067Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/512                     1425 ns         1425 ns       490178 bytes_per_second=1.33841Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/1024                    2815 ns         2815 ns       248998 bytes_per_second=1.35522Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/2048                    5614 ns         5614 ns       124846 bytes_per_second=1.35901Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/4096                   11194 ns        11193 ns        62639 bytes_per_second=1.3632Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/8192                   22330 ns        22330 ns        31340 bytes_per_second=1.36665Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/16384                  44550 ns        44551 ns        15717 bytes_per_second=1.37001Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/32768                  88796 ns        88797 ns         7870 bytes_per_second=1.37471Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/65536                 177926 ns       177928 ns         3942 bytes_per_second=1.37213Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/131072                367815 ns       367803 ns         1902 bytes_per_second=1.32756Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/262144                891361 ns       891325 ns          777 bytes_per_second=1.09563Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/524288               2131461 ns      2131391 ns          329 bytes_per_second=938.354Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/1048576              4429706 ns      4429516 ns          158 bytes_per_second=903.033Mi/s
BM_format_to_string_span<wchar_t>/1                                   44.6 ns         44.6 ns     15686342 bytes_per_second=85.4458Mi/s
BM_format_to_string_span<wchar_t>/2                                   44.5 ns         44.5 ns     15697054 bytes_per_second=171.361Mi/s
BM_format_to_string_span<wchar_t>/4                                   44.5 ns         44.5 ns     15697240 bytes_per_second=342.668Mi/s
BM_format_to_string_span<wchar_t>/8                                   44.5 ns         44.5 ns     15677749 bytes_per_second=685.739Mi/s
BM_format_to_string_span<wchar_t>/16                                  44.6 ns         44.6 ns     14716002 bytes_per_second=1.33557Gi/s
BM_format_to_string_span<wchar_t>/32                                  45.2 ns         45.2 ns     15472092 bytes_per_second=2.63565Gi/s
BM_format_to_string_span<wchar_t>/64                                  48.2 ns         48.2 ns     14524180 bytes_per_second=4.94487Gi/s
BM_format_to_string_span<wchar_t>/128                                 49.1 ns         49.1 ns     14264103 bytes_per_second=9.7111Gi/s
BM_format_to_string_span<wchar_t>/256                                 54.5 ns         54.5 ns     12828788 bytes_per_second=17.4966Gi/s
BM_format_to_string_span<wchar_t>/512                                 64.2 ns         64.2 ns     10904613 bytes_per_second=29.7212Gi/s
BM_format_to_string_span<wchar_t>/1024                                93.5 ns         93.5 ns      7471189 bytes_per_second=40.7777Gi/s
BM_format_to_string_span<wchar_t>/2048                                 147 ns          147 ns      4771116 bytes_per_second=51.9904Gi/s
BM_format_to_string_span<wchar_t>/4096                                 316 ns          316 ns      2217774 bytes_per_second=48.2813Gi/s
BM_format_to_string_span<wchar_t>/8192                                1334 ns         1334 ns       524155 bytes_per_second=22.8755Gi/s
BM_format_to_string_span<wchar_t>/16384                               3889 ns         3890 ns       180011 bytes_per_second=15.6921Gi/s
BM_format_to_string_span<wchar_t>/32768                               7045 ns         7045 ns        98892 bytes_per_second=17.3263Gi/s
BM_format_to_string_span<wchar_t>/65536                              14812 ns        14813 ns        47101 bytes_per_second=16.4819Gi/s
BM_format_to_string_span<wchar_t>/131072                             30052 ns        30052 ns        23308 bytes_per_second=16.2478Gi/s
BM_format_to_string_span<wchar_t>/262144                             60795 ns        60796 ns        11510 bytes_per_second=16.0629Gi/s
BM_format_to_string_span<wchar_t>/524288                            116559 ns       116557 ns         6004 bytes_per_second=16.7568Gi/s
BM_format_to_string_span<wchar_t>/1048576                           243495 ns       243492 ns         2871 bytes_per_second=16.0426Gi/s
BM_format_to_string_pointer<wchar_t>/1                                44.5 ns         44.5 ns     15762019 bytes_per_second=85.7394Mi/s
BM_format_to_string_pointer<wchar_t>/2                                44.6 ns         44.6 ns     15709713 bytes_per_second=171.156Mi/s
BM_format_to_string_pointer<wchar_t>/4                                44.6 ns         44.6 ns     15691304 bytes_per_second=342.152Mi/s
BM_format_to_string_pointer<wchar_t>/8                                44.6 ns         44.6 ns     15697157 bytes_per_second=683.525Mi/s
BM_format_to_string_pointer<wchar_t>/16                               44.7 ns         44.7 ns     14689424 bytes_per_second=1.33417Gi/s
BM_format_to_string_pointer<wchar_t>/32                               45.3 ns         45.3 ns     15502552 bytes_per_second=2.63424Gi/s
BM_format_to_string_pointer<wchar_t>/64                               48.2 ns         48.2 ns     14515085 bytes_per_second=4.94573Gi/s
BM_format_to_string_pointer<wchar_t>/128                              49.1 ns         49.1 ns     14261932 bytes_per_second=9.70798Gi/s
BM_format_to_string_pointer<wchar_t>/256                              54.4 ns         54.4 ns     12841110 bytes_per_second=17.5193Gi/s
BM_format_to_string_pointer<wchar_t>/512                              64.3 ns         64.3 ns     10893107 bytes_per_second=29.6433Gi/s
BM_format_to_string_pointer<wchar_t>/1024                             93.9 ns         93.9 ns      7455764 bytes_per_second=40.6154Gi/s
BM_format_to_string_pointer<wchar_t>/2048                              147 ns          147 ns      4762265 bytes_per_second=51.9165Gi/s
BM_format_to_string_pointer<wchar_t>/4096                              317 ns          317 ns      2199930 bytes_per_second=48.0748Gi/s
BM_format_to_string_pointer<wchar_t>/8192                             1338 ns         1338 ns       522096 bytes_per_second=22.8025Gi/s
BM_format_to_string_pointer<wchar_t>/16384                            3904 ns         3904 ns       179598 bytes_per_second=15.6357Gi/s
BM_format_to_string_pointer<wchar_t>/32768                            7079 ns         7079 ns        98891 bytes_per_second=17.2433Gi/s
BM_format_to_string_pointer<wchar_t>/65536                           14890 ns        14890 ns        47024 bytes_per_second=16.3961Gi/s
BM_format_to_string_pointer<wchar_t>/131072                          30190 ns        30190 ns        23173 bytes_per_second=16.1736Gi/s
BM_format_to_string_pointer<wchar_t>/262144                          61132 ns        61131 ns        11451 bytes_per_second=15.9749Gi/s
BM_format_to_string_pointer<wchar_t>/524288                         117069 ns       117071 ns         5974 bytes_per_second=16.6832Gi/s
BM_format_to_string_pointer<wchar_t>/1048576                        244917 ns       244915 ns         2854 bytes_per_second=15.9494Gi/s

After
--------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                Time             CPU   Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------------------
BM_format_to_string_back_inserter<std::string>/1                      55.0 ns         55.0 ns     12608946 bytes_per_second=17.3318Mi/s
BM_format_to_string_back_inserter<std::string>/2                      55.4 ns         55.4 ns     12618566 bytes_per_second=34.4502Mi/s
BM_format_to_string_back_inserter<std::string>/4                      55.6 ns         55.6 ns     12586286 bytes_per_second=68.581Mi/s
BM_format_to_string_back_inserter<std::string>/8                      55.3 ns         55.3 ns     12609665 bytes_per_second=138.017Mi/s
BM_format_to_string_back_inserter<std::string>/16                     55.3 ns         55.3 ns     12650409 bytes_per_second=276.069Mi/s
BM_format_to_string_back_inserter<std::string>/32                     74.6 ns         74.6 ns      9366037 bytes_per_second=409.003Mi/s
BM_format_to_string_back_inserter<std::string>/64                     74.7 ns         74.7 ns      9347416 bytes_per_second=817.416Mi/s
BM_format_to_string_back_inserter<std::string>/128                    75.9 ns         75.9 ns      9218122 bytes_per_second=1.5709Gi/s
BM_format_to_string_back_inserter<std::string>/256                    89.9 ns         89.9 ns      7794597 bytes_per_second=2.65254Gi/s
BM_format_to_string_back_inserter<std::string>/512                     136 ns          136 ns      5130459 bytes_per_second=3.50082Gi/s
BM_format_to_string_back_inserter<std::string>/1024                    256 ns          256 ns      2736709 bytes_per_second=3.72333Gi/s
BM_format_to_string_back_inserter<std::string>/2048                    416 ns          416 ns      1680964 bytes_per_second=4.58095Gi/s
BM_format_to_string_back_inserter<std::string>/4096                    669 ns          669 ns      1044363 bytes_per_second=5.70418Gi/s
BM_format_to_string_back_inserter<std::string>/8192                   1127 ns         1127 ns       619232 bytes_per_second=6.77015Gi/s
BM_format_to_string_back_inserter<std::string>/16384                  2259 ns         2259 ns       309214 bytes_per_second=6.75435Gi/s
BM_format_to_string_back_inserter<std::string>/32768                  4948 ns         4948 ns       141300 bytes_per_second=6.16789Gi/s
BM_format_to_string_back_inserter<std::string>/65536                  8686 ns         8686 ns        80318 bytes_per_second=7.02679Gi/s
BM_format_to_string_back_inserter<std::string>/131072                45051 ns        44892 ns        15592 bytes_per_second=2.71922Gi/s
BM_format_to_string_back_inserter<std::string>/262144               135704 ns       135571 ns         5159 bytes_per_second=1.80083Gi/s
BM_format_to_string_back_inserter<std::string>/524288               319108 ns       319046 ns         2192 bytes_per_second=1.53044Gi/s
BM_format_to_string_back_inserter<std::string>/1048576              682377 ns       682337 ns         1026 bytes_per_second=1.4312Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1                68.9 ns         68.9 ns     10146795 bytes_per_second=13.8319Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/2                69.9 ns         69.9 ns     10011519 bytes_per_second=27.2871Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/4                70.6 ns         70.6 ns      9905343 bytes_per_second=54.001Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/8                73.2 ns         73.2 ns      9553456 bytes_per_second=104.183Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/16               78.0 ns         78.0 ns      8998227 bytes_per_second=195.725Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/32               87.4 ns         87.4 ns      8002212 bytes_per_second=349.182Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/64               88.7 ns         88.7 ns      7875909 bytes_per_second=688.234Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/128              90.4 ns         90.4 ns      7766202 bytes_per_second=1.3186Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/256               105 ns          105 ns      6672492 bytes_per_second=2.27779Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/512               161 ns          161 ns      4334228 bytes_per_second=2.96091Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1024              238 ns          238 ns      2948654 bytes_per_second=4.01015Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/2048              406 ns          406 ns      1722858 bytes_per_second=4.696Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/4096              610 ns          610 ns      1146677 bytes_per_second=6.25831Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/8192             1046 ns         1046 ns       671348 bytes_per_second=7.29663Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/16384            1999 ns         1999 ns       350601 bytes_per_second=7.6325Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/32768            3942 ns         3942 ns       177471 bytes_per_second=7.74181Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/65536            7524 ns         7524 ns        93193 bytes_per_second=8.11239Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/131072          17452 ns        17452 ns        40707 bytes_per_second=6.99455Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/262144          36394 ns        36393 ns        19163 bytes_per_second=6.70847Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/524288          73978 ns        73979 ns         9473 bytes_per_second=6.60024Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1048576        146194 ns       146195 ns         4757 bytes_per_second=6.67986Gi/s
BM_format_to_string_back_inserter<std::list<char>>/1                  62.1 ns         62.1 ns     11285287 bytes_per_second=15.3637Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2                  76.5 ns         76.5 ns      9164091 bytes_per_second=24.9327Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4                   106 ns          106 ns      6605835 bytes_per_second=36.0894Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8                   172 ns          172 ns      4055623 bytes_per_second=44.2286Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16                  325 ns          325 ns      2148932 bytes_per_second=46.9799Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32                  633 ns          633 ns      1109882 bytes_per_second=48.2282Mi/s
BM_format_to_string_back_inserter<std::list<char>>/64                 1230 ns         1230 ns       568760 bytes_per_second=49.6254Mi/s
BM_format_to_string_back_inserter<std::list<char>>/128                2433 ns         2433 ns       289364 bytes_per_second=50.179Mi/s
BM_format_to_string_back_inserter<std::list<char>>/256                4840 ns         4840 ns       144908 bytes_per_second=50.4427Mi/s
BM_format_to_string_back_inserter<std::list<char>>/512                9636 ns         9636 ns        72474 bytes_per_second=50.6744Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1024              19372 ns        19372 ns        36037 bytes_per_second=50.4102Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2048              38759 ns        38759 ns        18046 bytes_per_second=50.391Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4096              77593 ns        77593 ns         9015 bytes_per_second=50.3428Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8192             156059 ns       156060 ns         4485 bytes_per_second=50.061Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16384            312579 ns       312584 ns         2237 bytes_per_second=49.9866Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32768            625037 ns       625048 ns         1116 bytes_per_second=49.9962Mi/s
BM_format_to_string_back_inserter<std::list<char>>/65536           1243717 ns      1243709 ns          561 bytes_per_second=50.2529Mi/s
BM_format_to_string_back_inserter<std::list<char>>/131072          2493845 ns      2493825 ns          278 bytes_per_second=50.1238Mi/s
BM_format_to_string_back_inserter<std::list<char>>/262144          5092860 ns      5092824 ns          127 bytes_per_second=49.0887Mi/s
BM_format_to_string_back_inserter<std::list<char>>/524288         10365037 ns     10364249 ns           63 bytes_per_second=48.2428Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1048576        21045804 ns     21044840 ns           31 bytes_per_second=47.5176Mi/s
BM_format_to_string_begin<std::string>/1                              45.7 ns         45.7 ns     15315734 bytes_per_second=20.8756Mi/s
BM_format_to_string_begin<std::string>/2                              45.8 ns         45.8 ns     15284718 bytes_per_second=41.6495Mi/s
BM_format_to_string_begin<std::string>/4                              45.8 ns         45.8 ns     15267703 bytes_per_second=83.2557Mi/s
BM_format_to_string_begin<std::string>/8                              45.8 ns         45.8 ns     15287339 bytes_per_second=166.595Mi/s
BM_format_to_string_begin<std::string>/16                             45.8 ns         45.8 ns     15292216 bytes_per_second=333.044Mi/s
BM_format_to_string_begin<std::string>/32                             45.8 ns         45.8 ns     15296602 bytes_per_second=666.48Mi/s
BM_format_to_string_begin<std::string>/64                             45.8 ns         45.8 ns     15288652 bytes_per_second=1.30226Gi/s
BM_format_to_string_begin<std::string>/128                            46.4 ns         46.4 ns     15067311 bytes_per_second=2.56753Gi/s
BM_format_to_string_begin<std::string>/256                            49.7 ns         49.7 ns     14097564 bytes_per_second=4.79754Gi/s
BM_format_to_string_begin<std::string>/512                            50.1 ns         50.1 ns     13975374 bytes_per_second=9.5099Gi/s
BM_format_to_string_begin<std::string>/1024                           58.6 ns         58.6 ns     11945304 bytes_per_second=16.2837Gi/s
BM_format_to_string_begin<std::string>/2048                           82.9 ns         82.9 ns      8438746 bytes_per_second=23.0154Gi/s
BM_format_to_string_begin<std::string>/4096                           97.1 ns         97.1 ns      7198265 bytes_per_second=39.2664Gi/s
BM_format_to_string_begin<std::string>/8192                            149 ns          149 ns      4694202 bytes_per_second=51.0557Gi/s
BM_format_to_string_begin<std::string>/16384                           304 ns          304 ns      2294175 bytes_per_second=50.1141Gi/s
BM_format_to_string_begin<std::string>/32768                          1332 ns         1332 ns       524864 bytes_per_second=22.9031Gi/s
BM_format_to_string_begin<std::string>/65536                          3284 ns         3284 ns       213219 bytes_per_second=18.5865Gi/s
BM_format_to_string_begin<std::string>/131072                         6618 ns         6618 ns       105734 bytes_per_second=18.4439Gi/s
BM_format_to_string_begin<std::string>/262144                        14882 ns        14882 ns        47061 bytes_per_second=16.4047Gi/s
BM_format_to_string_begin<std::string>/524288                        28676 ns        28676 ns        24430 bytes_per_second=17.0275Gi/s
BM_format_to_string_begin<std::string>/1048576                       57252 ns        57252 ns        12197 bytes_per_second=17.0572Gi/s
BM_format_to_string_begin<std::vector<char>>/1                        45.8 ns         45.8 ns     15267695 bytes_per_second=20.836Mi/s
BM_format_to_string_begin<std::vector<char>>/2                        46.1 ns         46.1 ns     15195910 bytes_per_second=41.4071Mi/s
BM_format_to_string_begin<std::vector<char>>/4                        45.7 ns         45.7 ns     15330056 bytes_per_second=83.5359Mi/s
BM_format_to_string_begin<std::vector<char>>/8                        45.5 ns         45.5 ns     15402816 bytes_per_second=167.803Mi/s
BM_format_to_string_begin<std::vector<char>>/16                       45.4 ns         45.4 ns     15443498 bytes_per_second=335.893Mi/s
BM_format_to_string_begin<std::vector<char>>/32                       45.7 ns         45.7 ns     15313718 bytes_per_second=667.659Mi/s
BM_format_to_string_begin<std::vector<char>>/64                       45.7 ns         45.7 ns     15387708 bytes_per_second=1.30307Gi/s
BM_format_to_string_begin<std::vector<char>>/128                      46.3 ns         46.3 ns     15107063 bytes_per_second=2.57456Gi/s
BM_format_to_string_begin<std::vector<char>>/256                      48.9 ns         48.9 ns     14303099 bytes_per_second=4.87188Gi/s
BM_format_to_string_begin<std::vector<char>>/512                      49.7 ns         49.7 ns     14084558 bytes_per_second=9.59126Gi/s
BM_format_to_string_begin<std::vector<char>>/1024                     59.1 ns         59.1 ns     11810905 bytes_per_second=16.1327Gi/s
BM_format_to_string_begin<std::vector<char>>/2048                     83.8 ns         83.8 ns      8349918 bytes_per_second=22.7525Gi/s
BM_format_to_string_begin<std::vector<char>>/4096                     98.9 ns         98.9 ns      7050575 bytes_per_second=38.5623Gi/s
BM_format_to_string_begin<std::vector<char>>/8192                      148 ns          148 ns      4730159 bytes_per_second=51.5292Gi/s
BM_format_to_string_begin<std::vector<char>>/16384                     304 ns          304 ns      2286018 bytes_per_second=50.1323Gi/s
BM_format_to_string_begin<std::vector<char>>/32768                    1334 ns         1334 ns       525344 bytes_per_second=22.8783Gi/s
BM_format_to_string_begin<std::vector<char>>/65536                    3283 ns         3283 ns       212975 bytes_per_second=18.591Gi/s
BM_format_to_string_begin<std::vector<char>>/131072                   6567 ns         6567 ns       106494 bytes_per_second=18.5874Gi/s
BM_format_to_string_begin<std::vector<char>>/262144                  14069 ns        14069 ns        49792 bytes_per_second=17.3537Gi/s
BM_format_to_string_begin<std::vector<char>>/524288                  28738 ns        28738 ns        24380 bytes_per_second=16.9906Gi/s
BM_format_to_string_begin<std::vector<char>>/1048576                 57384 ns        57383 ns        12153 bytes_per_second=17.0183Gi/s
BM_format_to_string_begin<std::list<char>>/1                          47.9 ns         47.9 ns     14610235 bytes_per_second=19.9008Mi/s
BM_format_to_string_begin<std::list<char>>/2                          48.2 ns         48.2 ns     14524097 bytes_per_second=39.6086Mi/s
BM_format_to_string_begin<std::list<char>>/4                          50.8 ns         50.8 ns     13779419 bytes_per_second=75.0641Mi/s
BM_format_to_string_begin<std::list<char>>/8                          60.2 ns         60.2 ns     11601054 bytes_per_second=126.686Mi/s
BM_format_to_string_begin<std::list<char>>/16                         80.3 ns         80.3 ns      8734097 bytes_per_second=190.079Mi/s
BM_format_to_string_begin<std::list<char>>/32                          124 ns          124 ns      5643304 bytes_per_second=246.492Mi/s
BM_format_to_string_begin<std::list<char>>/64                          208 ns          208 ns      3355533 bytes_per_second=292.895Mi/s
BM_format_to_string_begin<std::list<char>>/128                         383 ns          383 ns      1837992 bytes_per_second=318.382Mi/s
BM_format_to_string_begin<std::list<char>>/256                         748 ns          748 ns       934866 bytes_per_second=326.476Mi/s
BM_format_to_string_begin<std::list<char>>/512                        1436 ns         1436 ns       486858 bytes_per_second=340.007Mi/s
BM_format_to_string_begin<std::list<char>>/1024                       2894 ns         2894 ns       244197 bytes_per_second=337.475Mi/s
BM_format_to_string_begin<std::list<char>>/2048                       5728 ns         5728 ns       121691 bytes_per_second=340.969Mi/s
BM_format_to_string_begin<std::list<char>>/4096                      11331 ns        11331 ns        61789 bytes_per_second=344.744Mi/s
BM_format_to_string_begin<std::list<char>>/8192                      22939 ns        22939 ns        30543 bytes_per_second=340.575Mi/s
BM_format_to_string_begin<std::list<char>>/16384                     45955 ns        45955 ns        15252 bytes_per_second=340.005Mi/s
BM_format_to_string_begin<std::list<char>>/32768                     91702 ns        91703 ns         7646 bytes_per_second=340.774Mi/s
BM_format_to_string_begin<std::list<char>>/65536                    182117 ns       182119 ns         3845 bytes_per_second=343.183Mi/s
BM_format_to_string_begin<std::list<char>>/131072                   370504 ns       370508 ns         1885 bytes_per_second=337.375Mi/s
BM_format_to_string_begin<std::list<char>>/262144                   852511 ns       852470 ns          812 bytes_per_second=293.266Mi/s
BM_format_to_string_begin<std::list<char>>/524288                  2011217 ns      2011107 ns          348 bytes_per_second=248.619Mi/s
BM_format_to_string_begin<std::list<char>>/1048576                 4250045 ns      4249856 ns          165 bytes_per_second=235.302Mi/s
BM_format_to_string_span<char>/1                                      45.9 ns         45.9 ns     15271419 bytes_per_second=20.792Mi/s
BM_format_to_string_span<char>/2                                      45.8 ns         45.8 ns     15298666 bytes_per_second=41.6504Mi/s
BM_format_to_string_span<char>/4                                      45.5 ns         45.5 ns     15385663 bytes_per_second=83.8287Mi/s
BM_format_to_string_span<char>/8                                      45.8 ns         45.8 ns     15301650 bytes_per_second=166.746Mi/s
BM_format_to_string_span<char>/16                                     45.8 ns         45.8 ns     15303687 bytes_per_second=333.361Mi/s
BM_format_to_string_span<char>/32                                     45.4 ns         45.4 ns     15393460 bytes_per_second=671.681Mi/s
BM_format_to_string_span<char>/64                                     45.8 ns         45.8 ns     15359776 bytes_per_second=1.30207Gi/s
BM_format_to_string_span<char>/128                                    46.4 ns         46.4 ns     15093067 bytes_per_second=2.57078Gi/s
BM_format_to_string_span<char>/256                                    49.0 ns         49.0 ns     14276746 bytes_per_second=4.86283Gi/s
BM_format_to_string_span<char>/512                                    49.7 ns         49.7 ns     14074076 bytes_per_second=9.58552Gi/s
BM_format_to_string_span<char>/1024                                   59.2 ns         59.2 ns     11901333 bytes_per_second=16.1177Gi/s
BM_format_to_string_span<char>/2048                                   84.8 ns         84.8 ns      8242700 bytes_per_second=22.4821Gi/s
BM_format_to_string_span<char>/4096                                   94.1 ns         94.1 ns      7431297 bytes_per_second=40.5358Gi/s
BM_format_to_string_span<char>/8192                                    148 ns          148 ns      4743152 bytes_per_second=51.644Gi/s
BM_format_to_string_span<char>/16384                                   273 ns          273 ns      2571402 bytes_per_second=55.8844Gi/s
BM_format_to_string_span<char>/32768                                  1334 ns         1334 ns       525042 bytes_per_second=22.8708Gi/s
BM_format_to_string_span<char>/65536                                  3282 ns         3282 ns       213311 bytes_per_second=18.5946Gi/s
BM_format_to_string_span<char>/131072                                 6537 ns         6537 ns       106973 bytes_per_second=18.6748Gi/s
BM_format_to_string_span<char>/262144                                14128 ns        14128 ns        49579 bytes_per_second=17.281Gi/s
BM_format_to_string_span<char>/524288                                28932 ns        28933 ns        24205 bytes_per_second=16.8765Gi/s
BM_format_to_string_span<char>/1048576                               60544 ns        60543 ns        11600 bytes_per_second=16.13Gi/s
BM_format_to_string_pointer<char>/1                                   45.9 ns         45.9 ns     15252402 bytes_per_second=20.7726Mi/s
BM_format_to_string_pointer<char>/2                                   45.9 ns         45.9 ns     15267134 bytes_per_second=41.5792Mi/s
BM_format_to_string_pointer<char>/4                                   45.5 ns         45.5 ns     15379145 bytes_per_second=83.7786Mi/s
BM_format_to_string_pointer<char>/8                                   45.8 ns         45.8 ns     15282721 bytes_per_second=166.595Mi/s
BM_format_to_string_pointer<char>/16                                  45.8 ns         45.8 ns     15271834 bytes_per_second=332.971Mi/s
BM_format_to_string_pointer<char>/32                                  45.5 ns         45.5 ns     15381576 bytes_per_second=671.226Mi/s
BM_format_to_string_pointer<char>/64                                  45.8 ns         45.8 ns     15367803 bytes_per_second=1.30179Gi/s
BM_format_to_string_pointer<char>/128                                 46.4 ns         46.4 ns     15094000 bytes_per_second=2.56988Gi/s
BM_format_to_string_pointer<char>/256                                 49.1 ns         49.1 ns     14263165 bytes_per_second=4.85744Gi/s
BM_format_to_string_pointer<char>/512                                 49.8 ns         49.8 ns     14067988 bytes_per_second=9.5836Gi/s
BM_format_to_string_pointer<char>/1024                                59.2 ns         59.2 ns     11849610 bytes_per_second=16.1162Gi/s
BM_format_to_string_pointer<char>/2048                                84.9 ns         84.9 ns      8226854 bytes_per_second=22.4648Gi/s
BM_format_to_string_pointer<char>/4096                                94.4 ns         94.4 ns      7429430 bytes_per_second=40.4138Gi/s
BM_format_to_string_pointer<char>/8192                                 148 ns          148 ns      4719610 bytes_per_second=51.4879Gi/s
BM_format_to_string_pointer<char>/16384                                274 ns          274 ns      2573637 bytes_per_second=55.6724Gi/s
BM_format_to_string_pointer<char>/32768                               1335 ns         1335 ns       524147 bytes_per_second=22.8593Gi/s
BM_format_to_string_pointer<char>/65536                               3286 ns         3286 ns       213316 bytes_per_second=18.576Gi/s
BM_format_to_string_pointer<char>/131072                              6589 ns         6589 ns       106030 bytes_per_second=18.5261Gi/s
BM_format_to_string_pointer<char>/262144                             13941 ns        13942 ns        50127 bytes_per_second=17.5117Gi/s
BM_format_to_string_pointer<char>/524288                             28749 ns        28749 ns        24313 bytes_per_second=16.9843Gi/s
BM_format_to_string_pointer<char>/1048576                            60922 ns        60923 ns        11657 bytes_per_second=16.0296Gi/s
BM_format_to_string_back_inserter<std::wstring>/1                     53.8 ns         53.8 ns     12994567 bytes_per_second=70.9108Mi/s
BM_format_to_string_back_inserter<std::wstring>/2                     53.8 ns         53.8 ns     12978471 bytes_per_second=141.694Mi/s
BM_format_to_string_back_inserter<std::wstring>/4                     53.8 ns         53.8 ns     13077945 bytes_per_second=283.467Mi/s
BM_format_to_string_back_inserter<std::wstring>/8                     72.6 ns         72.6 ns      9610959 bytes_per_second=420.16Mi/s
BM_format_to_string_back_inserter<std::wstring>/16                    72.5 ns         72.5 ns      9610752 bytes_per_second=841.34Mi/s
BM_format_to_string_back_inserter<std::wstring>/32                    74.3 ns         74.3 ns      9441354 bytes_per_second=1.60519Gi/s
BM_format_to_string_back_inserter<std::wstring>/64                    76.3 ns         76.3 ns      9194211 bytes_per_second=3.1258Gi/s
BM_format_to_string_back_inserter<std::wstring>/128                   83.7 ns         83.7 ns      8333241 bytes_per_second=5.69904Gi/s
BM_format_to_string_back_inserter<std::wstring>/256                    104 ns          104 ns      6750687 bytes_per_second=9.18037Gi/s
BM_format_to_string_back_inserter<std::wstring>/512                    219 ns          219 ns      3201818 bytes_per_second=8.70921Gi/s
BM_format_to_string_back_inserter<std::wstring>/1024                   411 ns          411 ns      1704850 bytes_per_second=9.27969Gi/s
BM_format_to_string_back_inserter<std::wstring>/2048                   746 ns          746 ns       946781 bytes_per_second=10.2309Gi/s
BM_format_to_string_back_inserter<std::wstring>/4096                  1725 ns         1725 ns       405431 bytes_per_second=8.84797Gi/s
BM_format_to_string_back_inserter<std::wstring>/8192                  3329 ns         3329 ns       210268 bytes_per_second=9.16631Gi/s
BM_format_to_string_back_inserter<std::wstring>/16384                 6845 ns         6845 ns       102525 bytes_per_second=8.91734Gi/s
BM_format_to_string_back_inserter<std::wstring>/32768                16173 ns        16173 ns        43229 bytes_per_second=7.54788Gi/s
BM_format_to_string_back_inserter<std::wstring>/65536                35422 ns        35423 ns        19765 bytes_per_second=6.89224Gi/s
BM_format_to_string_back_inserter<std::wstring>/131072               73063 ns        73064 ns         9541 bytes_per_second=6.68292Gi/s
BM_format_to_string_back_inserter<std::wstring>/262144              647858 ns       647788 ns         1078 bytes_per_second=1.50753Gi/s
BM_format_to_string_back_inserter<std::wstring>/524288             1423678 ns      1423467 ns          489 bytes_per_second=1.37209Gi/s
BM_format_to_string_back_inserter<std::wstring>/1048576            2756304 ns      2756020 ns          254 bytes_per_second=1.41735Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1             66.9 ns         66.9 ns     10454021 bytes_per_second=57.0225Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2             68.0 ns         68.0 ns     10290274 bytes_per_second=112.254Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4             69.5 ns         69.5 ns     10091542 bytes_per_second=219.668Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8             72.0 ns         72.0 ns      9730331 bytes_per_second=423.569Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16            77.1 ns         77.1 ns      9129530 bytes_per_second=791.514Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32            89.2 ns         89.2 ns      7858872 bytes_per_second=1.33639Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/64             113 ns          113 ns      6199305 bytes_per_second=2.10325Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/128            145 ns          145 ns      4830829 bytes_per_second=3.28951Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/256            219 ns          219 ns      3199567 bytes_per_second=4.35747Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/512            429 ns          429 ns      1627664 bytes_per_second=4.44151Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1024           729 ns          729 ns       963084 bytes_per_second=5.23608Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2048          1157 ns         1157 ns       608226 bytes_per_second=6.59151Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4096          2097 ns         2097 ns       333445 bytes_per_second=7.27746Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8192          3799 ns         3799 ns       184182 bytes_per_second=8.03219Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16384         7594 ns         7593 ns        92256 bytes_per_second=8.03796Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32768        17132 ns        17132 ns        40821 bytes_per_second=7.12534Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/65536        35126 ns        35126 ns        19972 bytes_per_second=6.95037Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/131072       68707 ns        68708 ns        10190 bytes_per_second=7.10658Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/262144      134733 ns       134736 ns         5190 bytes_per_second=7.24797Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/524288      325704 ns       325696 ns         2152 bytes_per_second=5.99676Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1048576     987276 ns       987268 ns          694 bytes_per_second=3.95662Gi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1               65.0 ns         65.0 ns     10764630 bytes_per_second=58.6946Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/2               75.7 ns         75.7 ns      9262220 bytes_per_second=100.79Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/4                106 ns          106 ns      6614820 bytes_per_second=144.494Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/8                172 ns          172 ns      4096429 bytes_per_second=177.124Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/16               359 ns          359 ns      1956317 bytes_per_second=170.044Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/32               667 ns          667 ns      1046748 bytes_per_second=182.903Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/64              1243 ns         1243 ns       553871 bytes_per_second=196.398Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/128             2441 ns         2441 ns       285414 bytes_per_second=200.017Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/256             4884 ns         4884 ns       143515 bytes_per_second=199.957Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/512             9715 ns         9716 ns        72147 bytes_per_second=201.031Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1024           19549 ns        19549 ns        35854 bytes_per_second=199.819Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/2048           39111 ns        39112 ns        17906 bytes_per_second=199.749Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/4096           78165 ns        78165 ns         8925 bytes_per_second=199.898Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/8192          157138 ns       157136 ns         4450 bytes_per_second=198.872Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/16384         314543 ns       314548 ns         2223 bytes_per_second=198.698Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/32768         629860 ns       629857 ns         1105 bytes_per_second=198.458Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/65536        1260234 ns      1260229 ns          553 bytes_per_second=198.377Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/131072       2545555 ns      2545480 ns          275 bytes_per_second=196.427Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/262144       5279010 ns      5274830 ns          124 bytes_per_second=189.58Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/524288      10667884 ns     10667981 ns           61 bytes_per_second=187.477Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1048576     21667268 ns     21665586 ns           31 bytes_per_second=184.625Mi/s
BM_format_to_string_begin<std::wstring>/1                             44.0 ns         44.0 ns     15885663 bytes_per_second=86.6787Mi/s
BM_format_to_string_begin<std::wstring>/2                             44.0 ns         44.0 ns     15929967 bytes_per_second=173.434Mi/s
BM_format_to_string_begin<std::wstring>/4                             44.0 ns         44.0 ns     15890332 bytes_per_second=346.685Mi/s
BM_format_to_string_begin<std::wstring>/8                             44.0 ns         44.0 ns     15900063 bytes_per_second=694.236Mi/s
BM_format_to_string_begin<std::wstring>/16                            44.0 ns         44.0 ns     15908010 bytes_per_second=1.35428Gi/s
BM_format_to_string_begin<std::wstring>/32                            44.5 ns         44.5 ns     15678431 bytes_per_second=2.67706Gi/s
BM_format_to_string_begin<std::wstring>/64                            47.6 ns         47.6 ns     14766812 bytes_per_second=5.0111Gi/s
BM_format_to_string_begin<std::wstring>/128                           48.5 ns         48.5 ns     14444698 bytes_per_second=9.82401Gi/s
BM_format_to_string_begin<std::wstring>/256                           58.3 ns         58.3 ns     12045526 bytes_per_second=16.3663Gi/s
BM_format_to_string_begin<std::wstring>/512                           82.9 ns         82.9 ns      8422805 bytes_per_second=23.008Gi/s
BM_format_to_string_begin<std::wstring>/1024                          92.7 ns         92.7 ns      7563548 bytes_per_second=41.161Gi/s
BM_format_to_string_begin<std::wstring>/2048                           146 ns          146 ns      4790442 bytes_per_second=52.3526Gi/s
BM_format_to_string_begin<std::wstring>/4096                           277 ns          277 ns      2525154 bytes_per_second=55.0871Gi/s
BM_format_to_string_begin<std::wstring>/8192                          1330 ns         1330 ns       525371 bytes_per_second=22.9473Gi/s
BM_format_to_string_begin<std::wstring>/16384                         3340 ns         3340 ns       209411 bytes_per_second=18.2727Gi/s
BM_format_to_string_begin<std::wstring>/32768                         7063 ns         7063 ns        99337 bytes_per_second=17.2837Gi/s
BM_format_to_string_begin<std::wstring>/65536                        14738 ns        14738 ns        47473 bytes_per_second=16.5655Gi/s
BM_format_to_string_begin<std::wstring>/131072                       29862 ns        29862 ns        23457 bytes_per_second=16.3512Gi/s
BM_format_to_string_begin<std::wstring>/262144                       60345 ns        60347 ns        11579 bytes_per_second=16.1825Gi/s
BM_format_to_string_begin<std::wstring>/524288                      116540 ns       116537 ns         6001 bytes_per_second=16.7597Gi/s
BM_format_to_string_begin<std::wstring>/1048576                     237020 ns       237009 ns         3022 bytes_per_second=16.4814Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1                     44.0 ns         44.0 ns     15867055 bytes_per_second=86.6892Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/2                     44.0 ns         44.0 ns     15900711 bytes_per_second=173.438Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/4                     44.0 ns         44.0 ns     15899776 bytes_per_second=346.657Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/8                     44.0 ns         44.0 ns     15919930 bytes_per_second=693.399Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/16                    44.0 ns         44.0 ns     15921070 bytes_per_second=1.35442Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/32                    44.6 ns         44.6 ns     15695175 bytes_per_second=2.67195Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/64                    45.1 ns         45.1 ns     15484589 bytes_per_second=5.28257Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/128                   48.5 ns         48.5 ns     14453697 bytes_per_second=9.84027Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/256                   56.7 ns         56.7 ns     12342517 bytes_per_second=16.8056Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/512                   82.6 ns         82.6 ns      8493345 bytes_per_second=23.0805Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1024                  91.6 ns         91.6 ns      7641768 bytes_per_second=41.6496Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/2048                   145 ns          145 ns      4845210 bytes_per_second=52.7525Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/4096                   273 ns          273 ns      2552767 bytes_per_second=55.8487Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/8192                  1329 ns         1329 ns       526482 bytes_per_second=22.9644Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/16384                 3309 ns         3309 ns       211655 bytes_per_second=18.4432Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/32768                 7117 ns         7117 ns        98330 bytes_per_second=17.1508Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/65536                14810 ns        14810 ns        47295 bytes_per_second=16.485Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/131072               30869 ns        30870 ns        22661 bytes_per_second=15.8174Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/262144               62039 ns        62040 ns        11262 bytes_per_second=15.7409Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/524288              116643 ns       116642 ns         6000 bytes_per_second=16.7447Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1048576             235639 ns       235630 ns         2977 bytes_per_second=16.5779Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/1                       45.8 ns         45.8 ns     15271075 bytes_per_second=83.2593Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/2                       46.0 ns         46.0 ns     15196430 bytes_per_second=165.721Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/4                       47.5 ns         47.5 ns     14383132 bytes_per_second=321.251Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/8                       58.9 ns         58.9 ns     11920516 bytes_per_second=518.09Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/16                      80.2 ns         80.2 ns      8623334 bytes_per_second=761.223Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/32                       123 ns          123 ns      5685436 bytes_per_second=989.303Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/64                       213 ns          213 ns      3314615 bytes_per_second=1.11905Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/128                      385 ns          385 ns      1814884 bytes_per_second=1.237Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/256                      883 ns          883 ns       795200 bytes_per_second=1.08056Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/512                     1657 ns         1657 ns       422497 bytes_per_second=1.1512Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/1024                    3334 ns         3334 ns       210358 bytes_per_second=1.14428Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/2048                    6648 ns         6648 ns       105270 bytes_per_second=1.14769Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/4096                   13219 ns        13219 ns        52970 bytes_per_second=1.15431Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/8192                   26571 ns        26572 ns        26363 bytes_per_second=1.1485Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/16384                  53425 ns        53425 ns        13120 bytes_per_second=1.14244Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/32768                 106431 ns       106429 ns         6592 bytes_per_second=1.14697Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/65536                 212703 ns       212704 ns         3288 bytes_per_second=1.1478Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/131072                448945 ns       448932 ns         1558 bytes_per_second=1.08765Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/262144               1076203 ns      1076125 ns          647 bytes_per_second=929.26Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/524288               2540847 ns      2540726 ns          275 bytes_per_second=787.176Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/1048576              5232106 ns      5231772 ns          132 bytes_per_second=764.559Mi/s
BM_format_to_string_span<wchar_t>/1                                   44.0 ns         44.0 ns     15924873 bytes_per_second=86.6028Mi/s
BM_format_to_string_span<wchar_t>/2                                   44.0 ns         44.0 ns     15896757 bytes_per_second=173.421Mi/s
BM_format_to_string_span<wchar_t>/4                                   44.0 ns         44.0 ns     15921558 bytes_per_second=346.791Mi/s
BM_format_to_string_span<wchar_t>/8                                   44.0 ns         44.0 ns     15920345 bytes_per_second=693.846Mi/s
BM_format_to_string_span<wchar_t>/16                                  44.0 ns         44.0 ns     15915412 bytes_per_second=1.35569Gi/s
BM_format_to_string_span<wchar_t>/32                                  44.6 ns         44.6 ns     15705704 bytes_per_second=2.6752Gi/s
BM_format_to_string_span<wchar_t>/64                                  47.7 ns         47.7 ns     14625042 bytes_per_second=4.99698Gi/s
BM_format_to_string_span<wchar_t>/128                                 48.4 ns         48.4 ns     14439893 bytes_per_second=9.84566Gi/s
BM_format_to_string_span<wchar_t>/256                                 57.4 ns         57.4 ns     12219394 bytes_per_second=16.623Gi/s
BM_format_to_string_span<wchar_t>/512                                 82.9 ns         82.9 ns      8445216 bytes_per_second=23.0068Gi/s
BM_format_to_string_span<wchar_t>/1024                                91.8 ns         91.8 ns      7621819 bytes_per_second=41.5665Gi/s
BM_format_to_string_span<wchar_t>/2048                                 146 ns          146 ns      4806546 bytes_per_second=52.3575Gi/s
BM_format_to_string_span<wchar_t>/4096                                 276 ns          276 ns      2531409 bytes_per_second=55.3335Gi/s
BM_format_to_string_span<wchar_t>/8192                                1329 ns         1329 ns       525064 bytes_per_second=22.9552Gi/s
BM_format_to_string_span<wchar_t>/16384                               3334 ns         3334 ns       210093 bytes_per_second=18.3079Gi/s
BM_format_to_string_span<wchar_t>/32768                               7126 ns         7126 ns        98463 bytes_per_second=17.1309Gi/s
BM_format_to_string_span<wchar_t>/65536                              15258 ns        15259 ns        45819 bytes_per_second=16.0002Gi/s
BM_format_to_string_span<wchar_t>/131072                             31890 ns        31890 ns        21932 bytes_per_second=15.3116Gi/s
BM_format_to_string_span<wchar_t>/262144                             59619 ns        59619 ns        11766 bytes_per_second=16.3799Gi/s
BM_format_to_string_span<wchar_t>/524288                            116558 ns       116559 ns         5997 bytes_per_second=16.7565Gi/s
BM_format_to_string_span<wchar_t>/1048576                           234040 ns       234033 ns         3002 bytes_per_second=16.691Gi/s
BM_format_to_string_pointer<wchar_t>/1                                44.0 ns         44.0 ns     15896580 bytes_per_second=86.6711Mi/s
BM_format_to_string_pointer<wchar_t>/2                                44.0 ns         44.0 ns     15926804 bytes_per_second=173.492Mi/s
BM_format_to_string_pointer<wchar_t>/4                                44.0 ns         44.0 ns     15895937 bytes_per_second=346.753Mi/s
BM_format_to_string_pointer<wchar_t>/8                                44.0 ns         44.0 ns     15921799 bytes_per_second=693.352Mi/s
BM_format_to_string_pointer<wchar_t>/16                               44.0 ns         44.0 ns     15906168 bytes_per_second=1.35548Gi/s
BM_format_to_string_pointer<wchar_t>/32                               44.6 ns         44.6 ns     15704259 bytes_per_second=2.67379Gi/s
BM_format_to_string_pointer<wchar_t>/64                               47.9 ns         47.9 ns     14621125 bytes_per_second=4.98045Gi/s
BM_format_to_string_pointer<wchar_t>/128                              48.4 ns         48.4 ns     14455630 bytes_per_second=9.85747Gi/s
BM_format_to_string_pointer<wchar_t>/256                              57.4 ns         57.4 ns     12255980 bytes_per_second=16.6258Gi/s
BM_format_to_string_pointer<wchar_t>/512                              82.9 ns         82.9 ns      8423886 bytes_per_second=22.9942Gi/s
BM_format_to_string_pointer<wchar_t>/1024                             91.8 ns         91.8 ns      7642388 bytes_per_second=41.5731Gi/s
BM_format_to_string_pointer<wchar_t>/2048                              145 ns          145 ns      4830456 bytes_per_second=52.596Gi/s
BM_format_to_string_pointer<wchar_t>/4096                              276 ns          276 ns      2529521 bytes_per_second=55.3044Gi/s
BM_format_to_string_pointer<wchar_t>/8192                             1331 ns         1331 ns       526348 bytes_per_second=22.9332Gi/s
BM_format_to_string_pointer<wchar_t>/16384                            3331 ns         3331 ns       210132 bytes_per_second=18.3246Gi/s
BM_format_to_string_pointer<wchar_t>/32768                            7084 ns         7084 ns        98812 bytes_per_second=17.2312Gi/s
BM_format_to_string_pointer<wchar_t>/65536                           14719 ns        14719 ns        47532 bytes_per_second=16.5868Gi/s
BM_format_to_string_pointer<wchar_t>/131072                          29885 ns        29885 ns        23458 bytes_per_second=16.3385Gi/s
BM_format_to_string_pointer<wchar_t>/262144                          60052 ns        60053 ns        11715 bytes_per_second=16.2616Gi/s
BM_format_to_string_pointer<wchar_t>/524288                         116248 ns       116248 ns         6019 bytes_per_second=16.8014Gi/s
BM_format_to_string_pointer<wchar_t>/1048576                        234130 ns       234121 ns         3010 bytes_per_second=16.6848Gi/s

Comparison
Benchmark                                                                         Time             CPU      Time Old      Time New       CPU Old       CPU New
--------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_format_to_string_back_inserter<std::string>/1                               -0.0052         -0.0027            55            55            55            55
BM_format_to_string_back_inserter<std::string>/2                               +0.0013         +0.0039            55            55            55            55
BM_format_to_string_back_inserter<std::string>/4                               +0.0057         +0.0081            55            56            55            56
BM_format_to_string_back_inserter<std::string>/8                               +0.0058         +0.0082            55            55            55            55
BM_format_to_string_back_inserter<std::string>/16                              +0.0047         +0.0071            55            55            55            55
BM_format_to_string_back_inserter<std::string>/32                              +0.0039         +0.0066            74            75            74            75
BM_format_to_string_back_inserter<std::string>/64                              +0.0053         +0.0077            74            75            74            75
BM_format_to_string_back_inserter<std::string>/128                             +0.0035         +0.0059            76            76            75            76
BM_format_to_string_back_inserter<std::string>/256                             -0.0053         -0.0029            90            90            90            90
BM_format_to_string_back_inserter<std::string>/512                             +0.0031         +0.0055           136           136           135           136
BM_format_to_string_back_inserter<std::string>/1024                            +0.0120         +0.0144           253           256           252           256
BM_format_to_string_back_inserter<std::string>/2048                            +0.0152         +0.0177           410           416           409           416
BM_format_to_string_back_inserter<std::string>/4096                            +0.0105         +0.0129           662           669           660           669
BM_format_to_string_back_inserter<std::string>/8192                            +0.0029         +0.0054          1124          1127          1121          1127
BM_format_to_string_back_inserter<std::string>/16384                           +0.0138         +0.0167          2228          2259          2222          2259
BM_format_to_string_back_inserter<std::string>/32768                           +0.0319         +0.0345          4795          4948          4783          4948
BM_format_to_string_back_inserter<std::string>/65536                           +0.0299         +0.0325          8433          8686          8412          8686
BM_format_to_string_back_inserter<std::string>/131072                          +0.0017         +0.0036         44973         45051         44732         44892
BM_format_to_string_back_inserter<std::string>/262144                          +0.0062         +0.0078        134871        135704        134517        135571
BM_format_to_string_back_inserter<std::string>/524288                          +0.0077         +0.0077        316669        319108        316613        319046
BM_format_to_string_back_inserter<std::string>/1048576                         +0.0071         +0.0070        677580        682377        677582        682337
BM_format_to_string_back_inserter<std::vector<char>>/1                         -0.0142         -0.0143            70            69            70            69
BM_format_to_string_back_inserter<std::vector<char>>/2                         -0.0024         -0.0024            70            70            70            70
BM_format_to_string_back_inserter<std::vector<char>>/4                         -0.0087         -0.0088            71            71            71            71
BM_format_to_string_back_inserter<std::vector<char>>/8                         -0.0071         -0.0071            74            73            74            73
BM_format_to_string_back_inserter<std::vector<char>>/16                        -0.0100         -0.0100            79            78            79            78
BM_format_to_string_back_inserter<std::vector<char>>/32                        -0.0147         -0.0147            89            87            89            87
BM_format_to_string_back_inserter<std::vector<char>>/64                        -0.0168         -0.0168            90            89            90            89
BM_format_to_string_back_inserter<std::vector<char>>/128                       -0.0190         -0.0190            92            90            92            90
BM_format_to_string_back_inserter<std::vector<char>>/256                       -0.0122         -0.0122           106           105           106           105
BM_format_to_string_back_inserter<std::vector<char>>/512                       -0.0095         -0.0095           163           161           163           161
BM_format_to_string_back_inserter<std::vector<char>>/1024                      -0.0074         -0.0074           240           238           240           238
BM_format_to_string_back_inserter<std::vector<char>>/2048                      +0.0147         +0.0147           400           406           400           406
BM_format_to_string_back_inserter<std::vector<char>>/4096                      -0.0401         -0.0401           635           610           635           610
BM_format_to_string_back_inserter<std::vector<char>>/8192                      -0.0169         -0.0169          1064          1046          1064          1046
BM_format_to_string_back_inserter<std::vector<char>>/16384                     +0.0066         +0.0066          1986          1999          1986          1999
BM_format_to_string_back_inserter<std::vector<char>>/32768                     +0.0280         +0.0280          3834          3942          3835          3942
BM_format_to_string_back_inserter<std::vector<char>>/65536                     +0.0184         +0.0184          7388          7524          7388          7524
BM_format_to_string_back_inserter<std::vector<char>>/131072                    -0.0001         -0.0001         17454         17452         17454         17452
BM_format_to_string_back_inserter<std::vector<char>>/262144                    +0.0072         +0.0072         36133         36394         36133         36393
BM_format_to_string_back_inserter<std::vector<char>>/524288                    +0.0091         +0.0091         73310         73978         73310         73979
BM_format_to_string_back_inserter<std::vector<char>>/1048576                   +0.0082         +0.0083        145001        146194        144996        146195
BM_format_to_string_back_inserter<std::list<char>>/1                           -0.0131         -0.0131            63            62            63            62
BM_format_to_string_back_inserter<std::list<char>>/2                           +0.0063         +0.0063            76            76            76            76
BM_format_to_string_back_inserter<std::list<char>>/4                           +0.0214         +0.0214           103           106           103           106
BM_format_to_string_back_inserter<std::list<char>>/8                           +0.0087         +0.0087           171           172           171           172
BM_format_to_string_back_inserter<std::list<char>>/16                          +0.0012         +0.0011           324           325           324           325
BM_format_to_string_back_inserter<std::list<char>>/32                          -0.0089         -0.0089           638           633           638           633
BM_format_to_string_back_inserter<std::list<char>>/64                          +0.0002         +0.0001          1230          1230          1230          1230
BM_format_to_string_back_inserter<std::list<char>>/128                         +0.0025         +0.0025          2427          2433          2427          2433
BM_format_to_string_back_inserter<std::list<char>>/256                         -0.0015         -0.0015          4847          4840          4847          4840
BM_format_to_string_back_inserter<std::list<char>>/512                         -0.0021         -0.0021          9656          9636          9656          9636
BM_format_to_string_back_inserter<std::list<char>>/1024                        -0.0022         -0.0022         19415         19372         19416         19372
BM_format_to_string_back_inserter<std::list<char>>/2048                        -0.0043         -0.0043         38927         38759         38928         38759
BM_format_to_string_back_inserter<std::list<char>>/4096                        -0.0060         -0.0060         78062         77593         78064         77593
BM_format_to_string_back_inserter<std::list<char>>/8192                        -0.0036         -0.0036        156624        156059        156628        156060
BM_format_to_string_back_inserter<std::list<char>>/16384                       -0.0038         -0.0038        313781        312579        313788        312584
BM_format_to_string_back_inserter<std::list<char>>/32768                       -0.0026         -0.0026        626674        625037        626667        625048
BM_format_to_string_back_inserter<std::list<char>>/65536                       -0.0042         -0.0042       1248918       1243717       1248933       1243709
BM_format_to_string_back_inserter<std::list<char>>/131072                      -0.0072         -0.0072       2512031       2493845       2511949       2493825
BM_format_to_string_back_inserter<std::list<char>>/262144                      -0.0051         -0.0050       5118786       5092860       5118308       5092824
BM_format_to_string_back_inserter<std::list<char>>/524288                      -0.0030         -0.0030      10395742      10365037      10395288      10364249
BM_format_to_string_back_inserter<std::list<char>>/1048576                     -0.0030         -0.0031      21110172      21045804      21110073      21044840
BM_format_to_string_begin<std::string>/1                                       -0.0278         -0.0279            47            46            47            46
BM_format_to_string_begin<std::string>/2                                       -0.0261         -0.0261            47            46            47            46
BM_format_to_string_begin<std::string>/4                                       -0.0262         -0.0262            47            46            47            46
BM_format_to_string_begin<std::string>/8                                       -0.0257         -0.0257            47            46            47            46
BM_format_to_string_begin<std::string>/16                                      -0.0264         -0.0263            47            46            47            46
BM_format_to_string_begin<std::string>/32                                      -0.0262         -0.0262            47            46            47            46
BM_format_to_string_begin<std::string>/64                                      -0.0158         -0.0158            47            46            47            46
BM_format_to_string_begin<std::string>/128                                     -0.0134         -0.0135            47            46            47            46
BM_format_to_string_begin<std::string>/256                                     -0.0365         -0.0365            52            50            52            50
BM_format_to_string_begin<std::string>/512                                     +0.0023         +0.0023            50            50            50            50
BM_format_to_string_begin<std::string>/1024                                    -0.0099         -0.0099            59            59            59            59
BM_format_to_string_begin<std::string>/2048                                    +0.2008         +0.2008            69            83            69            83
BM_format_to_string_begin<std::string>/4096                                    -0.0306         -0.0306           100            97           100            97
BM_format_to_string_begin<std::string>/8192                                    -0.0101         -0.0101           151           149           151           149
BM_format_to_string_begin<std::string>/16384                                   -0.0302         -0.0302           314           304           314           304
BM_format_to_string_begin<std::string>/32768                                   -0.0023         -0.0024          1336          1332          1336          1332
BM_format_to_string_begin<std::string>/65536                                   -0.1274         -0.1274          3763          3284          3763          3284
BM_format_to_string_begin<std::string>/131072                                  +0.0096         +0.0096          6556          6618          6556          6618
BM_format_to_string_begin<std::string>/262144                                  +0.0646         +0.0646         13979         14882         13979         14882
BM_format_to_string_begin<std::string>/524288                                  -0.0015         -0.0015         28719         28676         28719         28676
BM_format_to_string_begin<std::string>/1048576                                 -0.0008         -0.0008         57299         57252         57299         57252
BM_format_to_string_begin<std::vector<char>>/1                                 -0.0074         -0.0074            46            46            46            46
BM_format_to_string_begin<std::vector<char>>/2                                 -0.0018         -0.0018            46            46            46            46
BM_format_to_string_begin<std::vector<char>>/4                                 -0.0103         -0.0103            46            46            46            46
BM_format_to_string_begin<std::vector<char>>/8                                 -0.0046         -0.0046            46            45            46            45
BM_format_to_string_begin<std::vector<char>>/16                                -0.0159         -0.0159            46            45            46            45
BM_format_to_string_begin<std::vector<char>>/32                                -0.0085         -0.0085            46            46            46            46
BM_format_to_string_begin<std::vector<char>>/64                                -0.0106         -0.0106            46            46            46            46
BM_format_to_string_begin<std::vector<char>>/128                               -0.0095         -0.0095            47            46            47            46
BM_format_to_string_begin<std::vector<char>>/256                               -0.0467         -0.0466            51            49            51            49
BM_format_to_string_begin<std::vector<char>>/512                               -0.0072         -0.0073            50            50            50            50
BM_format_to_string_begin<std::vector<char>>/1024                              -0.0017         -0.0017            59            59            59            59
BM_format_to_string_begin<std::vector<char>>/2048                              +0.2143         +0.2142            69            84            69            84
BM_format_to_string_begin<std::vector<char>>/4096                              +0.0138         +0.0138            98            99            98            99
BM_format_to_string_begin<std::vector<char>>/8192                              -0.0252         -0.0253           152           148           152           148
BM_format_to_string_begin<std::vector<char>>/16384                             -0.0307         -0.0307           314           304           314           304
BM_format_to_string_begin<std::vector<char>>/32768                             +0.0004         +0.0004          1333          1334          1333          1334
BM_format_to_string_begin<std::vector<char>>/65536                             -0.1269         -0.1269          3760          3283          3760          3283
BM_format_to_string_begin<std::vector<char>>/131072                            +0.0136         +0.0135          6479          6567          6480          6567
BM_format_to_string_begin<std::vector<char>>/262144                            -0.0067         -0.0067         14164         14069         14164         14069
BM_format_to_string_begin<std::vector<char>>/524288                            -0.0062         -0.0062         28916         28738         28916         28738
BM_format_to_string_begin<std::vector<char>>/1048576                           -0.0041         -0.0041         57621         57384         57622         57383
BM_format_to_string_begin<std::list<char>>/1                                   +0.0063         +0.0064            48            48            48            48
BM_format_to_string_begin<std::list<char>>/2                                   -0.0124         -0.0125            49            48            49            48
BM_format_to_string_begin<std::list<char>>/4                                   -0.0018         -0.0018            51            51            51            51
BM_format_to_string_begin<std::list<char>>/8                                   -0.0502         -0.0502            63            60            63            60
BM_format_to_string_begin<std::list<char>>/16                                  -0.0256         -0.0256            82            80            82            80
BM_format_to_string_begin<std::list<char>>/32                                  -0.0156         -0.0156           126           124           126           124
BM_format_to_string_begin<std::list<char>>/64                                  -0.0126         -0.0126           211           208           211           208
BM_format_to_string_begin<std::list<char>>/128                                 -0.0005         -0.0005           384           383           384           383
BM_format_to_string_begin<std::list<char>>/256                                 +0.0173         +0.0173           735           748           735           748
BM_format_to_string_begin<std::list<char>>/512                                 +0.0058         +0.0058          1428          1436          1428          1436
BM_format_to_string_begin<std::list<char>>/1024                                +0.0366         +0.0366          2792          2894          2792          2894
BM_format_to_string_begin<std::list<char>>/2048                                +0.0239         +0.0239          5594          5728          5594          5728
BM_format_to_string_begin<std::list<char>>/4096                                +0.0150         +0.0151         11163         11331         11163         11331
BM_format_to_string_begin<std::list<char>>/8192                                +0.0268         +0.0268         22339         22939         22339         22939
BM_format_to_string_begin<std::list<char>>/16384                               +0.0287         +0.0287         44673         45955         44674         45955
BM_format_to_string_begin<std::list<char>>/32768                               +0.0302         +0.0302         89015         91702         89016         91703
BM_format_to_string_begin<std::list<char>>/65536                               +0.0232         +0.0232        177988        182117        177989        182119
BM_format_to_string_begin<std::list<char>>/131072                              +0.0215         +0.0215        362715        370504        362697        370508
BM_format_to_string_begin<std::list<char>>/262144                              +0.0068         +0.0068        846730        852511        846685        852470
BM_format_to_string_begin<std::list<char>>/524288                              -0.0037         -0.0038       2018755       2011217       2018721       2011107
BM_format_to_string_begin<std::list<char>>/1048576                             +0.0059         +0.0058       4225251       4250045       4225188       4249856
BM_format_to_string_span<char>/1                                               -0.0080         -0.0080            46            46            46            46
BM_format_to_string_span<char>/2                                               -0.0119         -0.0119            46            46            46            46
BM_format_to_string_span<char>/4                                               -0.0198         -0.0198            46            46            46            46
BM_format_to_string_span<char>/8                                               -0.0036         -0.0036            46            46            46            46
BM_format_to_string_span<char>/16                                              -0.0124         -0.0124            46            46            46            46
BM_format_to_string_span<char>/32                                              -0.0210         -0.0209            46            45            46            45
BM_format_to_string_span<char>/64                                              -0.0132         -0.0132            46            46            46            46
BM_format_to_string_span<char>/128                                             -0.0129         -0.0129            47            46            47            46
BM_format_to_string_span<char>/256                                             -0.0350         -0.0350            51            49            51            49
BM_format_to_string_span<char>/512                                             -0.0145         -0.0146            50            50            50            50
BM_format_to_string_span<char>/1024                                            -0.0068         -0.0068            60            59            60            59
BM_format_to_string_span<char>/2048                                            +0.2238         +0.2238            69            85            69            85
BM_format_to_string_span<char>/4096                                            -0.0400         -0.0400            98            94            98            94
BM_format_to_string_span<char>/8192                                            -0.0320         -0.0320           153           148           153           148
BM_format_to_string_span<char>/16384                                           -0.1350         -0.1350           316           273           316           273
BM_format_to_string_span<char>/32768                                           -0.0036         -0.0037          1339          1334          1339          1334
BM_format_to_string_span<char>/65536                                           -0.1316         -0.1316          3780          3282          3780          3282
BM_format_to_string_span<char>/131072                                          -0.0032         -0.0032          6557          6537          6557          6537
BM_format_to_string_span<char>/262144                                          -0.0050         -0.0050         14199         14128         14199         14128
BM_format_to_string_span<char>/524288                                          +0.0034         +0.0034         28833         28932         28834         28933
BM_format_to_string_span<char>/1048576                                         +0.0500         +0.0500         57660         60544         57660         60543
BM_format_to_string_pointer<char>/1                                            -0.0114         -0.0114            46            46            46            46
BM_format_to_string_pointer<char>/2                                            -0.0133         -0.0134            46            46            46            46
BM_format_to_string_pointer<char>/4                                            -0.0193         -0.0192            46            46            46            46
BM_format_to_string_pointer<char>/8                                            -0.0030         -0.0030            46            46            46            46
BM_format_to_string_pointer<char>/16                                           -0.0123         -0.0123            46            46            46            46
BM_format_to_string_pointer<char>/32                                           -0.0205         -0.0205            46            45            46            45
BM_format_to_string_pointer<char>/64                                           -0.0140         -0.0140            46            46            46            46
BM_format_to_string_pointer<char>/128                                          -0.0098         -0.0098            47            46            47            46
BM_format_to_string_pointer<char>/256                                          -0.0412         -0.0412            51            49            51            49
BM_format_to_string_pointer<char>/512                                          -0.0082         -0.0082            50            50            50            50
BM_format_to_string_pointer<char>/1024                                         -0.0034         -0.0034            59            59            59            59
BM_format_to_string_pointer<char>/2048                                         +0.2283         +0.2283            69            85            69            85
BM_format_to_string_pointer<char>/4096                                         -0.0327         -0.0327            98            94            98            94
BM_format_to_string_pointer<char>/8192                                         -0.0170         -0.0170           151           148           151           148
BM_format_to_string_pointer<char>/16384                                        -0.1268         -0.1268           314           274           314           274
BM_format_to_string_pointer<char>/32768                                        -0.0004         -0.0004          1336          1335          1336          1335
BM_format_to_string_pointer<char>/65536                                        -0.1260         -0.1260          3759          3286          3759          3286
BM_format_to_string_pointer<char>/131072                                       +0.0079         +0.0079          6538          6589          6537          6589
BM_format_to_string_pointer<char>/262144                                       -0.0104         -0.0104         14087         13941         14087         13942
BM_format_to_string_pointer<char>/524288                                       +0.0024         +0.0024         28681         28749         28681         28749
BM_format_to_string_pointer<char>/1048576                                      +0.0590         +0.0590         57528         60922         57529         60923
BM_format_to_string_back_inserter<std::wstring>/1                              -0.0097         -0.0097            54            54            54            54
BM_format_to_string_back_inserter<std::wstring>/2                              -0.0101         -0.0101            54            54            54            54
BM_format_to_string_back_inserter<std::wstring>/4                              -0.0087         -0.0087            54            54            54            54
BM_format_to_string_back_inserter<std::wstring>/8                              -0.0377         -0.0377            75            73            75            73
BM_format_to_string_back_inserter<std::wstring>/16                             -0.0411         -0.0411            76            73            76            73
BM_format_to_string_back_inserter<std::wstring>/32                             -0.0377         -0.0377            77            74            77            74
BM_format_to_string_back_inserter<std::wstring>/64                             -0.1504         -0.1504            90            76            90            76
BM_format_to_string_back_inserter<std::wstring>/128                            -0.3911         -0.3911           137            84           137            84
BM_format_to_string_back_inserter<std::wstring>/256                            -0.5806         -0.5806           248           104           248           104
BM_format_to_string_back_inserter<std::wstring>/512                            -0.4569         -0.4569           403           219           403           219
BM_format_to_string_back_inserter<std::wstring>/1024                           -0.3579         -0.3579           640           411           640           411
BM_format_to_string_back_inserter<std::wstring>/2048                           -0.3163         -0.3163          1091           746          1091           746
BM_format_to_string_back_inserter<std::wstring>/4096                           -0.2068         -0.2068          2174          1725          2174          1725
BM_format_to_string_back_inserter<std::wstring>/8192                           -0.2694         -0.2694          4557          3329          4557          3329
BM_format_to_string_back_inserter<std::wstring>/16384                          -0.2075         -0.2075          8636          6845          8636          6845
BM_format_to_string_back_inserter<std::wstring>/32768                          -0.1824         -0.1824         19780         16173         19780         16173
BM_format_to_string_back_inserter<std::wstring>/65536                          -0.1782         -0.1782         43104         35422         43103         35423
BM_format_to_string_back_inserter<std::wstring>/131072                         -0.1874         -0.1874         89918         73063         89919         73064
BM_format_to_string_back_inserter<std::wstring>/262144                         -0.0498         -0.0499        681804        647858        681826        647788
BM_format_to_string_back_inserter<std::wstring>/524288                         -0.0373         -0.0374       1478856       1423678       1478765       1423467
BM_format_to_string_back_inserter<std::wstring>/1048576                        -0.0296         -0.0297       2840508       2756304       2840412       2756020
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1                      -0.0234         -0.0233            68            67            68            67
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2                      -0.0098         -0.0098            69            68            69            68
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4                      -0.0196         -0.0196            71            69            71            69
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8                      -0.0261         -0.0261            74            72            74            72
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16                     -0.0509         -0.0510            81            77            81            77
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32                     +0.0040         +0.0040            89            89            89            89
BM_format_to_string_back_inserter<std::vector<wchar_t>>/64                     -0.0972         -0.0971           126           113           126           113
BM_format_to_string_back_inserter<std::vector<wchar_t>>/128                    -0.2731         -0.2731           199           145           199           145
BM_format_to_string_back_inserter<std::vector<wchar_t>>/256                    -0.2528         -0.2528           293           219           293           219
BM_format_to_string_back_inserter<std::vector<wchar_t>>/512                    -0.0831         -0.0830           468           429           468           429
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1024                   +0.0390         +0.0390           701           729           701           729
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2048                   +0.0175         +0.0175          1138          1157          1138          1157
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4096                   +0.0181         +0.0180          2060          2097          2060          2097
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8192                   -0.0152         -0.0152          3858          3799          3858          3799
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16384                  +0.0260         +0.0259          7401          7594          7401          7593
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32768                  -0.0189         -0.0189         17462         17132         17462         17132
BM_format_to_string_back_inserter<std::vector<wchar_t>>/65536                  -0.0287         -0.0288         36165         35126         36166         35126
BM_format_to_string_back_inserter<std::vector<wchar_t>>/131072                 -0.0581         -0.0581         72945         68707         72947         68708
BM_format_to_string_back_inserter<std::vector<wchar_t>>/262144                 -0.0574         -0.0573        142931        134733        142930        134736
BM_format_to_string_back_inserter<std::vector<wchar_t>>/524288                 -0.0321         -0.0321        336502        325704        336501        325696
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1048576                +0.0263         +0.0263        962003        987276        961961        987268
BM_format_to_string_back_inserter<std::list<wchar_t>>/1                        +0.0582         +0.0582            61            65            61            65
BM_format_to_string_back_inserter<std::list<wchar_t>>/2                        -0.0160         -0.0160            77            76            77            76
BM_format_to_string_back_inserter<std::list<wchar_t>>/4                        -0.0501         -0.0501           111           106           111           106
BM_format_to_string_back_inserter<std::list<wchar_t>>/8                        -0.0378         -0.0377           179           172           179           172
BM_format_to_string_back_inserter<std::list<wchar_t>>/16                       +0.0683         +0.0683           336           359           336           359
BM_format_to_string_back_inserter<std::list<wchar_t>>/32                       +0.0269         +0.0269           650           667           650           667
BM_format_to_string_back_inserter<std::list<wchar_t>>/64                       -0.0228         -0.0228          1272          1243          1272          1243
BM_format_to_string_back_inserter<std::list<wchar_t>>/128                      -0.0185         -0.0185          2487          2441          2487          2441
BM_format_to_string_back_inserter<std::list<wchar_t>>/256                      -0.0162         -0.0162          4964          4884          4964          4884
BM_format_to_string_back_inserter<std::list<wchar_t>>/512                      -0.0123         -0.0123          9837          9715          9837          9716
BM_format_to_string_back_inserter<std::list<wchar_t>>/1024                     -0.0148         -0.0148         19842         19549         19842         19549
BM_format_to_string_back_inserter<std::list<wchar_t>>/2048                     -0.0156         -0.0156         39731         39111         39730         39112
BM_format_to_string_back_inserter<std::list<wchar_t>>/4096                     -0.0179         -0.0179         79592         78165         79593         78165
BM_format_to_string_back_inserter<std::list<wchar_t>>/8192                     -0.0148         -0.0148        159493        157138        159495        157136
BM_format_to_string_back_inserter<std::list<wchar_t>>/16384                    -0.0104         -0.0104        317842        314543        317840        314548
BM_format_to_string_back_inserter<std::list<wchar_t>>/32768                    -0.0072         -0.0072        634422        629860        634434        629857
BM_format_to_string_back_inserter<std::list<wchar_t>>/65536                    -0.0088         -0.0088       1271414       1260234       1271449       1260229
BM_format_to_string_back_inserter<std::list<wchar_t>>/131072                   -0.0031         -0.0032       2553515       2545555       2553543       2545480
BM_format_to_string_back_inserter<std::list<wchar_t>>/262144                   +0.0102         +0.0094       5225959       5279010       5225902       5274830
BM_format_to_string_back_inserter<std::list<wchar_t>>/524288                   +0.0042         +0.0043      10623331      10667884      10622433      10667981
BM_format_to_string_back_inserter<std::list<wchar_t>>/1048576                  +0.0028         +0.0028      21606244      21667268      21606044      21665586
BM_format_to_string_begin<std::wstring>/1                                      -0.0321         -0.0320            45            44            45            44
BM_format_to_string_begin<std::wstring>/2                                      -0.0330         -0.0330            45            44            45            44
BM_format_to_string_begin<std::wstring>/4                                      -0.0319         -0.0319            45            44            45            44
BM_format_to_string_begin<std::wstring>/8                                      -0.0330         -0.0330            45            44            45            44
BM_format_to_string_begin<std::wstring>/16                                     -0.0325         -0.0326            45            44            45            44
BM_format_to_string_begin<std::wstring>/32                                     -0.0343         -0.0342            46            45            46            45
BM_format_to_string_begin<std::wstring>/64                                     -0.0267         -0.0267            49            48            49            48
BM_format_to_string_begin<std::wstring>/128                                    -0.0281         -0.0281            50            49            50            49
BM_format_to_string_begin<std::wstring>/256                                    +0.0704         +0.0705            54            58            54            58
BM_format_to_string_begin<std::wstring>/512                                    +0.2731         +0.2731            65            83            65            83
BM_format_to_string_begin<std::wstring>/1024                                   -0.0110         -0.0110            94            93            94            93
BM_format_to_string_begin<std::wstring>/2048                                   -0.0141         -0.0141           148           146           148           146
BM_format_to_string_begin<std::wstring>/4096                                   -0.1265         -0.1266           317           277           317           277
BM_format_to_string_begin<std::wstring>/8192                                   -0.0062         -0.0062          1338          1330          1338          1330
BM_format_to_string_begin<std::wstring>/16384                                  -0.1456         -0.1456          3910          3340          3910          3340
BM_format_to_string_begin<std::wstring>/32768                                  -0.0004         -0.0004          7066          7063          7066          7063
BM_format_to_string_begin<std::wstring>/65536                                  -0.0114         -0.0114         14908         14738         14908         14738
BM_format_to_string_begin<std::wstring>/131072                                 -0.0850         -0.0850         32636         29862         32636         29862
BM_format_to_string_begin<std::wstring>/262144                                 +0.0051         +0.0052         60037         60345         60037         60347
BM_format_to_string_begin<std::wstring>/524288                                 -0.0023         -0.0023        116806        116540        116808        116537
BM_format_to_string_begin<std::wstring>/1048576                                -0.0408         -0.0408        247097        237020        247089        237009
BM_format_to_string_begin<std::vector<wchar_t>>/1                              -0.0101         -0.0101            44            44            44            44
BM_format_to_string_begin<std::vector<wchar_t>>/2                              -0.0109         -0.0109            44            44            44            44
BM_format_to_string_begin<std::vector<wchar_t>>/4                              -0.0104         -0.0104            44            44            44            44
BM_format_to_string_begin<std::vector<wchar_t>>/8                              -0.0084         -0.0084            44            44            44            44
BM_format_to_string_begin<std::vector<wchar_t>>/16                             -0.0132         -0.0132            45            44            45            44
BM_format_to_string_begin<std::vector<wchar_t>>/32                             -0.0137         -0.0138            45            45            45            45
BM_format_to_string_begin<std::vector<wchar_t>>/64                             -0.1303         -0.1303            52            45            52            45
BM_format_to_string_begin<std::vector<wchar_t>>/128                            -0.0125         -0.0125            49            48            49            48
BM_format_to_string_begin<std::vector<wchar_t>>/256                            +0.0412         +0.0413            55            57            54            57
BM_format_to_string_begin<std::vector<wchar_t>>/512                            +0.2858         +0.2859            64            83            64            83
BM_format_to_string_begin<std::vector<wchar_t>>/1024                           -0.0232         -0.0232            94            92            94            92
BM_format_to_string_begin<std::vector<wchar_t>>/2048                           -0.0209         -0.0209           148           145           148           145
BM_format_to_string_begin<std::vector<wchar_t>>/4096                           -0.1425         -0.1425           319           273           319           273
BM_format_to_string_begin<std::vector<wchar_t>>/8192                           -0.0080         -0.0080          1340          1329          1340          1329
BM_format_to_string_begin<std::vector<wchar_t>>/16384                          -0.1682         -0.1682          3978          3309          3978          3309
BM_format_to_string_begin<std::vector<wchar_t>>/32768                          +0.0197         +0.0197          6980          7117          6980          7117
BM_format_to_string_begin<std::vector<wchar_t>>/65536                          +0.0318         +0.0318         14353         14810         14353         14810
BM_format_to_string_begin<std::vector<wchar_t>>/131072                         -0.0313         -0.0313         31866         30869         31866         30870
BM_format_to_string_begin<std::vector<wchar_t>>/262144                         +0.0594         +0.0594         58559         62039         58559         62040
BM_format_to_string_begin<std::vector<wchar_t>>/524288                         -0.0042         -0.0041        117130        116643        117127        116642
BM_format_to_string_begin<std::vector<wchar_t>>/1048576                        -0.0497         -0.0497        247971        235639        247961        235630
BM_format_to_string_begin<std::list<wchar_t>>/1                                +0.0021         +0.0022            46            46            46            46
BM_format_to_string_begin<std::list<wchar_t>>/2                                -0.0179         -0.0179            47            46            47            46
BM_format_to_string_begin<std::list<wchar_t>>/4                                -0.0191         -0.0191            48            47            48            47
BM_format_to_string_begin<std::list<wchar_t>>/8                                -0.0430         -0.0430            62            59            62            59
BM_format_to_string_begin<std::list<wchar_t>>/16                               -0.0088         -0.0088            81            80            81            80
BM_format_to_string_begin<std::list<wchar_t>>/32                               -0.0097         -0.0097           125           123           125           123
BM_format_to_string_begin<std::list<wchar_t>>/64                               -0.0036         -0.0036           214           213           214           213
BM_format_to_string_begin<std::list<wchar_t>>/128                              +0.0011         +0.0012           385           385           385           385
BM_format_to_string_begin<std::list<wchar_t>>/256                              +0.2093         +0.2093           730           883           730           883
BM_format_to_string_begin<std::list<wchar_t>>/512                              +0.1627         +0.1626          1425          1657          1425          1657
BM_format_to_string_begin<std::list<wchar_t>>/1024                             +0.1843         +0.1843          2815          3334          2815          3334
BM_format_to_string_begin<std::list<wchar_t>>/2048                             +0.1841         +0.1841          5614          6648          5614          6648
BM_format_to_string_begin<std::list<wchar_t>>/4096                             +0.1809         +0.1810         11194         13219         11193         13219
BM_format_to_string_begin<std::list<wchar_t>>/8192                             +0.1899         +0.1899         22330         26571         22330         26572
BM_format_to_string_begin<std::list<wchar_t>>/16384                            +0.1992         +0.1992         44550         53425         44551         53425
BM_format_to_string_begin<std::list<wchar_t>>/32768                            +0.1986         +0.1986         88796        106431         88797        106429
BM_format_to_string_begin<std::list<wchar_t>>/65536                            +0.1955         +0.1954        177926        212703        177928        212704
BM_format_to_string_begin<std::list<wchar_t>>/131072                           +0.2206         +0.2206        367815        448945        367803        448932
BM_format_to_string_begin<std::list<wchar_t>>/262144                           +0.2074         +0.2073        891361       1076203        891325       1076125
BM_format_to_string_begin<std::list<wchar_t>>/524288                           +0.1921         +0.1921       2131461       2540847       2131391       2540726
BM_format_to_string_begin<std::list<wchar_t>>/1048576                          +0.1811         +0.1811       4429706       5232106       4429516       5231772
BM_format_to_string_span<wchar_t>/1                                            -0.0134         -0.0134            45            44            45            44
BM_format_to_string_span<wchar_t>/2                                            -0.0118         -0.0119            45            44            45            44
BM_format_to_string_span<wchar_t>/4                                            -0.0119         -0.0119            45            44            45            44
BM_format_to_string_span<wchar_t>/8                                            -0.0117         -0.0117            45            44            45            44
BM_format_to_string_span<wchar_t>/16                                           -0.0148         -0.0148            45            44            45            44
BM_format_to_string_span<wchar_t>/32                                           -0.0148         -0.0148            45            45            45            45
BM_format_to_string_span<wchar_t>/64                                           -0.0104         -0.0104            48            48            48            48
BM_format_to_string_span<wchar_t>/128                                          -0.0137         -0.0137            49            48            49            48
BM_format_to_string_span<wchar_t>/256                                          +0.0525         +0.0526            55            57            55            57
BM_format_to_string_span<wchar_t>/512                                          +0.2918         +0.2918            64            83            64            83
BM_format_to_string_span<wchar_t>/1024                                         -0.0190         -0.0190            94            92            94            92
BM_format_to_string_span<wchar_t>/2048                                         -0.0070         -0.0070           147           146           147           146
BM_format_to_string_span<wchar_t>/4096                                         -0.1275         -0.1274           316           276           316           276
BM_format_to_string_span<wchar_t>/8192                                         -0.0035         -0.0035          1334          1329          1334          1329
BM_format_to_string_span<wchar_t>/16384                                        -0.1429         -0.1429          3889          3334          3890          3334
BM_format_to_string_span<wchar_t>/32768                                        +0.0114         +0.0114          7045          7126          7045          7126
BM_format_to_string_span<wchar_t>/65536                                        +0.0301         +0.0301         14812         15258         14813         15259
BM_format_to_string_span<wchar_t>/131072                                       +0.0611         +0.0611         30052         31890         30052         31890
BM_format_to_string_span<wchar_t>/262144                                       -0.0194         -0.0194         60795         59619         60796         59619
BM_format_to_string_span<wchar_t>/524288                                       -0.0000         +0.0000        116559        116558        116557        116559
BM_format_to_string_span<wchar_t>/1048576                                      -0.0388         -0.0388        243495        234040        243492        234033
BM_format_to_string_pointer<wchar_t>/1                                         -0.0108         -0.0107            44            44            44            44
BM_format_to_string_pointer<wchar_t>/2                                         -0.0135         -0.0135            45            44            45            44
BM_format_to_string_pointer<wchar_t>/4                                         -0.0133         -0.0133            45            44            45            44
BM_format_to_string_pointer<wchar_t>/8                                         -0.0142         -0.0142            45            44            45            44
BM_format_to_string_pointer<wchar_t>/16                                        -0.0157         -0.0157            45            44            45            44
BM_format_to_string_pointer<wchar_t>/32                                        -0.0148         -0.0148            45            45            45            45
BM_format_to_string_pointer<wchar_t>/64                                        -0.0070         -0.0070            48            48            48            48
BM_format_to_string_pointer<wchar_t>/128                                       -0.0152         -0.0152            49            48            49            48
BM_format_to_string_pointer<wchar_t>/256                                       +0.0538         +0.0537            54            57            54            57
BM_format_to_string_pointer<wchar_t>/512                                       +0.2891         +0.2892            64            83            64            83
BM_format_to_string_pointer<wchar_t>/1024                                      -0.0231         -0.0230            94            92            94            92
BM_format_to_string_pointer<wchar_t>/2048                                      -0.0129         -0.0129           147           145           147           145
BM_format_to_string_pointer<wchar_t>/4096                                      -0.1307         -0.1307           317           276           317           276
BM_format_to_string_pointer<wchar_t>/8192                                      -0.0057         -0.0057          1338          1331          1338          1331
BM_format_to_string_pointer<wchar_t>/16384                                     -0.1468         -0.1467          3904          3331          3904          3331
BM_format_to_string_pointer<wchar_t>/32768                                     +0.0007         +0.0007          7079          7084          7079          7084
BM_format_to_string_pointer<wchar_t>/65536                                     -0.0115         -0.0115         14890         14719         14890         14719
BM_format_to_string_pointer<wchar_t>/131072                                    -0.0101         -0.0101         30190         29885         30190         29885
BM_format_to_string_pointer<wchar_t>/262144                                    -0.0177         -0.0176         61132         60052         61131         60053
BM_format_to_string_pointer<wchar_t>/524288                                    -0.0070         -0.0070        117069        116248        117071        116248
BM_format_to_string_pointer<wchar_t>/1048576                                   -0.0440         -0.0441        244917        234130        244915        234121
OVERALL_GEOMEAN                                                                -0.0153         -0.0152             0             0             0             0
---
 libcxx/include/__format/buffer.h           | 90 ++++++++++++++++++++++
 libcxx/include/__format/format_functions.h |  4 +-
 2 files changed, 92 insertions(+), 2 deletions(-)

diff --git a/libcxx/include/__format/buffer.h b/libcxx/include/__format/buffer.h
index bfe26bfb01cb5..5337c2fe0481c 100644
--- a/libcxx/include/__format/buffer.h
+++ b/libcxx/include/__format/buffer.h
@@ -39,6 +39,7 @@
 #include <__utility/exception_guard.h>
 #include <__utility/move.h>
 #include <cstddef>
+#include <stdexcept>
 #include <string_view>
 
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -722,6 +723,95 @@ class _LIBCPP_TEMPLATE_VIS __allocating_buffer : public __output_buffer<_CharT>
   }
 };
 
+// A buffer that directly writes to the underlying buffer.
+template <class _OutIt, __fmt_char_type _CharT>
+class _LIBCPP_TEMPLATE_VIS __direct_iterator_buffer : public __output_buffer<_CharT> {
+public:
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI explicit __direct_iterator_buffer(_OutIt __out_it)
+      : __output_buffer<_CharT>{std::__unwrap_iter(__out_it), __buffer_size, __prepare_write}, __out_it_(__out_it) {}
+
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _OutIt __out_it() && { return __out_it_ + this->__size(); }
+
+private:
+  // The function format_to expects a buffer large enough for the output. The
+  // function format_to_n has its own helper class that restricts the number of
+  // write options. So this function class can pretend to have an infinite
+  // buffer.
+  static constexpr size_t __buffer_size = -1;
+
+  _OutIt __out_it_;
+
+  _LIBCPP_HIDE_FROM_ABI static void
+  __prepare_write([[maybe_unused]] __output_buffer<_CharT>& __buffer, [[maybe_unused]] size_t __size_hint) {
+    std::__throw_length_error("__direct_iterator_buffer");
+  }
+};
+
+// A buffer that writes its output to the end of a container.
+template <class _OutIt, __fmt_char_type _CharT>
+class _LIBCPP_TEMPLATE_VIS __container_inserter_buffer : public __output_buffer<_CharT> {
+public:
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI explicit __container_inserter_buffer(_OutIt __out_it)
+      : __output_buffer<_CharT>{__buffer_, __buffer_size, __prepare_write}, __container_{__out_it.__get_container()} {}
+
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI auto __out_it() && {
+    __container_->insert(__container_->end(), __buffer_, __buffer_ + this->__size());
+    return std::back_inserter(*__container_);
+  }
+
+private:
+  typename __back_insert_iterator_container<_OutIt>::type* __container_;
+
+  // This class uses a fixed size buffer and appends the elements in
+  // __buffer_size chunks. An alternative would be to use an allocating buffer
+  // and append the output in one write operation. Benchmarking showed no
+  // performance difference.
+  static constexpr size_t __buffer_size = 256;
+  _CharT __buffer_[__buffer_size];
+
+  _LIBCPP_HIDE_FROM_ABI void __prepare_write() {
+    __container_->insert(__container_->end(), __buffer_, __buffer_ + this->__size());
+    this->__buffer_flused();
+  }
+
+  _LIBCPP_HIDE_FROM_ABI static void
+  __prepare_write(__output_buffer<_CharT>& __buffer, [[maybe_unused]] size_t __size_hint) {
+    static_cast<__container_inserter_buffer<_OutIt, _CharT>&>(__buffer).__prepare_write();
+  }
+};
+
+// A buffer that writes to an iterator.
+//
+// Unlinke the __container_inserter_buffer this class' perfomance does benefit
+// from allocating and then inserting.
+template <class _OutIt, __fmt_char_type _CharT>
+class _LIBCPP_TEMPLATE_VIS __iterator_buffer : public __allocating_buffer<_CharT> {
+public:
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI explicit __iterator_buffer(_OutIt __out_it)
+      : __allocating_buffer<_CharT>{}, __out_it_{std::move(__out_it)} {}
+
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI auto __out_it() && {
+    return std::ranges::copy(this->__view(), std::move(__out_it_)).out;
+  }
+
+private:
+  _OutIt __out_it_;
+};
+
+// Selects the type of the buffer used for the output iterator.
+template <class _OutIt, __fmt_char_type _CharT>
+class _LIBCPP_TEMPLATE_VIS __buffer_selector {
+  using _Container = __back_insert_iterator_container<_OutIt>::type;
+
+public:
+  using type =
+      conditional_t<!same_as<_Container, void>,
+                    __container_inserter_buffer<_OutIt, _CharT>,
+                    conditional_t<__enable_direct_output<_OutIt, _CharT>,
+                                  __direct_iterator_buffer<_OutIt, _CharT>,
+                                  __iterator_buffer<_OutIt, _CharT>>>;
+};
+
 // ***** ***** ***** LLVM-19 and LLVM-20 class ***** ***** *****
 
 // A dynamically growing buffer intended to be used for retargeting a context.
diff --git a/libcxx/include/__format/format_functions.h b/libcxx/include/__format/format_functions.h
index a5c63bd4db70f..523cd5a785a9b 100644
--- a/libcxx/include/__format/format_functions.h
+++ b/libcxx/include/__format/format_functions.h
@@ -411,7 +411,7 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __vformat_to(_OutIt __out_it,
     return std::__format::__vformat_to(
         basic_format_parse_context{__fmt, __args.__size()}, std::__format_context_create(std::move(__out_it), __args));
   else {
-    __format::__format_buffer<_OutIt, _CharT> __buffer{std::move(__out_it)};
+    typename __format::__buffer_selector<_OutIt, _CharT>::type __buffer{std::move(__out_it)};
     std::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()},
                                 std::__format_context_create(__buffer.__make_output_iterator(), __args));
     return std::move(__buffer).__out_it();
@@ -544,7 +544,7 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __vformat_to(
     return std::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()},
                                        std::__format_context_create(std::move(__out_it), __args, std::move(__loc)));
   else {
-    __format::__format_buffer<_OutIt, _CharT> __buffer{std::move(__out_it)};
+    typename __format::__buffer_selector<_OutIt, _CharT>::type __buffer{std::move(__out_it)};
     std::__format::__vformat_to(
         basic_format_parse_context{__fmt, __args.__size()},
         std::__format_context_create(__buffer.__make_output_iterator(), __args, std::move(__loc)));



More information about the llvm-branch-commits mailing list