[llvm-branch-commits] [libcxx] [libc++][format][5/7] Improve std::format_to_n (PR #101831)

Mark de Wever via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sat Aug 3 08:19:53 PDT 2024


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

__format_to_n_buffer is not used in the public library interface so the changes are not an ABI break.

Before
Benchmark                                                                           Time             CPU      Time Old      Time New       CPU Old       CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_format_to_n_string_back_inserter<std::string>/1                               -0.0160         -0.0136            59            58            59            58
BM_format_to_n_string_back_inserter<std::string>/2                               +0.0020         +0.0044            58            59            58            59
BM_format_to_n_string_back_inserter<std::string>/4                               +0.0084         +0.0109            58            59            58            59
BM_format_to_n_string_back_inserter<std::string>/8                               -0.0014         +0.0014            59            59            58            59
BM_format_to_n_string_back_inserter<std::string>/16                              -0.0042         -0.0018            59            58            59            58
BM_format_to_n_string_back_inserter<std::string>/32                              -0.0136         -0.0112            78            77            78            77
BM_format_to_n_string_back_inserter<std::string>/64                              -0.0096         -0.0072            78            77            77            77
BM_format_to_n_string_back_inserter<std::string>/128                             -0.1486         -0.1465            91            77            91            77
BM_format_to_n_string_back_inserter<std::string>/256                             -0.1215         -0.1191           102            90           102            90
BM_format_to_n_string_back_inserter<std::string>/512                             -0.1412         -0.1391           158           136           158           136
BM_format_to_n_string_back_inserter<std::string>/1024                            -0.1135         -0.1114           290           257           289           257
BM_format_to_n_string_back_inserter<std::string>/2048                            -0.1551         -0.1530           489           413           488           413
BM_format_to_n_string_back_inserter<std::string>/4096                            -0.1665         -0.1642           801           668           799           668
BM_format_to_n_string_back_inserter<std::string>/8192                            -0.2301         -0.2282          1449          1116          1445          1116
BM_format_to_n_string_back_inserter<std::string>/16384                           -0.1988         -0.1965          2942          2357          2933          2357
BM_format_to_n_string_back_inserter<std::string>/32768                           -0.2129         -0.2109          5676          4467          5661          4467
BM_format_to_n_string_back_inserter<std::string>/65536                           -0.2469         -0.2449         12437          9366         12404          9366
BM_format_to_n_string_back_inserter<std::string>/131072                          -0.2294         -0.2274         25855         19923         25787         19923
BM_format_to_n_string_back_inserter<std::string>/262144                          -0.1906         -0.1885         52880         42798         52739         42798
BM_format_to_n_string_back_inserter<std::string>/524288                          -0.1898         -0.1876        107703         87261        107410         87257
BM_format_to_n_string_back_inserter<std::string>/1048576                         -0.2162         -0.2139        231479        181427        230781        181426
BM_format_to_n_string_back_inserter<std::vector<char>>/1                         -0.0035         -0.0007            72            72            72            72
BM_format_to_n_string_back_inserter<std::vector<char>>/2                         +0.0104         +0.0128            73            73            72            73
BM_format_to_n_string_back_inserter<std::vector<char>>/4                         -0.0022         +0.0003            74            74            74            74
BM_format_to_n_string_back_inserter<std::vector<char>>/8                         +0.0092         +0.0116            75            76            75            76
BM_format_to_n_string_back_inserter<std::vector<char>>/16                        -0.0019         +0.0005            79            79            79            79
BM_format_to_n_string_back_inserter<std::vector<char>>/32                        +0.0168         +0.0195            89            90            88            90
BM_format_to_n_string_back_inserter<std::vector<char>>/64                        -0.0077         -0.0054            91            90            90            90
BM_format_to_n_string_back_inserter<std::vector<char>>/128                       -0.1628         -0.1608           109            91           109            91
BM_format_to_n_string_back_inserter<std::vector<char>>/256                       -0.0994         -0.0971           120           108           119           108
BM_format_to_n_string_back_inserter<std::vector<char>>/512                       -0.1116         -0.1095           186           165           186           165
BM_format_to_n_string_back_inserter<std::vector<char>>/1024                      -0.1168         -0.1144           284           250           283           250
BM_format_to_n_string_back_inserter<std::vector<char>>/2048                      -0.1664         -0.1644           484           404           483           404
BM_format_to_n_string_back_inserter<std::vector<char>>/4096                      -0.2161         -0.2143           802           629           800           629
BM_format_to_n_string_back_inserter<std::vector<char>>/8192                      -0.2834         -0.2817          1469          1053          1466          1053
BM_format_to_n_string_back_inserter<std::vector<char>>/16384                     -0.2365         -0.2344          2700          2062          2693          2062
BM_format_to_n_string_back_inserter<std::vector<char>>/32768                     -0.2359         -0.2341          4979          3805          4967          3805
BM_format_to_n_string_back_inserter<std::vector<char>>/65536                     -0.2754         -0.2736         10431          7558         10405          7558
BM_format_to_n_string_back_inserter<std::vector<char>>/131072                    -0.2505         -0.2487         22646         16973         22591         16973
BM_format_to_n_string_back_inserter<std::vector<char>>/262144                    -0.1981         -0.1958         46278         37110         46148         37111
BM_format_to_n_string_back_inserter<std::vector<char>>/524288                    -0.2027         -0.2011         91695         73110         91511         73108
BM_format_to_n_string_back_inserter<std::vector<char>>/1048576                   -0.2367         -0.2348        195458        149194        194988        149197
BM_format_to_n_string_back_inserter<std::list<char>>/1                           +0.0045         +0.0068            66            66            65            66
BM_format_to_n_string_back_inserter<std::list<char>>/2                           +0.0068         +0.0092            79            79            79            79
BM_format_to_n_string_back_inserter<std::list<char>>/4                           -0.0026         +0.0001           107           107           107           107
BM_format_to_n_string_back_inserter<std::list<char>>/8                           +0.0498         +0.0523           171           180           171           180
BM_format_to_n_string_back_inserter<std::list<char>>/16                          +0.0100         +0.0124           331           334           330           334
BM_format_to_n_string_back_inserter<std::list<char>>/32                          +0.0320         +0.0345           641           662           640           662
BM_format_to_n_string_back_inserter<std::list<char>>/64                          +0.0242         +0.0270          1237          1267          1233          1267
BM_format_to_n_string_back_inserter<std::list<char>>/128                         +0.0025         +0.0047          2474          2480          2469          2480
BM_format_to_n_string_back_inserter<std::list<char>>/256                         -0.0122         -0.0098          4984          4923          4972          4924
BM_format_to_n_string_back_inserter<std::list<char>>/512                         +0.0074         +0.0098          9740          9812          9716          9811
BM_format_to_n_string_back_inserter<std::list<char>>/1024                        +0.0045         +0.0072         19503         19590         19451         19591
BM_format_to_n_string_back_inserter<std::list<char>>/2048                        +0.0021         +0.0046         39078         39161         38981         39159
BM_format_to_n_string_back_inserter<std::list<char>>/4096                        -0.0002         +0.0023         78329         78316         78132         78315
BM_format_to_n_string_back_inserter<std::list<char>>/8192                        +0.0001         +0.0026        156689        156709        156291        156699
BM_format_to_n_string_back_inserter<std::list<char>>/16384                       -0.0025         +0.0004        313624        312842        312732        312842
BM_format_to_n_string_back_inserter<std::list<char>>/32768                       -0.0009         +0.0017        630336        629744        628711        629751
BM_format_to_n_string_back_inserter<std::list<char>>/65536                       -0.0029         -0.0001       1261542       1257851       1258055       1257872
BM_format_to_n_string_back_inserter<std::list<char>>/131072                      -0.0047         -0.0016       2543001       2531022       2535000       2530835
BM_format_to_n_string_back_inserter<std::list<char>>/262144                      -0.0061         -0.0017       5214390       5182786       5191608       5182661
BM_format_to_n_string_back_inserter<std::list<char>>/524288                      -0.0079         -0.0040      10650366      10566644      10609616      10566709
BM_format_to_n_string_back_inserter<std::list<char>>/1048576                     -0.0165         -0.0108      21677130      21319849      21550764      21318080
BM_format_to_n_string_begin<std::string>/1                                       -0.0931         -0.0909            54            49            54            49
BM_format_to_n_string_begin<std::string>/2                                       -0.0861         -0.0839            53            48            53            48
BM_format_to_n_string_begin<std::string>/4                                       -0.0872         -0.0847            53            49            53            49
BM_format_to_n_string_begin<std::string>/8                                       -0.0963         -0.0939            54            48            54            48
BM_format_to_n_string_begin<std::string>/16                                      -0.0969         -0.0947            54            48            54            48
BM_format_to_n_string_begin<std::string>/32                                      -0.1108         -0.1086            54            48            54            48
BM_format_to_n_string_begin<std::string>/64                                      -0.1107         -0.1086            54            48            54            48
BM_format_to_n_string_begin<std::string>/128                                     -0.2054         -0.2036            61            48            61            48
BM_format_to_n_string_begin<std::string>/256                                     -0.2768         -0.2751            69            50            69            50
BM_format_to_n_string_begin<std::string>/512                                     -0.4127         -0.4112            90            53            89            53
BM_format_to_n_string_begin<std::string>/1024                                    -0.5743         -0.5734           132            56           132            56
BM_format_to_n_string_begin<std::string>/2048                                    -0.7063         -0.7056           229            67           228            67
BM_format_to_n_string_begin<std::string>/4096                                    -0.7617         -0.7611           425           101           424           101
BM_format_to_n_string_begin<std::string>/8192                                    -0.8153         -0.8148           812           150           810           150
BM_format_to_n_string_begin<std::string>/16384                                   -0.8140         -0.8136          1656           308          1652           308
BM_format_to_n_string_begin<std::string>/32768                                   -0.5789         -0.5779          3179          1339          3171          1339
BM_format_to_n_string_begin<std::string>/65536                                   -0.5170         -0.5158          6818          3293          6802          3293
BM_format_to_n_string_begin<std::string>/131072                                  -0.5552         -0.5539         14829          6596         14788          6596
BM_format_to_n_string_begin<std::string>/262144                                  -0.5240         -0.5228         29547         14064         29471         14065
BM_format_to_n_string_begin<std::string>/524288                                  -0.5049         -0.5036         59436         29428         59284         29428
BM_format_to_n_string_begin<std::string>/1048576                                 -0.5123         -0.5110        120292         58666        119974         58666
BM_format_to_n_string_begin<std::vector<char>>/1                                 -0.0947         -0.0925            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/2                                 -0.0859         -0.0834            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/4                                 -0.0913         -0.0892            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/8                                 -0.0808         -0.0786            52            48            52            48
BM_format_to_n_string_begin<std::vector<char>>/16                                -0.0808         -0.0786            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/32                                -0.0921         -0.0899            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/64                                -0.0918         -0.0897            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/128                               -0.1769         -0.1747            59            48            59            48
BM_format_to_n_string_begin<std::vector<char>>/256                               -0.3249         -0.3233            73            49            73            49
BM_format_to_n_string_begin<std::vector<char>>/512                               -0.4552         -0.4539            97            53            96            53
BM_format_to_n_string_begin<std::vector<char>>/1024                              -0.5978         -0.5969           138            56           138            56
BM_format_to_n_string_begin<std::vector<char>>/2048                              -0.7152         -0.7144           235            67           235            67
BM_format_to_n_string_begin<std::vector<char>>/4096                              -0.7780         -0.7775           439            98           438            98
BM_format_to_n_string_begin<std::vector<char>>/8192                              -0.8230         -0.8226           853           151           851           151
BM_format_to_n_string_begin<std::vector<char>>/16384                             -0.8065         -0.8060          1627           315          1623           315
BM_format_to_n_string_begin<std::vector<char>>/32768                             -0.5823         -0.5811          3221          1345          3212          1345
BM_format_to_n_string_begin<std::vector<char>>/65536                             -0.5351         -0.5340          7089          3295          7072          3295
BM_format_to_n_string_begin<std::vector<char>>/131072                            -0.5683         -0.5672         15268          6591         15229          6590
BM_format_to_n_string_begin<std::vector<char>>/262144                            -0.5351         -0.5339         30296         14084         30219         14084
BM_format_to_n_string_begin<std::vector<char>>/524288                            -0.5061         -0.5049         61230         30239         61074         30238
BM_format_to_n_string_begin<std::vector<char>>/1048576                           -0.5143         -0.5128        124101         60270        123704         60271
BM_format_to_n_string_begin<std::list<char>>/1                                   +0.0383         +0.0408            49            51            49            51
BM_format_to_n_string_begin<std::list<char>>/2                                   +0.0278         +0.0301            50            51            50            51
BM_format_to_n_string_begin<std::list<char>>/4                                   +0.0388         +0.0412            51            53            51            53
BM_format_to_n_string_begin<std::list<char>>/8                                   -0.0386         -0.0360            64            62            64            62
BM_format_to_n_string_begin<std::list<char>>/16                                  -0.0225         -0.0201            85            83            85            83
BM_format_to_n_string_begin<std::list<char>>/32                                  -0.0095         -0.0071           127           126           127           126
BM_format_to_n_string_begin<std::list<char>>/64                                  -0.0072         -0.0048           214           212           213           212
BM_format_to_n_string_begin<std::list<char>>/128                                 -0.0117         -0.0092           389           385           388           385
BM_format_to_n_string_begin<std::list<char>>/256                                 -0.0034         -0.0009           749           746           747           746
BM_format_to_n_string_begin<std::list<char>>/512                                 -0.0098         -0.0074          1453          1439          1449          1439
BM_format_to_n_string_begin<std::list<char>>/1024                                +0.0109         +0.0132          2852          2883          2845          2882
BM_format_to_n_string_begin<std::list<char>>/2048                                +0.0088         +0.0113          5685          5735          5671          5735
BM_format_to_n_string_begin<std::list<char>>/4096                                +0.0043         +0.0068         11312         11360         11283         11360
BM_format_to_n_string_begin<std::list<char>>/8192                                +0.0171         +0.0197         22644         23030         22586         23030
BM_format_to_n_string_begin<std::list<char>>/16384                               +0.0146         +0.0172         45298         45959         45180         45958
BM_format_to_n_string_begin<std::list<char>>/32768                               +0.0167         +0.0195         90351         91864         90110         91864
BM_format_to_n_string_begin<std::list<char>>/65536                               +0.0150         +0.0180        180594        183305        180048        183298
BM_format_to_n_string_begin<std::list<char>>/131072                              +0.0060         +0.0092        373023        375274        371863        375279
BM_format_to_n_string_begin<std::list<char>>/262144                              -0.0354         -0.0318        895166        863452        891717        863366
BM_format_to_n_string_begin<std::list<char>>/524288                              -0.0745         -0.0712       2209006       2044442       2201104       2044356
BM_format_to_n_string_begin<std::list<char>>/1048576                             -0.0161         -0.0125       4421130       4349820       4404315       4349352
BM_format_to_n_string_span<char>/1                                               -0.0987         -0.0965            53            48            53            48
BM_format_to_n_string_span<char>/2                                               -0.0768         -0.0745            53            48            52            48
BM_format_to_n_string_span<char>/4                                               -0.0904         -0.0882            53            48            53            48
BM_format_to_n_string_span<char>/8                                               -0.0868         -0.0846            53            48            53            48
BM_format_to_n_string_span<char>/16                                              -0.0957         -0.0932            54            49            54            49
BM_format_to_n_string_span<char>/32                                              -0.0926         -0.0904            53            48            53            48
BM_format_to_n_string_span<char>/64                                              -0.0923         -0.0876            53            48            53            48
BM_format_to_n_string_span<char>/128                                             -0.1998         -0.1977            61            49            61            49
BM_format_to_n_string_span<char>/256                                             -0.2900         -0.2883            69            49            69            49
BM_format_to_n_string_span<char>/512                                             -0.4116         -0.4100            90            53            89            53
BM_format_to_n_string_span<char>/1024                                            -0.5854         -0.5844           134            56           134            56
BM_format_to_n_string_span<char>/2048                                            -0.7000         -0.6993           223            67           222            67
BM_format_to_n_string_span<char>/4096                                            -0.7731         -0.7725           427            97           426            97
BM_format_to_n_string_span<char>/8192                                            -0.8164         -0.8159           818           150           816           150
BM_format_to_n_string_span<char>/16384                                           -0.3453         -0.3436          1622          1062          1617          1062
BM_format_to_n_string_span<char>/32768                                           -0.5885         -0.5875          3137          1291          3129          1291
BM_format_to_n_string_span<char>/65536                                           -0.5064         -0.5052          6698          3306          6682          3306
BM_format_to_n_string_span<char>/131072                                          -0.5622         -0.5612         14925          6534         14888          6534
BM_format_to_n_string_span<char>/262144                                          -0.5215         -0.5201         29688         14207         29603         14207
BM_format_to_n_string_span<char>/524288                                          -0.4899         -0.4888         59308         30252         59180         30253
BM_format_to_n_string_span<char>/1048576                                         -0.4927         -0.4913        118765         60247        118433         60248
BM_format_to_n_string_pointer<char>/1                                            -0.0827         -0.0804            52            48            52            48
BM_format_to_n_string_pointer<char>/2                                            -0.0843         -0.0821            53            48            53            48
BM_format_to_n_string_pointer<char>/4                                            -0.0944         -0.0920            53            48            53            48
BM_format_to_n_string_pointer<char>/8                                            -0.0875         -0.0853            53            48            53            48
BM_format_to_n_string_pointer<char>/16                                           -0.0793         -0.0771            53            48            53            48
BM_format_to_n_string_pointer<char>/32                                           -0.0767         -0.0743            52            48            52            48
BM_format_to_n_string_pointer<char>/64                                           -0.0935         -0.0914            53            48            53            48
BM_format_to_n_string_pointer<char>/128                                          -0.2203         -0.2182            62            49            62            49
BM_format_to_n_string_pointer<char>/256                                          -0.2950         -0.2933            70            49            69            49
BM_format_to_n_string_pointer<char>/512                                          -0.4038         -0.4025            88            53            88            53
BM_format_to_n_string_pointer<char>/1024                                         -0.5755         -0.5745           131            56           131            56
BM_format_to_n_string_pointer<char>/2048                                         -0.7043         -0.7036           226            67           225            67
BM_format_to_n_string_pointer<char>/4096                                         -0.7726         -0.7719           426            97           425            97
BM_format_to_n_string_pointer<char>/8192                                         -0.8157         -0.8153           815           150           813           150
BM_format_to_n_string_pointer<char>/16384                                        -0.3490         -0.3473          1618          1053          1614          1053
BM_format_to_n_string_pointer<char>/32768                                        -0.5880         -0.5870          3137          1293          3129          1292
BM_format_to_n_string_pointer<char>/65536                                        -0.5062         -0.5048          6693          3305          6675          3305
BM_format_to_n_string_pointer<char>/131072                                       -0.5617         -0.5606         14912          6536         14876          6536
BM_format_to_n_string_pointer<char>/262144                                       -0.5206         -0.5194         29685         14230         29609         14230
BM_format_to_n_string_pointer<char>/524288                                       -0.4884         -0.4873         59254         30316         59133         30315
BM_format_to_n_string_pointer<char>/1048576                                      -0.4924         -0.4915        118746         60274        118523         60275


>From 90f1b4fb22a5bbcfec95eb770b346b79f24079a7 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][5/7] Improve std::format_to_n

__format_to_n_buffer is not used in the public library interface so the
changes are not an ABI break.

Before
----------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                  Time             CPU   Iterations UserCounters...
----------------------------------------------------------------------------------------------------------------------------
BM_format_to_n_string_back_inserter<std::string>/1                      59.2 ns         59.1 ns     11797400 bytes_per_second=16.146Mi/s
BM_format_to_n_string_back_inserter<std::string>/2                      58.5 ns         58.3 ns     12042693 bytes_per_second=32.69Mi/s
BM_format_to_n_string_back_inserter<std::string>/4                      58.2 ns         58.0 ns     12053679 bytes_per_second=65.7375Mi/s
BM_format_to_n_string_back_inserter<std::string>/8                      58.6 ns         58.4 ns     12000831 bytes_per_second=130.542Mi/s
BM_format_to_n_string_back_inserter<std::string>/16                     58.7 ns         58.6 ns     11948692 bytes_per_second=260.493Mi/s
BM_format_to_n_string_back_inserter<std::string>/32                     77.8 ns         77.6 ns      8957906 bytes_per_second=393.212Mi/s
BM_format_to_n_string_back_inserter<std::string>/64                     77.5 ns         77.3 ns      9015286 bytes_per_second=789.397Mi/s
BM_format_to_n_string_back_inserter<std::string>/128                    90.9 ns         90.7 ns      7712930 bytes_per_second=1.31409Gi/s
BM_format_to_n_string_back_inserter<std::string>/256                     102 ns          102 ns      6865771 bytes_per_second=2.33399Gi/s
BM_format_to_n_string_back_inserter<std::string>/512                     158 ns          158 ns      4449684 bytes_per_second=3.02418Gi/s
BM_format_to_n_string_back_inserter<std::string>/1024                    290 ns          289 ns      2415073 bytes_per_second=3.29623Gi/s
BM_format_to_n_string_back_inserter<std::string>/2048                    489 ns          488 ns      1435682 bytes_per_second=3.90789Gi/s
BM_format_to_n_string_back_inserter<std::string>/4096                    801 ns          799 ns       875722 bytes_per_second=4.77568Gi/s
BM_format_to_n_string_back_inserter<std::string>/8192                   1449 ns         1445 ns       485062 bytes_per_second=5.27805Gi/s
BM_format_to_n_string_back_inserter<std::string>/16384                  2942 ns         2933 ns       238811 bytes_per_second=5.20206Gi/s
BM_format_to_n_string_back_inserter<std::string>/32768                  5676 ns         5661 ns       123699 bytes_per_second=5.39051Gi/s
BM_format_to_n_string_back_inserter<std::string>/65536                 12437 ns        12404 ns        56488 bytes_per_second=4.92062Gi/s
BM_format_to_n_string_back_inserter<std::string>/131072                25855 ns        25787 ns        27203 bytes_per_second=4.73377Gi/s
BM_format_to_n_string_back_inserter<std::string>/262144                52880 ns        52739 ns        13234 bytes_per_second=4.62925Gi/s
BM_format_to_n_string_back_inserter<std::string>/524288               107703 ns       107410 ns         6509 bytes_per_second=4.54594Gi/s
BM_format_to_n_string_back_inserter<std::string>/1048576              231479 ns       230781 ns         3041 bytes_per_second=4.23155Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/1                72.2 ns         72.0 ns      9743767 bytes_per_second=13.2436Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/2                72.5 ns         72.3 ns      9678565 bytes_per_second=26.3647Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/4                74.1 ns         73.9 ns      9474498 bytes_per_second=51.6367Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/8                75.0 ns         74.8 ns      9343663 bytes_per_second=101.929Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/16               79.4 ns         79.2 ns      8837997 bytes_per_second=192.732Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/32               88.6 ns         88.3 ns      7935214 bytes_per_second=345.479Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/64               90.6 ns         90.3 ns      7741976 bytes_per_second=675.639Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/128               109 ns          109 ns      6438809 bytes_per_second=1.0968Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/256               120 ns          119 ns      5857845 bytes_per_second=1.99756Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/512               186 ns          186 ns      3765552 bytes_per_second=2.56813Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/1024              284 ns          283 ns      2474412 bytes_per_second=3.37194Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/2048              484 ns          483 ns      1450834 bytes_per_second=3.94717Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/4096              802 ns          800 ns       869473 bytes_per_second=4.76587Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/8192             1469 ns         1466 ns       477127 bytes_per_second=5.20439Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/16384            2700 ns         2693 ns       259821 bytes_per_second=5.66613Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/32768            4979 ns         4967 ns       140926 bytes_per_second=6.14388Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/65536           10431 ns        10405 ns        67137 bytes_per_second=5.86603Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/131072          22646 ns        22591 ns        30999 bytes_per_second=5.40348Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/262144          46278 ns        46148 ns        15156 bytes_per_second=5.29038Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/524288          91695 ns        91511 ns         7657 bytes_per_second=5.33577Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/1048576        195458 ns       194988 ns         3567 bytes_per_second=5.00831Gi/s
BM_format_to_n_string_back_inserter<std::list<char>>/1                  65.5 ns         65.4 ns     10691963 bytes_per_second=14.5921Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/2                  78.9 ns         78.7 ns      8920318 bytes_per_second=24.2294Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/4                   107 ns          107 ns      6540004 bytes_per_second=35.6329Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/8                   171 ns          171 ns      4108360 bytes_per_second=44.6311Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/16                  331 ns          330 ns      2121251 bytes_per_second=46.2379Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/32                  641 ns          640 ns      1097213 bytes_per_second=47.6889Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/64                 1237 ns         1233 ns       565941 bytes_per_second=49.4821Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/128                2474 ns         2469 ns       284645 bytes_per_second=49.4484Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/256                4984 ns         4972 ns       142037 bytes_per_second=49.0997Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/512                9740 ns         9716 ns        71542 bytes_per_second=50.2565Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/1024              19503 ns        19451 ns        35970 bytes_per_second=50.2075Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/2048              39078 ns        38981 ns        17962 bytes_per_second=50.1052Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/4096              78329 ns        78132 ns         8963 bytes_per_second=49.9954Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/8192             156689 ns       156291 ns         4467 bytes_per_second=49.9869Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/16384            313624 ns       312732 ns         2235 bytes_per_second=49.9629Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/32768            630336 ns       628711 ns         1108 bytes_per_second=49.7048Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/65536           1261542 ns      1258055 ns          555 bytes_per_second=49.6799Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/131072          2543001 ns      2535000 ns          275 bytes_per_second=49.3097Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/262144          5214390 ns      5191608 ns          125 bytes_per_second=48.1546Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/524288         10650366 ns     10609616 ns           62 bytes_per_second=47.1271Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/1048576        21677130 ns     21550764 ns           31 bytes_per_second=46.4021Mi/s
BM_format_to_n_string_begin<std::string>/1                              53.7 ns         53.5 ns     13041641 bytes_per_second=17.8119Mi/s
BM_format_to_n_string_begin<std::string>/2                              53.0 ns         52.9 ns     13243962 bytes_per_second=36.0447Mi/s
BM_format_to_n_string_begin<std::string>/4                              53.1 ns         53.0 ns     13167006 bytes_per_second=71.98Mi/s
BM_format_to_n_string_begin<std::string>/8                              53.6 ns         53.5 ns     13093098 bytes_per_second=142.591Mi/s
BM_format_to_n_string_begin<std::string>/16                             53.7 ns         53.5 ns     13020678 bytes_per_second=285.038Mi/s
BM_format_to_n_string_begin<std::string>/32                             53.9 ns         53.8 ns     13034246 bytes_per_second=567.706Mi/s
BM_format_to_n_string_begin<std::string>/64                             54.3 ns         54.2 ns     12901135 bytes_per_second=1.10027Gi/s
BM_format_to_n_string_begin<std::string>/128                            60.7 ns         60.5 ns     11605050 bytes_per_second=1.97014Gi/s
BM_format_to_n_string_begin<std::string>/256                            69.1 ns         68.9 ns     10172526 bytes_per_second=3.4582Gi/s
BM_format_to_n_string_begin<std::string>/512                            89.5 ns         89.3 ns      7814551 bytes_per_second=5.33874Gi/s
BM_format_to_n_string_begin<std::string>/1024                            132 ns          132 ns      5302589 bytes_per_second=7.23812Gi/s
BM_format_to_n_string_begin<std::string>/2048                            229 ns          228 ns      3070816 bytes_per_second=8.3559Gi/s
BM_format_to_n_string_begin<std::string>/4096                            425 ns          424 ns      1649496 bytes_per_second=8.98833Gi/s
BM_format_to_n_string_begin<std::string>/8192                            812 ns          810 ns       866484 bytes_per_second=9.42053Gi/s
BM_format_to_n_string_begin<std::string>/16384                          1656 ns         1652 ns       423179 bytes_per_second=9.23521Gi/s
BM_format_to_n_string_begin<std::string>/32768                          3179 ns         3171 ns       220456 bytes_per_second=9.62316Gi/s
BM_format_to_n_string_begin<std::string>/65536                          6818 ns         6802 ns       103122 bytes_per_second=8.97315Gi/s
BM_format_to_n_string_begin<std::string>/131072                        14829 ns        14788 ns        47434 bytes_per_second=8.25491Gi/s
BM_format_to_n_string_begin<std::string>/262144                        29547 ns        29471 ns        23756 bytes_per_second=8.28414Gi/s
BM_format_to_n_string_begin<std::string>/524288                        59436 ns        59284 ns        11787 bytes_per_second=8.2363Gi/s
BM_format_to_n_string_begin<std::string>/1048576                      120292 ns       119974 ns         5842 bytes_per_second=8.13979Gi/s
BM_format_to_n_string_begin<std::vector<char>>/1                        53.0 ns         52.9 ns     13395096 bytes_per_second=18.0263Mi/s
BM_format_to_n_string_begin<std::vector<char>>/2                        53.0 ns         52.9 ns     13255941 bytes_per_second=36.0868Mi/s
BM_format_to_n_string_begin<std::vector<char>>/4                        52.9 ns         52.8 ns     13208574 bytes_per_second=72.2285Mi/s
BM_format_to_n_string_begin<std::vector<char>>/8                        52.5 ns         52.4 ns     13349218 bytes_per_second=145.688Mi/s
BM_format_to_n_string_begin<std::vector<char>>/16                       52.7 ns         52.6 ns     13239180 bytes_per_second=290.223Mi/s
BM_format_to_n_string_begin<std::vector<char>>/32                       52.9 ns         52.8 ns     12857843 bytes_per_second=577.776Mi/s
BM_format_to_n_string_begin<std::vector<char>>/64                       53.3 ns         53.2 ns     13165818 bytes_per_second=1.12004Gi/s
BM_format_to_n_string_begin<std::vector<char>>/128                      58.8 ns         58.7 ns     11955351 bytes_per_second=2.03242Gi/s
BM_format_to_n_string_begin<std::vector<char>>/256                      72.7 ns         72.5 ns      9567121 bytes_per_second=3.28642Gi/s
BM_format_to_n_string_begin<std::vector<char>>/512                      96.6 ns         96.3 ns      7270746 bytes_per_second=4.9504Gi/s
BM_format_to_n_string_begin<std::vector<char>>/1024                      138 ns          138 ns      5074395 bytes_per_second=6.91338Gi/s
BM_format_to_n_string_begin<std::vector<char>>/2048                      235 ns          235 ns      2985729 bytes_per_second=8.13348Gi/s
BM_format_to_n_string_begin<std::vector<char>>/4096                      439 ns          438 ns      1597496 bytes_per_second=8.70102Gi/s
BM_format_to_n_string_begin<std::vector<char>>/8192                      853 ns          851 ns       823405 bytes_per_second=8.96488Gi/s
BM_format_to_n_string_begin<std::vector<char>>/16384                    1627 ns         1623 ns       429274 bytes_per_second=9.40197Gi/s
BM_format_to_n_string_begin<std::vector<char>>/32768                    3221 ns         3212 ns       218030 bytes_per_second=9.50016Gi/s
BM_format_to_n_string_begin<std::vector<char>>/65536                    7089 ns         7072 ns        98823 bytes_per_second=8.63113Gi/s
BM_format_to_n_string_begin<std::vector<char>>/131072                  15268 ns        15229 ns        46052 bytes_per_second=8.01568Gi/s
BM_format_to_n_string_begin<std::vector<char>>/262144                  30296 ns        30219 ns        23098 bytes_per_second=8.07902Gi/s
BM_format_to_n_string_begin<std::vector<char>>/524288                  61230 ns        61074 ns        11421 bytes_per_second=7.99487Gi/s
BM_format_to_n_string_begin<std::vector<char>>/1048576                124101 ns       123704 ns         5671 bytes_per_second=7.89434Gi/s
BM_format_to_n_string_begin<std::list<char>>/1                          49.0 ns         48.9 ns     14339585 bytes_per_second=19.5125Mi/s
BM_format_to_n_string_begin<std::list<char>>/2                          49.8 ns         49.6 ns     14059613 bytes_per_second=38.4293Mi/s
BM_format_to_n_string_begin<std::list<char>>/4                          50.9 ns         50.8 ns     13803755 bytes_per_second=75.0895Mi/s
BM_format_to_n_string_begin<std::list<char>>/8                          64.0 ns         63.8 ns     10943929 bytes_per_second=119.516Mi/s
BM_format_to_n_string_begin<std::list<char>>/16                         84.8 ns         84.6 ns      8276210 bytes_per_second=180.468Mi/s
BM_format_to_n_string_begin<std::list<char>>/32                          127 ns          127 ns      5517041 bytes_per_second=240.407Mi/s
BM_format_to_n_string_begin<std::list<char>>/64                          214 ns          213 ns      3276668 bytes_per_second=286.073Mi/s
BM_format_to_n_string_begin<std::list<char>>/128                         389 ns          388 ns      1795410 bytes_per_second=314.419Mi/s
BM_format_to_n_string_begin<std::list<char>>/256                         749 ns          747 ns       938533 bytes_per_second=326.8Mi/s
BM_format_to_n_string_begin<std::list<char>>/512                        1453 ns         1449 ns       483905 bytes_per_second=336.9Mi/s
BM_format_to_n_string_begin<std::list<char>>/1024                       2852 ns         2845 ns       245676 bytes_per_second=343.269Mi/s
BM_format_to_n_string_begin<std::list<char>>/2048                       5685 ns         5671 ns       122982 bytes_per_second=344.409Mi/s
BM_format_to_n_string_begin<std::list<char>>/4096                      11312 ns        11283 ns        61990 bytes_per_second=346.216Mi/s
BM_format_to_n_string_begin<std::list<char>>/8192                      22644 ns        22586 ns        31006 bytes_per_second=345.9Mi/s
BM_format_to_n_string_begin<std::list<char>>/16384                     45298 ns        45180 ns        15512 bytes_per_second=345.836Mi/s
BM_format_to_n_string_begin<std::list<char>>/32768                     90351 ns        90110 ns         7777 bytes_per_second=346.8Mi/s
BM_format_to_n_string_begin<std::list<char>>/65536                    180594 ns       180048 ns         3892 bytes_per_second=347.13Mi/s
BM_format_to_n_string_begin<std::list<char>>/131072                   373023 ns       371863 ns         1882 bytes_per_second=336.145Mi/s
BM_format_to_n_string_begin<std::list<char>>/262144                   895166 ns       891717 ns          713 bytes_per_second=280.358Mi/s
BM_format_to_n_string_begin<std::list<char>>/524288                  2209006 ns      2201104 ns          318 bytes_per_second=227.159Mi/s
BM_format_to_n_string_begin<std::list<char>>/1048576                 4421130 ns      4404315 ns          159 bytes_per_second=227.05Mi/s
BM_format_to_n_string_span<char>/1                                      53.3 ns         53.2 ns     13152297 bytes_per_second=17.9301Mi/s
BM_format_to_n_string_span<char>/2                                      52.5 ns         52.4 ns     13372731 bytes_per_second=36.4069Mi/s
BM_format_to_n_string_span<char>/4                                      52.8 ns         52.7 ns     13249176 bytes_per_second=72.3966Mi/s
BM_format_to_n_string_span<char>/8                                      52.9 ns         52.8 ns     13256871 bytes_per_second=144.603Mi/s
BM_format_to_n_string_span<char>/16                                     53.7 ns         53.5 ns     13086124 bytes_per_second=285.171Mi/s
BM_format_to_n_string_span<char>/32                                     53.4 ns         53.3 ns     13156961 bytes_per_second=572.554Mi/s
BM_format_to_n_string_span<char>/64                                     53.4 ns         53.1 ns     13208519 bytes_per_second=1.12209Gi/s
BM_format_to_n_string_span<char>/128                                    60.8 ns         60.7 ns     11537915 bytes_per_second=1.96458Gi/s
BM_format_to_n_string_span<char>/256                                    69.1 ns         69.0 ns     10221573 bytes_per_second=3.45715Gi/s
BM_format_to_n_string_span<char>/512                                    89.5 ns         89.3 ns      7857679 bytes_per_second=5.34184Gi/s
BM_format_to_n_string_span<char>/1024                                    134 ns          134 ns      5229017 bytes_per_second=7.12054Gi/s
BM_format_to_n_string_span<char>/2048                                    223 ns          222 ns      3148532 bytes_per_second=8.58077Gi/s
BM_format_to_n_string_span<char>/4096                                    427 ns          426 ns      1640906 bytes_per_second=8.9548Gi/s
BM_format_to_n_string_span<char>/8192                                    818 ns          816 ns       862045 bytes_per_second=9.35247Gi/s
BM_format_to_n_string_span<char>/16384                                  1622 ns         1617 ns       432033 bytes_per_second=9.43376Gi/s
BM_format_to_n_string_span<char>/32768                                  3137 ns         3129 ns       223336 bytes_per_second=9.75164Gi/s
BM_format_to_n_string_span<char>/65536                                  6698 ns         6682 ns       104597 bytes_per_second=9.13435Gi/s
BM_format_to_n_string_span<char>/131072                                14925 ns        14888 ns        46957 bytes_per_second=8.19897Gi/s
BM_format_to_n_string_span<char>/262144                                29688 ns        29603 ns        23654 bytes_per_second=8.24706Gi/s
BM_format_to_n_string_span<char>/524288                                59308 ns        59180 ns        11818 bytes_per_second=8.25073Gi/s
BM_format_to_n_string_span<char>/1048576                              118765 ns       118433 ns         5890 bytes_per_second=8.24568Gi/s
BM_format_to_n_string_pointer<char>/1                                   52.3 ns         52.2 ns     13388309 bytes_per_second=18.2682Mi/s
BM_format_to_n_string_pointer<char>/2                                   52.9 ns         52.8 ns     13272848 bytes_per_second=36.1233Mi/s
BM_format_to_n_string_pointer<char>/4                                   53.1 ns         52.9 ns     13228995 bytes_per_second=72.0969Mi/s
BM_format_to_n_string_pointer<char>/8                                   52.9 ns         52.8 ns     13249394 bytes_per_second=144.527Mi/s
BM_format_to_n_string_pointer<char>/16                                  52.6 ns         52.5 ns     13336233 bytes_per_second=290.602Mi/s
BM_format_to_n_string_pointer<char>/32                                  52.5 ns         52.4 ns     13331942 bytes_per_second=582.748Mi/s
BM_format_to_n_string_pointer<char>/64                                  53.5 ns         53.4 ns     13126493 bytes_per_second=1.11708Gi/s
BM_format_to_n_string_pointer<char>/128                                 62.4 ns         62.3 ns     11222983 bytes_per_second=1.9146Gi/s
BM_format_to_n_string_pointer<char>/256                                 69.5 ns         69.4 ns     10086274 bytes_per_second=3.43692Gi/s
BM_format_to_n_string_pointer<char>/512                                 88.3 ns         88.1 ns      7929196 bytes_per_second=5.41346Gi/s
BM_format_to_n_string_pointer<char>/1024                                 131 ns          131 ns      5357630 bytes_per_second=7.29499Gi/s
BM_format_to_n_string_pointer<char>/2048                                 226 ns          225 ns      3099073 bytes_per_second=8.46339Gi/s
BM_format_to_n_string_pointer<char>/4096                                 426 ns          425 ns      1646323 bytes_per_second=8.97431Gi/s
BM_format_to_n_string_pointer<char>/8192                                 815 ns          813 ns       859395 bytes_per_second=9.38067Gi/s
BM_format_to_n_string_pointer<char>/16384                               1618 ns         1614 ns       432959 bytes_per_second=9.45405Gi/s
BM_format_to_n_string_pointer<char>/32768                               3137 ns         3129 ns       223694 bytes_per_second=9.75173Gi/s
BM_format_to_n_string_pointer<char>/65536                               6693 ns         6675 ns       104933 bytes_per_second=9.14424Gi/s
BM_format_to_n_string_pointer<char>/131072                             14912 ns        14876 ns        47053 bytes_per_second=8.20589Gi/s
BM_format_to_n_string_pointer<char>/262144                             29685 ns        29609 ns        23651 bytes_per_second=8.24549Gi/s
BM_format_to_n_string_pointer<char>/524288                             59254 ns        59133 ns        11837 bytes_per_second=8.25738Gi/s
BM_format_to_n_string_pointer<char>/1048576                           118746 ns       118523 ns         5911 bytes_per_second=8.2394Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/1                     57.5 ns         57.3 ns     12220461 bytes_per_second=66.5332Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/2                     57.4 ns         57.2 ns     12204054 bytes_per_second=133.333Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/4                     57.3 ns         57.2 ns     12223980 bytes_per_second=266.784Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/8                     77.0 ns         76.8 ns      9139240 bytes_per_second=397.372Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/16                    78.2 ns         78.0 ns      8964082 bytes_per_second=782.577Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/32                    92.9 ns         92.6 ns      7565173 bytes_per_second=1.28711Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/64                     103 ns          103 ns      6811965 bytes_per_second=2.3225Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/128                    159 ns          159 ns      4405973 bytes_per_second=3.00338Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/256                    288 ns          287 ns      2435586 bytes_per_second=3.31766Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/512                    484 ns          483 ns      1449916 bytes_per_second=3.94838Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/1024                   817 ns          815 ns       856668 bytes_per_second=4.68114Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/2048                  1553 ns         1549 ns       451120 bytes_per_second=4.92413Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/4096                  2984 ns         2977 ns       235097 bytes_per_second=5.12583Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/8192                  5893 ns         5878 ns       119106 bytes_per_second=5.19202Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/16384                12448 ns        12412 ns        56460 bytes_per_second=4.91758Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/32768                25981 ns        25918 ns        27056 bytes_per_second=4.7099Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/65536                52551 ns        52422 ns        13313 bytes_per_second=4.65723Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/131072              107130 ns       106904 ns         6544 bytes_per_second=4.56746Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/262144              229385 ns       228860 ns         3050 bytes_per_second=4.26707Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/524288              635498 ns       633625 ns         1077 bytes_per_second=3.08246Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/1048576            1433803 ns      1428452 ns          484 bytes_per_second=2.7346Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/1             70.5 ns         70.3 ns      9940095 bytes_per_second=54.2572Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/2             70.7 ns         70.6 ns      9934856 bytes_per_second=108.129Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/4             73.2 ns         73.0 ns      9588422 bytes_per_second=209.069Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/8             75.6 ns         75.4 ns      9285318 bytes_per_second=404.488Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/16            79.9 ns         79.7 ns      8792551 bytes_per_second=766.115Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/32             104 ns          104 ns      6731654 bytes_per_second=1.14643Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/64             137 ns          137 ns      5110206 bytes_per_second=1.739Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/128            225 ns          225 ns      3119091 bytes_per_second=2.12152Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/256            338 ns          337 ns      2076273 bytes_per_second=2.82731Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/512            546 ns          544 ns      1266193 bytes_per_second=3.50459Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/1024           872 ns          870 ns       803018 bytes_per_second=4.3864Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/2048          1553 ns         1551 ns       448165 bytes_per_second=4.91783Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/4096          2719 ns         2719 ns       257081 bytes_per_second=5.61113Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/8192          5032 ns         5033 ns       139480 bytes_per_second=6.06401Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/16384        10447 ns        10447 ns        67169 bytes_per_second=5.84251Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/32768        22749 ns        22749 ns        30716 bytes_per_second=5.36591Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/65536        46382 ns        46383 ns        15107 bytes_per_second=5.26353Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/131072       91122 ns        91123 ns         7643 bytes_per_second=5.35849Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/262144      189609 ns       189589 ns         3730 bytes_per_second=5.15094Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/524288      604574 ns       604526 ns         1153 bytes_per_second=3.23084Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/1048576    1419322 ns      1419261 ns          489 bytes_per_second=2.75231Gi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/1               63.6 ns         63.6 ns     11046791 bytes_per_second=59.9824Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/2               77.7 ns         77.7 ns      9013447 bytes_per_second=98.1427Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/4                106 ns          106 ns      6608662 bytes_per_second=144.104Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/8                171 ns          171 ns      4100338 bytes_per_second=177.949Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/16               333 ns          333 ns      2090106 bytes_per_second=183.038Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/32               665 ns          665 ns      1051827 bytes_per_second=183.55Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/64              1277 ns         1277 ns       547868 bytes_per_second=191.143Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/128             2531 ns         2531 ns       275172 bytes_per_second=192.953Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/256             5071 ns         5070 ns       138777 bytes_per_second=192.603Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/512             9998 ns         9998 ns        69940 bytes_per_second=195.344Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/1024           20060 ns        20060 ns        34925 bytes_per_second=194.725Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/2048           40194 ns        40195 ns        17413 bytes_per_second=194.365Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/4096           80358 ns        80359 ns         8721 bytes_per_second=194.439Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/8192          161371 ns       161364 ns         4334 bytes_per_second=193.662Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/16384         323119 ns       323121 ns         2166 bytes_per_second=193.426Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/32768         646629 ns       646587 ns         1075 bytes_per_second=193.323Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/65536        1292611 ns      1292597 ns          541 bytes_per_second=193.409Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/131072       2616640 ns      2616409 ns          267 bytes_per_second=191.102Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/262144       5414119 ns      5414122 ns          124 bytes_per_second=184.702Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/524288      10974467 ns     10974049 ns           59 bytes_per_second=182.248Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/1048576     22293729 ns     22293492 ns           30 bytes_per_second=179.425Mi/s
BM_format_to_n_string_begin<std::wstring>/1                             52.0 ns         52.0 ns     13513725 bytes_per_second=73.3442Mi/s
BM_format_to_n_string_begin<std::wstring>/2                             51.7 ns         51.7 ns     13424668 bytes_per_second=147.671Mi/s
BM_format_to_n_string_begin<std::wstring>/4                             51.9 ns         51.9 ns     13509922 bytes_per_second=294.176Mi/s
BM_format_to_n_string_begin<std::wstring>/8                             52.0 ns         52.0 ns     13465404 bytes_per_second=587.05Mi/s
BM_format_to_n_string_begin<std::wstring>/16                            52.5 ns         52.5 ns     13500423 bytes_per_second=1.13543Gi/s
BM_format_to_n_string_begin<std::wstring>/32                            56.4 ns         56.4 ns     12405180 bytes_per_second=2.11547Gi/s
BM_format_to_n_string_begin<std::wstring>/64                            67.6 ns         67.6 ns     10352129 bytes_per_second=3.52698Gi/s
BM_format_to_n_string_begin<std::wstring>/128                           93.9 ns         93.9 ns      7522376 bytes_per_second=5.07921Gi/s
BM_format_to_n_string_begin<std::wstring>/256                            133 ns          133 ns      5247826 bytes_per_second=7.16001Gi/s
BM_format_to_n_string_begin<std::wstring>/512                            231 ns          231 ns      3023825 bytes_per_second=8.24208Gi/s
BM_format_to_n_string_begin<std::wstring>/1024                           424 ns          424 ns      1649402 bytes_per_second=8.99487Gi/s
BM_format_to_n_string_begin<std::wstring>/2048                           830 ns          830 ns       848532 bytes_per_second=9.19095Gi/s
BM_format_to_n_string_begin<std::wstring>/4096                          1679 ns         1679 ns       416070 bytes_per_second=9.09029Gi/s
BM_format_to_n_string_begin<std::wstring>/8192                          3213 ns         3213 ns       218136 bytes_per_second=9.49747Gi/s
BM_format_to_n_string_begin<std::wstring>/16384                         6838 ns         6838 ns       102068 bytes_per_second=8.92627Gi/s
BM_format_to_n_string_begin<std::wstring>/32768                        14764 ns        14764 ns        47436 bytes_per_second=8.26818Gi/s
BM_format_to_n_string_begin<std::wstring>/65536                        29714 ns        29714 ns        23491 bytes_per_second=8.21633Gi/s
BM_format_to_n_string_begin<std::wstring>/131072                       59647 ns        59644 ns        11780 bytes_per_second=8.18662Gi/s
BM_format_to_n_string_begin<std::wstring>/262144                      119454 ns       119456 ns         5863 bytes_per_second=8.17507Gi/s
BM_format_to_n_string_begin<std::wstring>/524288                      286293 ns       286295 ns         2442 bytes_per_second=6.82206Gi/s
BM_format_to_n_string_begin<std::wstring>/1048576                     911579 ns       911595 ns          766 bytes_per_second=4.28507Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/1                     51.3 ns         51.3 ns     13635395 bytes_per_second=74.3867Mi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/2                     51.0 ns         51.0 ns     13736606 bytes_per_second=149.493Mi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/4                     51.3 ns         51.3 ns     13656750 bytes_per_second=297.64Mi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/8                     51.1 ns         51.1 ns     12622517 bytes_per_second=597.171Mi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/16                    51.5 ns         51.5 ns     13233009 bytes_per_second=1.15659Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/32                    55.9 ns         55.9 ns     12520247 bytes_per_second=2.13093Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/64                    68.3 ns         68.3 ns     10250969 bytes_per_second=3.49104Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/128                   94.1 ns         94.1 ns      7450735 bytes_per_second=5.06522Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/256                    135 ns          135 ns      5189630 bytes_per_second=7.07126Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/512                    236 ns          236 ns      2969116 bytes_per_second=8.08995Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/1024                   440 ns          440 ns      1591408 bytes_per_second=8.678Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/2048                   853 ns          853 ns       814193 bytes_per_second=8.94736Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/4096                  1634 ns         1634 ns       427050 bytes_per_second=9.33682Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/8192                  3209 ns         3209 ns       217702 bytes_per_second=9.50934Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/16384                 7058 ns         7058 ns        99366 bytes_per_second=8.64797Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/32768                15116 ns        15115 ns        46380 bytes_per_second=8.07629Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/65536                30376 ns        30377 ns        23028 bytes_per_second=8.03712Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/131072               60970 ns        60971 ns        11499 bytes_per_second=8.00836Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/262144              122493 ns       122497 ns         5720 bytes_per_second=7.97217Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/524288              290542 ns       290527 ns         2408 bytes_per_second=6.72271Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/1048576             910702 ns       910584 ns          768 bytes_per_second=4.28983Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/1                       47.6 ns         47.6 ns     14679442 bytes_per_second=80.1266Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/2                       47.9 ns         47.9 ns     14631935 bytes_per_second=159.286Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/4                       51.3 ns         51.3 ns     13651671 bytes_per_second=297.535Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/8                       62.1 ns         62.1 ns     11280271 bytes_per_second=491.363Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/16                      83.3 ns         83.3 ns      8403480 bytes_per_second=732.6Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/32                       132 ns          132 ns      5270514 bytes_per_second=923.772Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/64                       225 ns          225 ns      3115251 bytes_per_second=1.0616Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/128                      411 ns          411 ns      1701267 bytes_per_second=1.15947Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/256                      769 ns          769 ns       908949 bytes_per_second=1.24006Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/512                     1491 ns         1491 ns       468414 bytes_per_second=1.27953Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/1024                    2957 ns         2957 ns       236899 bytes_per_second=1.28999Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/2048                    5843 ns         5843 ns       120170 bytes_per_second=1.30569Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/4096                   11544 ns        11544 ns        60622 bytes_per_second=1.32184Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/8192                   23435 ns        23435 ns        29848 bytes_per_second=1.3022Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/16384                  47005 ns        47006 ns        14899 bytes_per_second=1.29844Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/32768                  93735 ns        93735 ns         7461 bytes_per_second=1.30229Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/65536                 187187 ns       187181 ns         3741 bytes_per_second=1.3043Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/131072                387031 ns       387029 ns         1799 bytes_per_second=1.26161Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/262144               1002722 ns      1002684 ns          695 bytes_per_second=997.323Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/524288               2354693 ns      2354599 ns          297 bytes_per_second=849.402Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/1048576              4864712 ns      4864581 ns          144 bytes_per_second=822.27Mi/s
BM_format_to_n_string_span<wchar_t>/1                                   50.6 ns         50.6 ns     13863954 bytes_per_second=75.4097Mi/s
BM_format_to_n_string_span<wchar_t>/2                                   50.7 ns         50.7 ns     13793656 bytes_per_second=150.425Mi/s
BM_format_to_n_string_span<wchar_t>/4                                   51.4 ns         51.4 ns     13645021 bytes_per_second=296.823Mi/s
BM_format_to_n_string_span<wchar_t>/8                                   51.2 ns         51.2 ns     13623522 bytes_per_second=595.898Mi/s
BM_format_to_n_string_span<wchar_t>/16                                  51.7 ns         51.7 ns     13610614 bytes_per_second=1.15303Gi/s
BM_format_to_n_string_span<wchar_t>/32                                  56.0 ns         56.0 ns     12451328 bytes_per_second=2.12771Gi/s
BM_format_to_n_string_span<wchar_t>/64                                  66.3 ns         66.3 ns     10524699 bytes_per_second=3.59561Gi/s
BM_format_to_n_string_span<wchar_t>/128                                 88.1 ns         88.1 ns      7938215 bytes_per_second=5.40999Gi/s
BM_format_to_n_string_span<wchar_t>/256                                  128 ns          128 ns      5456422 bytes_per_second=7.43012Gi/s
BM_format_to_n_string_span<wchar_t>/512                                  223 ns          223 ns      3142735 bytes_per_second=8.55933Gi/s
BM_format_to_n_string_span<wchar_t>/1024                                 428 ns          428 ns      1638744 bytes_per_second=8.92023Gi/s
BM_format_to_n_string_span<wchar_t>/2048                                 829 ns          829 ns       850093 bytes_per_second=9.20356Gi/s
BM_format_to_n_string_span<wchar_t>/4096                                1613 ns         1613 ns       432184 bytes_per_second=9.46179Gi/s
BM_format_to_n_string_span<wchar_t>/8192                                3151 ns         3151 ns       222389 bytes_per_second=9.68385Gi/s
BM_format_to_n_string_span<wchar_t>/16384                               6999 ns         7000 ns        99528 bytes_per_second=8.71988Gi/s
BM_format_to_n_string_span<wchar_t>/32768                              14819 ns        14818 ns        47207 bytes_per_second=8.23778Gi/s
BM_format_to_n_string_span<wchar_t>/65536                              29640 ns        29641 ns        23619 bytes_per_second=8.23659Gi/s
BM_format_to_n_string_span<wchar_t>/131072                             59443 ns        59440 ns        11783 bytes_per_second=8.21464Gi/s
BM_format_to_n_string_span<wchar_t>/262144                            118942 ns       118944 ns         5868 bytes_per_second=8.2103Gi/s
BM_format_to_n_string_span<wchar_t>/524288                            288199 ns       288173 ns         2431 bytes_per_second=6.77761Gi/s
BM_format_to_n_string_span<wchar_t>/1048576                           912877 ns       912855 ns          766 bytes_per_second=4.27916Gi/s
BM_format_to_n_string_pointer<wchar_t>/1                                50.7 ns         50.7 ns     13760222 bytes_per_second=75.2909Mi/s
BM_format_to_n_string_pointer<wchar_t>/2                                50.9 ns         50.9 ns     13753058 bytes_per_second=149.952Mi/s
BM_format_to_n_string_pointer<wchar_t>/4                                51.5 ns         51.5 ns     13580976 bytes_per_second=296.297Mi/s
BM_format_to_n_string_pointer<wchar_t>/8                                51.3 ns         51.3 ns     13646126 bytes_per_second=594.92Mi/s
BM_format_to_n_string_pointer<wchar_t>/16                               51.6 ns         51.6 ns     13583615 bytes_per_second=1.156Gi/s
BM_format_to_n_string_pointer<wchar_t>/32                               56.2 ns         56.2 ns     12474119 bytes_per_second=2.12153Gi/s
BM_format_to_n_string_pointer<wchar_t>/64                               66.4 ns         66.4 ns     10534648 bytes_per_second=3.58917Gi/s
BM_format_to_n_string_pointer<wchar_t>/128                              88.1 ns         88.1 ns      7950562 bytes_per_second=5.40973Gi/s
BM_format_to_n_string_pointer<wchar_t>/256                               129 ns          129 ns      5437624 bytes_per_second=7.39644Gi/s
BM_format_to_n_string_pointer<wchar_t>/512                               224 ns          224 ns      3120869 bytes_per_second=8.50226Gi/s
BM_format_to_n_string_pointer<wchar_t>/1024                              429 ns          429 ns      1631703 bytes_per_second=8.89102Gi/s
BM_format_to_n_string_pointer<wchar_t>/2048                              822 ns          822 ns       846043 bytes_per_second=9.28063Gi/s
BM_format_to_n_string_pointer<wchar_t>/4096                             1616 ns         1616 ns       431533 bytes_per_second=9.44167Gi/s
BM_format_to_n_string_pointer<wchar_t>/8192                             3151 ns         3151 ns       221539 bytes_per_second=9.68612Gi/s
BM_format_to_n_string_pointer<wchar_t>/16384                            6967 ns         6967 ns       100616 bytes_per_second=8.76067Gi/s
BM_format_to_n_string_pointer<wchar_t>/32768                           14734 ns        14734 ns        47573 bytes_per_second=8.285Gi/s
BM_format_to_n_string_pointer<wchar_t>/65536                           29502 ns        29502 ns        23727 bytes_per_second=8.27539Gi/s
BM_format_to_n_string_pointer<wchar_t>/131072                          59189 ns        59187 ns        11868 bytes_per_second=8.24977Gi/s
BM_format_to_n_string_pointer<wchar_t>/262144                         118521 ns       118524 ns         5903 bytes_per_second=8.2394Gi/s
BM_format_to_n_string_pointer<wchar_t>/524288                         288848 ns       288823 ns         2432 bytes_per_second=6.76236Gi/s
BM_format_to_n_string_pointer<wchar_t>/1048576                        912304 ns       912281 ns          765 bytes_per_second=4.28185Gi/s

After
----------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                  Time             CPU   Iterations UserCounters...
----------------------------------------------------------------------------------------------------------------------------
BM_format_to_n_string_back_inserter<std::string>/1                      58.3 ns         58.3 ns     11894752 bytes_per_second=16.3678Mi/s
BM_format_to_n_string_back_inserter<std::string>/2                      58.6 ns         58.6 ns     11930741 bytes_per_second=32.5454Mi/s
BM_format_to_n_string_back_inserter<std::string>/4                      58.7 ns         58.7 ns     11939708 bytes_per_second=65.0315Mi/s
BM_format_to_n_string_back_inserter<std::string>/8                      58.5 ns         58.5 ns     11961911 bytes_per_second=130.361Mi/s
BM_format_to_n_string_back_inserter<std::string>/16                     58.5 ns         58.5 ns     12024579 bytes_per_second=260.963Mi/s
BM_format_to_n_string_back_inserter<std::string>/32                     76.7 ns         76.7 ns      9105849 bytes_per_second=397.672Mi/s
BM_format_to_n_string_back_inserter<std::string>/64                     76.8 ns         76.8 ns      9132067 bytes_per_second=795.158Mi/s
BM_format_to_n_string_back_inserter<std::string>/128                    77.4 ns         77.4 ns      9036342 bytes_per_second=1.53966Gi/s
BM_format_to_n_string_back_inserter<std::string>/256                    90.0 ns         90.0 ns      7772798 bytes_per_second=2.64943Gi/s
BM_format_to_n_string_back_inserter<std::string>/512                     136 ns          136 ns      5146311 bytes_per_second=3.51286Gi/s
BM_format_to_n_string_back_inserter<std::string>/1024                    257 ns          257 ns      2721554 bytes_per_second=3.70954Gi/s
BM_format_to_n_string_back_inserter<std::string>/2048                    413 ns          413 ns      1694544 bytes_per_second=4.61394Gi/s
BM_format_to_n_string_back_inserter<std::string>/4096                    668 ns          668 ns      1048318 bytes_per_second=5.71409Gi/s
BM_format_to_n_string_back_inserter<std::string>/8192                   1116 ns         1116 ns       625793 bytes_per_second=6.83872Gi/s
BM_format_to_n_string_back_inserter<std::string>/16384                  2357 ns         2357 ns       297204 bytes_per_second=6.47413Gi/s
BM_format_to_n_string_back_inserter<std::string>/32768                  4467 ns         4467 ns       156599 bytes_per_second=6.83149Gi/s
BM_format_to_n_string_back_inserter<std::string>/65536                  9366 ns         9366 ns        74666 bytes_per_second=6.51672Gi/s
BM_format_to_n_string_back_inserter<std::string>/131072                19923 ns        19923 ns        35254 bytes_per_second=6.12721Gi/s
BM_format_to_n_string_back_inserter<std::string>/262144                42798 ns        42798 ns        16329 bytes_per_second=5.70446Gi/s
BM_format_to_n_string_back_inserter<std::string>/524288                87261 ns        87257 ns         7998 bytes_per_second=5.59592Gi/s
BM_format_to_n_string_back_inserter<std::string>/1048576              181427 ns       181426 ns         3849 bytes_per_second=5.3827Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/1                72.0 ns         72.0 ns      9698638 bytes_per_second=13.2527Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/2                73.3 ns         73.3 ns      9565537 bytes_per_second=26.0322Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/4                73.9 ns         73.9 ns      9483910 bytes_per_second=51.6234Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/8                75.7 ns         75.7 ns      9205102 bytes_per_second=100.761Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/16               79.2 ns         79.2 ns      8841952 bytes_per_second=192.631Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/32               90.1 ns         90.1 ns      7809568 bytes_per_second=338.856Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/64               89.9 ns         89.9 ns      7783634 bytes_per_second=679.293Mi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/128              91.2 ns         91.2 ns      7677201 bytes_per_second=1.30693Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/256               108 ns          108 ns      6493267 bytes_per_second=2.21248Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/512               165 ns          165 ns      4241778 bytes_per_second=2.88381Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/1024              250 ns          250 ns      2797074 bytes_per_second=3.80765Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/2048              404 ns          404 ns      1731642 bytes_per_second=4.72376Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/4096              629 ns          629 ns      1115298 bytes_per_second=6.0654Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/8192             1053 ns         1053 ns       661168 bytes_per_second=7.24586Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/16384            2062 ns         2062 ns       338457 bytes_per_second=7.40132Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/32768            3805 ns         3805 ns       183818 bytes_per_second=8.02137Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/65536            7558 ns         7558 ns        92613 bytes_per_second=8.07602Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/131072          16973 ns        16973 ns        41293 bytes_per_second=7.19215Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/262144          37110 ns        37111 ns        18845 bytes_per_second=6.57874Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/524288          73110 ns        73108 ns         9592 bytes_per_second=6.67894Gi/s
BM_format_to_n_string_back_inserter<std::vector<char>>/1048576        149194 ns       149197 ns         4635 bytes_per_second=6.54548Gi/s
BM_format_to_n_string_back_inserter<std::list<char>>/1                  65.8 ns         65.8 ns     10641306 bytes_per_second=14.493Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/2                  79.4 ns         79.4 ns      8823359 bytes_per_second=24.0097Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/4                   107 ns          107 ns      6538116 bytes_per_second=35.6288Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/8                   180 ns          180 ns      3883077 bytes_per_second=42.4124Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/16                  334 ns          334 ns      2097317 bytes_per_second=45.6725Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/32                  662 ns          662 ns      1043514 bytes_per_second=46.1005Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/64                 1267 ns         1267 ns       553510 bytes_per_second=48.1803Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/128                2480 ns         2480 ns       283417 bytes_per_second=49.2188Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/256                4923 ns         4924 ns       142727 bytes_per_second=49.5863Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/512                9812 ns         9811 ns        71351 bytes_per_second=49.7668Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/1024              19590 ns        19591 ns        35686 bytes_per_second=49.8475Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/2048              39161 ns        39159 ns        17860 bytes_per_second=49.8767Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/4096              78316 ns        78315 ns         8920 bytes_per_second=49.8788Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/8192             156709 ns       156699 ns         4462 bytes_per_second=49.8566Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/16384            312842 ns       312842 ns         2239 bytes_per_second=49.9454Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/32768            629744 ns       629751 ns         1106 bytes_per_second=49.6228Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/65536           1257851 ns      1257872 ns          553 bytes_per_second=49.6871Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/131072          2531022 ns      2530835 ns          275 bytes_per_second=49.3908Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/262144          5182786 ns      5182661 ns          124 bytes_per_second=48.2378Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/524288         10566644 ns     10566709 ns           62 bytes_per_second=47.3184Mi/s
BM_format_to_n_string_back_inserter<std::list<char>>/1048576        21319849 ns     21318080 ns           31 bytes_per_second=46.9085Mi/s
BM_format_to_n_string_begin<std::string>/1                              48.7 ns         48.7 ns     14301196 bytes_per_second=19.5919Mi/s
BM_format_to_n_string_begin<std::string>/2                              48.5 ns         48.5 ns     14418491 bytes_per_second=39.3467Mi/s
BM_format_to_n_string_begin<std::string>/4                              48.5 ns         48.5 ns     14435510 bytes_per_second=78.6366Mi/s
BM_format_to_n_string_begin<std::string>/8                              48.5 ns         48.5 ns     14434663 bytes_per_second=157.36Mi/s
BM_format_to_n_string_begin<std::string>/16                             48.5 ns         48.5 ns     14447251 bytes_per_second=314.86Mi/s
BM_format_to_n_string_begin<std::string>/32                             47.9 ns         47.9 ns     14603136 bytes_per_second=636.898Mi/s
BM_format_to_n_string_begin<std::string>/64                             48.3 ns         48.3 ns     14492719 bytes_per_second=1.23435Gi/s
BM_format_to_n_string_begin<std::string>/128                            48.2 ns         48.2 ns     14539008 bytes_per_second=2.47366Gi/s
BM_format_to_n_string_begin<std::string>/256                            50.0 ns         50.0 ns     14021955 bytes_per_second=4.7704Gi/s
BM_format_to_n_string_begin<std::string>/512                            52.6 ns         52.6 ns     13310671 bytes_per_second=9.06757Gi/s
BM_format_to_n_string_begin<std::string>/1024                           56.2 ns         56.2 ns     12459389 bytes_per_second=16.9652Gi/s
BM_format_to_n_string_begin<std::string>/2048                           67.2 ns         67.2 ns     10432897 bytes_per_second=28.3795Gi/s
BM_format_to_n_string_begin<std::string>/4096                            101 ns          101 ns      6911640 bytes_per_second=37.6209Gi/s
BM_format_to_n_string_begin<std::string>/8192                            150 ns          150 ns      4664235 bytes_per_second=50.8575Gi/s
BM_format_to_n_string_begin<std::string>/16384                           308 ns          308 ns      2225795 bytes_per_second=49.5371Gi/s
BM_format_to_n_string_begin<std::string>/32768                          1339 ns         1339 ns       521726 bytes_per_second=22.7997Gi/s
BM_format_to_n_string_begin<std::string>/65536                          3293 ns         3293 ns       212565 bytes_per_second=18.5337Gi/s
BM_format_to_n_string_begin<std::string>/131072                         6596 ns         6596 ns       106272 bytes_per_second=18.5063Gi/s
BM_format_to_n_string_begin<std::string>/262144                        14064 ns        14065 ns        49774 bytes_per_second=17.3584Gi/s
BM_format_to_n_string_begin<std::string>/524288                        29428 ns        29428 ns        23775 bytes_per_second=16.5921Gi/s
BM_format_to_n_string_begin<std::string>/1048576                       58666 ns        58666 ns        11893 bytes_per_second=16.6463Gi/s
BM_format_to_n_string_begin<std::vector<char>>/1                        48.0 ns         48.0 ns     14564573 bytes_per_second=19.8636Mi/s
BM_format_to_n_string_begin<std::vector<char>>/2                        48.4 ns         48.4 ns     14445531 bytes_per_second=39.372Mi/s
BM_format_to_n_string_begin<std::vector<char>>/4                        48.1 ns         48.1 ns     14579370 bytes_per_second=79.3003Mi/s
BM_format_to_n_string_begin<std::vector<char>>/8                        48.3 ns         48.3 ns     14510269 bytes_per_second=158.113Mi/s
BM_format_to_n_string_begin<std::vector<char>>/16                       48.4 ns         48.4 ns     14452809 bytes_per_second=314.976Mi/s
BM_format_to_n_string_begin<std::vector<char>>/32                       48.1 ns         48.1 ns     14578127 bytes_per_second=634.858Mi/s
BM_format_to_n_string_begin<std::vector<char>>/64                       48.4 ns         48.4 ns     14454174 bytes_per_second=1.2304Gi/s
BM_format_to_n_string_begin<std::vector<char>>/128                      48.4 ns         48.4 ns     14454299 bytes_per_second=2.46269Gi/s
BM_format_to_n_string_begin<std::vector<char>>/256                      49.1 ns         49.1 ns     14271076 bytes_per_second=4.85671Gi/s
BM_format_to_n_string_begin<std::vector<char>>/512                      52.6 ns         52.6 ns     13331231 bytes_per_second=9.06458Gi/s
BM_format_to_n_string_begin<std::vector<char>>/1024                     55.6 ns         55.6 ns     12610443 bytes_per_second=17.1486Gi/s
BM_format_to_n_string_begin<std::vector<char>>/2048                     67.0 ns         67.0 ns     10439580 bytes_per_second=28.476Gi/s
BM_format_to_n_string_begin<std::vector<char>>/4096                     97.6 ns         97.6 ns      7184733 bytes_per_second=39.1032Gi/s
BM_format_to_n_string_begin<std::vector<char>>/8192                      151 ns          151 ns      4633388 bytes_per_second=50.5215Gi/s
BM_format_to_n_string_begin<std::vector<char>>/16384                     315 ns          315 ns      2185686 bytes_per_second=48.4704Gi/s
BM_format_to_n_string_begin<std::vector<char>>/32768                    1345 ns         1345 ns       519043 bytes_per_second=22.6814Gi/s
BM_format_to_n_string_begin<std::vector<char>>/65536                    3295 ns         3295 ns       212381 bytes_per_second=18.5221Gi/s
BM_format_to_n_string_begin<std::vector<char>>/131072                   6591 ns         6590 ns       105414 bytes_per_second=18.5223Gi/s
BM_format_to_n_string_begin<std::vector<char>>/262144                  14084 ns        14084 ns        49765 bytes_per_second=17.3344Gi/s
BM_format_to_n_string_begin<std::vector<char>>/524288                  30239 ns        30238 ns        23144 bytes_per_second=16.1477Gi/s
BM_format_to_n_string_begin<std::vector<char>>/1048576                 60270 ns        60271 ns        11619 bytes_per_second=16.2028Gi/s
BM_format_to_n_string_begin<std::list<char>>/1                          50.9 ns         50.9 ns     13783105 bytes_per_second=18.7485Mi/s
BM_format_to_n_string_begin<std::list<char>>/2                          51.1 ns         51.1 ns     13641522 bytes_per_second=37.3058Mi/s
BM_format_to_n_string_begin<std::list<char>>/4                          52.9 ns         52.9 ns     13255629 bytes_per_second=72.1149Mi/s
BM_format_to_n_string_begin<std::list<char>>/8                          61.5 ns         61.5 ns     11386841 bytes_per_second=123.981Mi/s
BM_format_to_n_string_begin<std::list<char>>/16                         82.8 ns         82.9 ns      8448851 bytes_per_second=184.17Mi/s
BM_format_to_n_string_begin<std::list<char>>/32                          126 ns          126 ns      5558591 bytes_per_second=242.13Mi/s
BM_format_to_n_string_begin<std::list<char>>/64                          212 ns          212 ns      3298201 bytes_per_second=287.444Mi/s
BM_format_to_n_string_begin<std::list<char>>/128                         385 ns          385 ns      1820237 bytes_per_second=317.326Mi/s
BM_format_to_n_string_begin<std::list<char>>/256                         746 ns          746 ns       934390 bytes_per_second=327.096Mi/s
BM_format_to_n_string_begin<std::list<char>>/512                        1439 ns         1439 ns       487631 bytes_per_second=339.402Mi/s
BM_format_to_n_string_begin<std::list<char>>/1024                       2883 ns         2882 ns       242058 bytes_per_second=338.795Mi/s
BM_format_to_n_string_begin<std::list<char>>/2048                       5735 ns         5735 ns       121554 bytes_per_second=340.565Mi/s
BM_format_to_n_string_begin<std::list<char>>/4096                      11360 ns        11360 ns        61656 bytes_per_second=343.875Mi/s
BM_format_to_n_string_begin<std::list<char>>/8192                      23030 ns        23030 ns        30381 bytes_per_second=339.224Mi/s
BM_format_to_n_string_begin<std::list<char>>/16384                     45959 ns        45958 ns        15229 bytes_per_second=339.985Mi/s
BM_format_to_n_string_begin<std::list<char>>/32768                     91864 ns        91864 ns         7639 bytes_per_second=340.178Mi/s
BM_format_to_n_string_begin<std::list<char>>/65536                    183305 ns       183298 ns         3821 bytes_per_second=340.976Mi/s
BM_format_to_n_string_begin<std::list<char>>/131072                   375274 ns       375279 ns         1868 bytes_per_second=333.086Mi/s
BM_format_to_n_string_begin<std::list<char>>/262144                   863452 ns       863366 ns          811 bytes_per_second=289.564Mi/s
BM_format_to_n_string_begin<std::list<char>>/524288                  2044442 ns      2044356 ns          342 bytes_per_second=244.576Mi/s
BM_format_to_n_string_begin<std::list<char>>/1048576                 4349820 ns      4349352 ns          161 bytes_per_second=229.919Mi/s
BM_format_to_n_string_span<char>/1                                      48.1 ns         48.1 ns     14575723 bytes_per_second=19.8447Mi/s
BM_format_to_n_string_span<char>/2                                      48.5 ns         48.5 ns     14428140 bytes_per_second=39.3396Mi/s
BM_format_to_n_string_span<char>/4                                      48.0 ns         48.0 ns     14559308 bytes_per_second=79.4032Mi/s
BM_format_to_n_string_span<char>/8                                      48.3 ns         48.3 ns     14497844 bytes_per_second=157.973Mi/s
BM_format_to_n_string_span<char>/16                                     48.5 ns         48.5 ns     14423850 bytes_per_second=314.497Mi/s
BM_format_to_n_string_span<char>/32                                     48.5 ns         48.5 ns     14436875 bytes_per_second=629.449Mi/s
BM_format_to_n_string_span<char>/64                                     48.5 ns         48.5 ns     14442917 bytes_per_second=1.22977Gi/s
BM_format_to_n_string_span<char>/128                                    48.7 ns         48.7 ns     14380664 bytes_per_second=2.44862Gi/s
BM_format_to_n_string_span<char>/256                                    49.1 ns         49.1 ns     14257124 bytes_per_second=4.85759Gi/s
BM_format_to_n_string_span<char>/512                                    52.7 ns         52.7 ns     13313539 bytes_per_second=9.0547Gi/s
BM_format_to_n_string_span<char>/1024                                   55.7 ns         55.7 ns     12580042 bytes_per_second=17.1347Gi/s
BM_format_to_n_string_span<char>/2048                                   66.8 ns         66.8 ns     10484087 bytes_per_second=28.535Gi/s
BM_format_to_n_string_span<char>/4096                                   96.9 ns         96.9 ns      7223481 bytes_per_second=39.3622Gi/s
BM_format_to_n_string_span<char>/8192                                    150 ns          150 ns      4656378 bytes_per_second=50.8046Gi/s
BM_format_to_n_string_span<char>/16384                                  1062 ns         1062 ns       650986 bytes_per_second=14.3719Gi/s
BM_format_to_n_string_span<char>/32768                                  1291 ns         1291 ns       542639 bytes_per_second=23.6416Gi/s
BM_format_to_n_string_span<char>/65536                                  3306 ns         3306 ns       211870 bytes_per_second=18.4622Gi/s
BM_format_to_n_string_span<char>/131072                                 6534 ns         6534 ns       106946 bytes_per_second=18.6829Gi/s
BM_format_to_n_string_span<char>/262144                                14207 ns        14207 ns        49169 bytes_per_second=17.1847Gi/s
BM_format_to_n_string_span<char>/524288                                30252 ns        30253 ns        23145 bytes_per_second=16.1401Gi/s
BM_format_to_n_string_span<char>/1048576                               60247 ns        60248 ns        11623 bytes_per_second=16.209Gi/s
BM_format_to_n_string_pointer<char>/1                                   48.0 ns         48.0 ns     14576878 bytes_per_second=19.8656Mi/s
BM_format_to_n_string_pointer<char>/2                                   48.5 ns         48.5 ns     14441949 bytes_per_second=39.3545Mi/s
BM_format_to_n_string_pointer<char>/4                                   48.0 ns         48.0 ns     14580015 bytes_per_second=79.4008Mi/s
BM_format_to_n_string_pointer<char>/8                                   48.3 ns         48.3 ns     14487286 bytes_per_second=158.006Mi/s
BM_format_to_n_string_pointer<char>/16                                  48.5 ns         48.5 ns     14451730 bytes_per_second=314.879Mi/s
BM_format_to_n_string_pointer<char>/32                                  48.5 ns         48.5 ns     14437028 bytes_per_second=629.551Mi/s
BM_format_to_n_string_pointer<char>/64                                  48.5 ns         48.5 ns     14441369 bytes_per_second=1.22944Gi/s
BM_format_to_n_string_pointer<char>/128                                 48.7 ns         48.7 ns     14373928 bytes_per_second=2.44883Gi/s
BM_format_to_n_string_pointer<char>/256                                 49.0 ns         49.0 ns     14252347 bytes_per_second=4.86338Gi/s
BM_format_to_n_string_pointer<char>/512                                 52.6 ns         52.6 ns     13298898 bytes_per_second=9.05959Gi/s
BM_format_to_n_string_pointer<char>/1024                                55.6 ns         55.6 ns     12528589 bytes_per_second=17.1425Gi/s
BM_format_to_n_string_pointer<char>/2048                                66.8 ns         66.8 ns     10487992 bytes_per_second=28.55Gi/s
BM_format_to_n_string_pointer<char>/4096                                96.9 ns         96.9 ns      7208486 bytes_per_second=39.3486Gi/s
BM_format_to_n_string_pointer<char>/8192                                 150 ns          150 ns      4654285 bytes_per_second=50.7769Gi/s
BM_format_to_n_string_pointer<char>/16384                               1053 ns         1053 ns       669564 bytes_per_second=14.4856Gi/s
BM_format_to_n_string_pointer<char>/32768                               1293 ns         1292 ns       542558 bytes_per_second=23.6125Gi/s
BM_format_to_n_string_pointer<char>/65536                               3305 ns         3305 ns       211779 bytes_per_second=18.4676Gi/s
BM_format_to_n_string_pointer<char>/131072                              6536 ns         6536 ns       107263 bytes_per_second=18.6761Gi/s
BM_format_to_n_string_pointer<char>/262144                             14230 ns        14230 ns        49233 bytes_per_second=17.1571Gi/s
BM_format_to_n_string_pointer<char>/524288                             30316 ns        30315 ns        23124 bytes_per_second=16.1067Gi/s
BM_format_to_n_string_pointer<char>/1048576                            60274 ns        60275 ns        11623 bytes_per_second=16.2018Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/1                     56.5 ns         56.5 ns     12374919 bytes_per_second=67.4938Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/2                     56.6 ns         56.6 ns     12382768 bytes_per_second=134.788Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/4                     57.1 ns         57.1 ns     12268082 bytes_per_second=267.346Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/8                     78.1 ns         78.1 ns      9281395 bytes_per_second=390.853Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/16                    75.3 ns         75.3 ns      9287993 bytes_per_second=810.198Mi/s
BM_format_to_n_string_back_inserter<std::wstring>/32                    76.2 ns         76.2 ns      9175184 bytes_per_second=1.56412Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/64                    78.6 ns         78.6 ns      8892922 bytes_per_second=3.03497Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/128                   87.1 ns         87.1 ns      8032211 bytes_per_second=5.47335Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/256                    111 ns          111 ns      6296346 bytes_per_second=8.5628Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/512                    221 ns          221 ns      3159195 bytes_per_second=8.61139Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/1024                   387 ns          387 ns      1811122 bytes_per_second=9.86723Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/2048                   741 ns          741 ns       943277 bytes_per_second=10.2959Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/4096                  1676 ns         1676 ns       418182 bytes_per_second=9.10665Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/8192                  3378 ns         3378 ns       207292 bytes_per_second=9.03334Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/16384                 6863 ns         6863 ns       102029 bytes_per_second=8.8939Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/32768                16705 ns        16705 ns        41940 bytes_per_second=7.30758Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/65536                35705 ns        35706 ns        19611 bytes_per_second=6.83757Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/131072               71733 ns        71729 ns         9771 bytes_per_second=6.80728Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/262144              148730 ns       148724 ns         4651 bytes_per_second=6.56626Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/524288              354054 ns       354006 ns         1742 bytes_per_second=5.5172Gi/s
BM_format_to_n_string_back_inserter<std::wstring>/1048576            1014026 ns      1014009 ns          672 bytes_per_second=3.85228Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/1             70.5 ns         70.5 ns      9932986 bytes_per_second=54.0829Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/2             71.0 ns         71.0 ns      9840121 bytes_per_second=107.46Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/4             71.6 ns         71.6 ns      9785968 bytes_per_second=213.029Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/8             73.8 ns         73.8 ns      9510736 bytes_per_second=413.797Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/16            78.6 ns         78.6 ns      8909512 bytes_per_second=776.209Mi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/32            89.2 ns         89.2 ns      7859868 bytes_per_second=1.33643Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/64             115 ns          115 ns      6080670 bytes_per_second=2.07512Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/128            146 ns          146 ns      4806628 bytes_per_second=3.27466Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/256            219 ns          219 ns      3200162 bytes_per_second=4.355Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/512            431 ns          431 ns      1620499 bytes_per_second=4.42595Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/1024           693 ns          693 ns      1011406 bytes_per_second=5.50558Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/2048          1140 ns         1140 ns       618031 bytes_per_second=6.6936Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/4096          2086 ns         2086 ns       337098 bytes_per_second=7.3164Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/8192          3816 ns         3816 ns       183385 bytes_per_second=7.99784Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/16384         7217 ns         7216 ns        97221 bytes_per_second=8.45788Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/32768        16550 ns        16550 ns        42312 bytes_per_second=7.37584Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/65536        35172 ns        35171 ns        19869 bytes_per_second=6.94156Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/131072       69842 ns        69843 ns         9999 bytes_per_second=6.99108Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/262144      140424 ns       140428 ns         4971 bytes_per_second=6.95418Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/524288      373523 ns       373526 ns         1870 bytes_per_second=5.22889Gi/s
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/1048576    1032502 ns      1032484 ns          664 bytes_per_second=3.78335Gi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/1               63.9 ns         63.9 ns     10897763 bytes_per_second=59.658Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/2               77.5 ns         77.5 ns      9050304 bytes_per_second=98.499Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/4                105 ns          105 ns      6665612 bytes_per_second=145.407Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/8                175 ns          175 ns      3995346 bytes_per_second=174.269Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/16               336 ns          336 ns      2083018 bytes_per_second=181.675Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/32               648 ns          648 ns      1073829 bytes_per_second=188.463Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/64              1256 ns         1256 ns       557369 bytes_per_second=194.38Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/128             2470 ns         2470 ns       281736 bytes_per_second=197.692Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/256             4960 ns         4960 ns       141126 bytes_per_second=196.879Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/512             9918 ns         9917 ns        70729 bytes_per_second=196.94Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/1024           19926 ns        19927 ns        35132 bytes_per_second=196.03Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/2048           39571 ns        39572 ns        17678 bytes_per_second=197.427Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/4096           79387 ns        79387 ns         8828 bytes_per_second=196.821Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/8192          159299 ns       159293 ns         4397 bytes_per_second=196.179Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/16384         318671 ns       318679 ns         2196 bytes_per_second=196.122Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/32768         637811 ns       637800 ns         1095 bytes_per_second=195.986Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/65536        1276011 ns      1276009 ns          547 bytes_per_second=195.923Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/131072       2573320 ns      2573148 ns          271 bytes_per_second=194.315Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/262144       5304933 ns      5304890 ns          127 bytes_per_second=188.505Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/524288      10910899 ns     10910648 ns           60 bytes_per_second=183.307Mi/s
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/1048576     22137508 ns     22133878 ns           30 bytes_per_second=180.718Mi/s
BM_format_to_n_string_begin<std::wstring>/1                             46.4 ns         46.4 ns     15086405 bytes_per_second=82.2799Mi/s
BM_format_to_n_string_begin<std::wstring>/2                             46.4 ns         46.4 ns     15082785 bytes_per_second=164.368Mi/s
BM_format_to_n_string_begin<std::wstring>/4                             46.4 ns         46.4 ns     15085921 bytes_per_second=328.893Mi/s
BM_format_to_n_string_begin<std::wstring>/8                             46.4 ns         46.4 ns     15086365 bytes_per_second=657.84Mi/s
BM_format_to_n_string_begin<std::wstring>/16                            46.4 ns         46.4 ns     15091831 bytes_per_second=1.2839Gi/s
BM_format_to_n_string_begin<std::wstring>/32                            46.9 ns         47.0 ns     14897604 bytes_per_second=2.53902Gi/s
BM_format_to_n_string_begin<std::wstring>/64                            47.6 ns         47.6 ns     14700683 bytes_per_second=5.01129Gi/s
BM_format_to_n_string_begin<std::wstring>/128                           51.4 ns         51.4 ns     13603374 bytes_per_second=9.27462Gi/s
BM_format_to_n_string_begin<std::wstring>/256                           54.4 ns         54.4 ns     12892659 bytes_per_second=17.5252Gi/s
BM_format_to_n_string_begin<std::wstring>/512                           65.8 ns         65.8 ns     10642719 bytes_per_second=28.9962Gi/s
BM_format_to_n_string_begin<std::wstring>/1024                          83.9 ns         83.9 ns      8354650 bytes_per_second=45.4443Gi/s
BM_format_to_n_string_begin<std::wstring>/2048                           149 ns          149 ns      4695095 bytes_per_second=51.2773Gi/s
BM_format_to_n_string_begin<std::wstring>/4096                          1016 ns         1016 ns       688090 bytes_per_second=15.0179Gi/s
BM_format_to_n_string_begin<std::wstring>/8192                          1282 ns         1282 ns       546482 bytes_per_second=23.8031Gi/s
BM_format_to_n_string_begin<std::wstring>/16384                         3294 ns         3294 ns       212271 bytes_per_second=18.5264Gi/s
BM_format_to_n_string_begin<std::wstring>/32768                         7020 ns         7019 ns       100077 bytes_per_second=17.3905Gi/s
BM_format_to_n_string_begin<std::wstring>/65536                        16497 ns        16497 ns        42405 bytes_per_second=14.7994Gi/s
BM_format_to_n_string_begin<std::wstring>/131072                       30022 ns        30020 ns        23317 bytes_per_second=16.265Gi/s
BM_format_to_n_string_begin<std::wstring>/262144                       61552 ns        61554 ns        11389 bytes_per_second=15.8653Gi/s
BM_format_to_n_string_begin<std::wstring>/524288                      117085 ns       117081 ns         5982 bytes_per_second=16.6818Gi/s
BM_format_to_n_string_begin<std::wstring>/1048576                     251242 ns       251244 ns         2782 bytes_per_second=15.5476Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/1                     46.4 ns         46.4 ns     15079972 bytes_per_second=82.1974Mi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/2                     46.4 ns         46.4 ns     15098670 bytes_per_second=164.512Mi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/4                     46.4 ns         46.4 ns     15080660 bytes_per_second=328.688Mi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/8                     46.4 ns         46.4 ns     15073845 bytes_per_second=657.677Mi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/16                    46.4 ns         46.4 ns     15074521 bytes_per_second=1.28389Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/32                    47.0 ns         47.0 ns     14901436 bytes_per_second=2.53629Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/64                    47.9 ns         47.9 ns     14615472 bytes_per_second=4.97819Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/128                   50.6 ns         50.6 ns     13864322 bytes_per_second=9.42157Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/256                   54.4 ns         54.4 ns     12888476 bytes_per_second=17.5209Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/512                   65.3 ns         65.3 ns     10726935 bytes_per_second=29.2085Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/1024                  83.9 ns         83.9 ns      8349081 bytes_per_second=45.4574Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/2048                   150 ns          150 ns      4655413 bytes_per_second=50.7547Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/4096                  1021 ns         1021 ns       685753 bytes_per_second=14.9414Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/8192                  1287 ns         1287 ns       543710 bytes_per_second=23.7066Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/16384                 3335 ns         3334 ns       210028 bytes_per_second=18.3045Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/32768                 6890 ns         6890 ns       101460 bytes_per_second=17.7173Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/65536                16341 ns        16341 ns        42798 bytes_per_second=14.9404Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/131072               29750 ns        29751 ns        23540 bytes_per_second=16.4123Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/262144               61096 ns        61097 ns        11463 bytes_per_second=15.9837Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/524288              117312 ns       117302 ns         5965 bytes_per_second=16.6504Gi/s
BM_format_to_n_string_begin<std::vector<wchar_t>>/1048576             251297 ns       251295 ns         2785 bytes_per_second=15.5445Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/1                       48.5 ns         48.5 ns     14436813 bytes_per_second=78.6711Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/2                       48.8 ns         48.8 ns     14347138 bytes_per_second=156.297Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/4                       51.2 ns         51.2 ns     13677995 bytes_per_second=298.303Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/8                       61.1 ns         61.1 ns     11433519 bytes_per_second=499.645Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/16                      82.3 ns         82.3 ns      8485196 bytes_per_second=741.274Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/32                       126 ns          126 ns      5560363 bytes_per_second=970.741Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/64                       214 ns          214 ns      3277152 bytes_per_second=1.11599Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/128                      389 ns          389 ns      1799906 bytes_per_second=1.22644Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/256                      883 ns          883 ns       794071 bytes_per_second=1.08047Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/512                     1659 ns         1659 ns       421373 bytes_per_second=1.14954Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/1024                    3332 ns         3332 ns       209943 bytes_per_second=1.14496Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/2048                    6630 ns         6630 ns       105117 bytes_per_second=1.15073Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/4096                   13264 ns        13264 ns        52860 bytes_per_second=1.15037Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/8192                   26666 ns        26664 ns        26214 bytes_per_second=1.14452Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/16384                  53614 ns        53614 ns        13104 bytes_per_second=1.13842Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/32768                 106831 ns       106827 ns         6567 bytes_per_second=1.14269Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/65536                 212847 ns       212851 ns         3290 bytes_per_second=1.147Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/131072                455136 ns       455091 ns         1538 bytes_per_second=1.07293Gi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/262144               1209205 ns      1209145 ns          578 bytes_per_second=827.031Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/524288               2671975 ns      2671575 ns          262 bytes_per_second=748.622Mi/s
BM_format_to_n_string_begin<std::list<wchar_t>>/1048576              5332835 ns      5332611 ns          129 bytes_per_second=750.102Mi/s
BM_format_to_n_string_span<wchar_t>/1                                   46.4 ns         46.4 ns     15095962 bytes_per_second=82.2956Mi/s
BM_format_to_n_string_span<wchar_t>/2                                   46.3 ns         46.3 ns     15106530 bytes_per_second=164.613Mi/s
BM_format_to_n_string_span<wchar_t>/4                                   46.3 ns         46.3 ns     15093874 bytes_per_second=329.273Mi/s
BM_format_to_n_string_span<wchar_t>/8                                   46.4 ns         46.4 ns     15096926 bytes_per_second=657.863Mi/s
BM_format_to_n_string_span<wchar_t>/16                                  46.4 ns         46.4 ns     15075614 bytes_per_second=1.28441Gi/s
BM_format_to_n_string_span<wchar_t>/32                                  47.0 ns         47.0 ns     14912706 bytes_per_second=2.5378Gi/s
BM_format_to_n_string_span<wchar_t>/64                                  47.6 ns         47.6 ns     14717682 bytes_per_second=5.01011Gi/s
BM_format_to_n_string_span<wchar_t>/128                                 52.3 ns         52.3 ns     13348367 bytes_per_second=9.11569Gi/s
BM_format_to_n_string_span<wchar_t>/256                                 54.4 ns         54.4 ns     12877759 bytes_per_second=17.5166Gi/s
BM_format_to_n_string_span<wchar_t>/512                                 64.9 ns         64.9 ns     10757132 bytes_per_second=29.4049Gi/s
BM_format_to_n_string_span<wchar_t>/1024                                83.8 ns         83.8 ns      8299278 bytes_per_second=45.5047Gi/s
BM_format_to_n_string_span<wchar_t>/2048                                 151 ns          151 ns      4655155 bytes_per_second=50.5604Gi/s
BM_format_to_n_string_span<wchar_t>/4096                                1009 ns         1009 ns       696007 bytes_per_second=15.1264Gi/s
BM_format_to_n_string_span<wchar_t>/8192                                1287 ns         1287 ns       545280 bytes_per_second=23.7166Gi/s
BM_format_to_n_string_span<wchar_t>/16384                               3321 ns         3321 ns       210046 bytes_per_second=18.3808Gi/s
BM_format_to_n_string_span<wchar_t>/32768                               6790 ns         6790 ns       103203 bytes_per_second=17.9774Gi/s
BM_format_to_n_string_span<wchar_t>/65536                              14637 ns        14636 ns        47659 bytes_per_second=16.6807Gi/s
BM_format_to_n_string_span<wchar_t>/131072                             32795 ns        32796 ns        21327 bytes_per_second=14.8886Gi/s
BM_format_to_n_string_span<wchar_t>/262144                             61047 ns        61049 ns        11450 bytes_per_second=15.9965Gi/s
BM_format_to_n_string_span<wchar_t>/524288                            117288 ns       117283 ns         5977 bytes_per_second=16.653Gi/s
BM_format_to_n_string_span<wchar_t>/1048576                           236929 ns       236924 ns         2954 bytes_per_second=16.4873Gi/s
BM_format_to_n_string_pointer<wchar_t>/1                                46.4 ns         46.4 ns     15082519 bytes_per_second=82.1861Mi/s
BM_format_to_n_string_pointer<wchar_t>/2                                46.4 ns         46.4 ns     15089827 bytes_per_second=164.445Mi/s
BM_format_to_n_string_pointer<wchar_t>/4                                46.4 ns         46.4 ns     15077981 bytes_per_second=328.775Mi/s
BM_format_to_n_string_pointer<wchar_t>/8                                46.4 ns         46.4 ns     15084312 bytes_per_second=657.37Mi/s
BM_format_to_n_string_pointer<wchar_t>/16                               46.5 ns         46.5 ns     15080350 bytes_per_second=1.2831Gi/s
BM_format_to_n_string_pointer<wchar_t>/32                               47.0 ns         47.0 ns     14894435 bytes_per_second=2.53671Gi/s
BM_format_to_n_string_pointer<wchar_t>/64                               47.6 ns         47.6 ns     14722794 bytes_per_second=5.00755Gi/s
BM_format_to_n_string_pointer<wchar_t>/128                              52.5 ns         52.5 ns     13411618 bytes_per_second=9.08825Gi/s
BM_format_to_n_string_pointer<wchar_t>/256                              54.5 ns         54.5 ns     12827403 bytes_per_second=17.5062Gi/s
BM_format_to_n_string_pointer<wchar_t>/512                              64.9 ns         64.9 ns     10798755 bytes_per_second=29.3985Gi/s
BM_format_to_n_string_pointer<wchar_t>/1024                             83.9 ns         83.9 ns      8352559 bytes_per_second=45.4511Gi/s
BM_format_to_n_string_pointer<wchar_t>/2048                              151 ns          151 ns      4647716 bytes_per_second=50.6502Gi/s
BM_format_to_n_string_pointer<wchar_t>/4096                             1020 ns         1020 ns       683536 bytes_per_second=14.9619Gi/s
BM_format_to_n_string_pointer<wchar_t>/8192                             1287 ns         1287 ns       544563 bytes_per_second=23.7135Gi/s
BM_format_to_n_string_pointer<wchar_t>/16384                            3298 ns         3298 ns       212199 bytes_per_second=18.5052Gi/s
BM_format_to_n_string_pointer<wchar_t>/32768                            6779 ns         6779 ns       103005 bytes_per_second=18.0062Gi/s
BM_format_to_n_string_pointer<wchar_t>/65536                           14635 ns        14635 ns        47829 bytes_per_second=16.6823Gi/s
BM_format_to_n_string_pointer<wchar_t>/131072                          32874 ns        32874 ns        21320 bytes_per_second=14.853Gi/s
BM_format_to_n_string_pointer<wchar_t>/262144                          61182 ns        61179 ns        11435 bytes_per_second=15.9625Gi/s
BM_format_to_n_string_pointer<wchar_t>/524288                         117308 ns       117310 ns         5948 bytes_per_second=16.6492Gi/s
BM_format_to_n_string_pointer<wchar_t>/1048576                        237124 ns       237106 ns         2953 bytes_per_second=16.4747Gi/s

Comparison
Benchmark                                                                           Time             CPU      Time Old      Time New       CPU Old       CPU New
----------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_format_to_n_string_back_inserter<std::string>/1                               -0.0160         -0.0136            59            58            59            58
BM_format_to_n_string_back_inserter<std::string>/2                               +0.0020         +0.0044            58            59            58            59
BM_format_to_n_string_back_inserter<std::string>/4                               +0.0084         +0.0109            58            59            58            59
BM_format_to_n_string_back_inserter<std::string>/8                               -0.0014         +0.0014            59            59            58            59
BM_format_to_n_string_back_inserter<std::string>/16                              -0.0042         -0.0018            59            58            59            58
BM_format_to_n_string_back_inserter<std::string>/32                              -0.0136         -0.0112            78            77            78            77
BM_format_to_n_string_back_inserter<std::string>/64                              -0.0096         -0.0072            78            77            77            77
BM_format_to_n_string_back_inserter<std::string>/128                             -0.1486         -0.1465            91            77            91            77
BM_format_to_n_string_back_inserter<std::string>/256                             -0.1215         -0.1191           102            90           102            90
BM_format_to_n_string_back_inserter<std::string>/512                             -0.1412         -0.1391           158           136           158           136
BM_format_to_n_string_back_inserter<std::string>/1024                            -0.1135         -0.1114           290           257           289           257
BM_format_to_n_string_back_inserter<std::string>/2048                            -0.1551         -0.1530           489           413           488           413
BM_format_to_n_string_back_inserter<std::string>/4096                            -0.1665         -0.1642           801           668           799           668
BM_format_to_n_string_back_inserter<std::string>/8192                            -0.2301         -0.2282          1449          1116          1445          1116
BM_format_to_n_string_back_inserter<std::string>/16384                           -0.1988         -0.1965          2942          2357          2933          2357
BM_format_to_n_string_back_inserter<std::string>/32768                           -0.2129         -0.2109          5676          4467          5661          4467
BM_format_to_n_string_back_inserter<std::string>/65536                           -0.2469         -0.2449         12437          9366         12404          9366
BM_format_to_n_string_back_inserter<std::string>/131072                          -0.2294         -0.2274         25855         19923         25787         19923
BM_format_to_n_string_back_inserter<std::string>/262144                          -0.1906         -0.1885         52880         42798         52739         42798
BM_format_to_n_string_back_inserter<std::string>/524288                          -0.1898         -0.1876        107703         87261        107410         87257
BM_format_to_n_string_back_inserter<std::string>/1048576                         -0.2162         -0.2139        231479        181427        230781        181426
BM_format_to_n_string_back_inserter<std::vector<char>>/1                         -0.0035         -0.0007            72            72            72            72
BM_format_to_n_string_back_inserter<std::vector<char>>/2                         +0.0104         +0.0128            73            73            72            73
BM_format_to_n_string_back_inserter<std::vector<char>>/4                         -0.0022         +0.0003            74            74            74            74
BM_format_to_n_string_back_inserter<std::vector<char>>/8                         +0.0092         +0.0116            75            76            75            76
BM_format_to_n_string_back_inserter<std::vector<char>>/16                        -0.0019         +0.0005            79            79            79            79
BM_format_to_n_string_back_inserter<std::vector<char>>/32                        +0.0168         +0.0195            89            90            88            90
BM_format_to_n_string_back_inserter<std::vector<char>>/64                        -0.0077         -0.0054            91            90            90            90
BM_format_to_n_string_back_inserter<std::vector<char>>/128                       -0.1628         -0.1608           109            91           109            91
BM_format_to_n_string_back_inserter<std::vector<char>>/256                       -0.0994         -0.0971           120           108           119           108
BM_format_to_n_string_back_inserter<std::vector<char>>/512                       -0.1116         -0.1095           186           165           186           165
BM_format_to_n_string_back_inserter<std::vector<char>>/1024                      -0.1168         -0.1144           284           250           283           250
BM_format_to_n_string_back_inserter<std::vector<char>>/2048                      -0.1664         -0.1644           484           404           483           404
BM_format_to_n_string_back_inserter<std::vector<char>>/4096                      -0.2161         -0.2143           802           629           800           629
BM_format_to_n_string_back_inserter<std::vector<char>>/8192                      -0.2834         -0.2817          1469          1053          1466          1053
BM_format_to_n_string_back_inserter<std::vector<char>>/16384                     -0.2365         -0.2344          2700          2062          2693          2062
BM_format_to_n_string_back_inserter<std::vector<char>>/32768                     -0.2359         -0.2341          4979          3805          4967          3805
BM_format_to_n_string_back_inserter<std::vector<char>>/65536                     -0.2754         -0.2736         10431          7558         10405          7558
BM_format_to_n_string_back_inserter<std::vector<char>>/131072                    -0.2505         -0.2487         22646         16973         22591         16973
BM_format_to_n_string_back_inserter<std::vector<char>>/262144                    -0.1981         -0.1958         46278         37110         46148         37111
BM_format_to_n_string_back_inserter<std::vector<char>>/524288                    -0.2027         -0.2011         91695         73110         91511         73108
BM_format_to_n_string_back_inserter<std::vector<char>>/1048576                   -0.2367         -0.2348        195458        149194        194988        149197
BM_format_to_n_string_back_inserter<std::list<char>>/1                           +0.0045         +0.0068            66            66            65            66
BM_format_to_n_string_back_inserter<std::list<char>>/2                           +0.0068         +0.0092            79            79            79            79
BM_format_to_n_string_back_inserter<std::list<char>>/4                           -0.0026         +0.0001           107           107           107           107
BM_format_to_n_string_back_inserter<std::list<char>>/8                           +0.0498         +0.0523           171           180           171           180
BM_format_to_n_string_back_inserter<std::list<char>>/16                          +0.0100         +0.0124           331           334           330           334
BM_format_to_n_string_back_inserter<std::list<char>>/32                          +0.0320         +0.0345           641           662           640           662
BM_format_to_n_string_back_inserter<std::list<char>>/64                          +0.0242         +0.0270          1237          1267          1233          1267
BM_format_to_n_string_back_inserter<std::list<char>>/128                         +0.0025         +0.0047          2474          2480          2469          2480
BM_format_to_n_string_back_inserter<std::list<char>>/256                         -0.0122         -0.0098          4984          4923          4972          4924
BM_format_to_n_string_back_inserter<std::list<char>>/512                         +0.0074         +0.0098          9740          9812          9716          9811
BM_format_to_n_string_back_inserter<std::list<char>>/1024                        +0.0045         +0.0072         19503         19590         19451         19591
BM_format_to_n_string_back_inserter<std::list<char>>/2048                        +0.0021         +0.0046         39078         39161         38981         39159
BM_format_to_n_string_back_inserter<std::list<char>>/4096                        -0.0002         +0.0023         78329         78316         78132         78315
BM_format_to_n_string_back_inserter<std::list<char>>/8192                        +0.0001         +0.0026        156689        156709        156291        156699
BM_format_to_n_string_back_inserter<std::list<char>>/16384                       -0.0025         +0.0004        313624        312842        312732        312842
BM_format_to_n_string_back_inserter<std::list<char>>/32768                       -0.0009         +0.0017        630336        629744        628711        629751
BM_format_to_n_string_back_inserter<std::list<char>>/65536                       -0.0029         -0.0001       1261542       1257851       1258055       1257872
BM_format_to_n_string_back_inserter<std::list<char>>/131072                      -0.0047         -0.0016       2543001       2531022       2535000       2530835
BM_format_to_n_string_back_inserter<std::list<char>>/262144                      -0.0061         -0.0017       5214390       5182786       5191608       5182661
BM_format_to_n_string_back_inserter<std::list<char>>/524288                      -0.0079         -0.0040      10650366      10566644      10609616      10566709
BM_format_to_n_string_back_inserter<std::list<char>>/1048576                     -0.0165         -0.0108      21677130      21319849      21550764      21318080
BM_format_to_n_string_begin<std::string>/1                                       -0.0931         -0.0909            54            49            54            49
BM_format_to_n_string_begin<std::string>/2                                       -0.0861         -0.0839            53            48            53            48
BM_format_to_n_string_begin<std::string>/4                                       -0.0872         -0.0847            53            49            53            49
BM_format_to_n_string_begin<std::string>/8                                       -0.0963         -0.0939            54            48            54            48
BM_format_to_n_string_begin<std::string>/16                                      -0.0969         -0.0947            54            48            54            48
BM_format_to_n_string_begin<std::string>/32                                      -0.1108         -0.1086            54            48            54            48
BM_format_to_n_string_begin<std::string>/64                                      -0.1107         -0.1086            54            48            54            48
BM_format_to_n_string_begin<std::string>/128                                     -0.2054         -0.2036            61            48            61            48
BM_format_to_n_string_begin<std::string>/256                                     -0.2768         -0.2751            69            50            69            50
BM_format_to_n_string_begin<std::string>/512                                     -0.4127         -0.4112            90            53            89            53
BM_format_to_n_string_begin<std::string>/1024                                    -0.5743         -0.5734           132            56           132            56
BM_format_to_n_string_begin<std::string>/2048                                    -0.7063         -0.7056           229            67           228            67
BM_format_to_n_string_begin<std::string>/4096                                    -0.7617         -0.7611           425           101           424           101
BM_format_to_n_string_begin<std::string>/8192                                    -0.8153         -0.8148           812           150           810           150
BM_format_to_n_string_begin<std::string>/16384                                   -0.8140         -0.8136          1656           308          1652           308
BM_format_to_n_string_begin<std::string>/32768                                   -0.5789         -0.5779          3179          1339          3171          1339
BM_format_to_n_string_begin<std::string>/65536                                   -0.5170         -0.5158          6818          3293          6802          3293
BM_format_to_n_string_begin<std::string>/131072                                  -0.5552         -0.5539         14829          6596         14788          6596
BM_format_to_n_string_begin<std::string>/262144                                  -0.5240         -0.5228         29547         14064         29471         14065
BM_format_to_n_string_begin<std::string>/524288                                  -0.5049         -0.5036         59436         29428         59284         29428
BM_format_to_n_string_begin<std::string>/1048576                                 -0.5123         -0.5110        120292         58666        119974         58666
BM_format_to_n_string_begin<std::vector<char>>/1                                 -0.0947         -0.0925            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/2                                 -0.0859         -0.0834            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/4                                 -0.0913         -0.0892            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/8                                 -0.0808         -0.0786            52            48            52            48
BM_format_to_n_string_begin<std::vector<char>>/16                                -0.0808         -0.0786            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/32                                -0.0921         -0.0899            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/64                                -0.0918         -0.0897            53            48            53            48
BM_format_to_n_string_begin<std::vector<char>>/128                               -0.1769         -0.1747            59            48            59            48
BM_format_to_n_string_begin<std::vector<char>>/256                               -0.3249         -0.3233            73            49            73            49
BM_format_to_n_string_begin<std::vector<char>>/512                               -0.4552         -0.4539            97            53            96            53
BM_format_to_n_string_begin<std::vector<char>>/1024                              -0.5978         -0.5969           138            56           138            56
BM_format_to_n_string_begin<std::vector<char>>/2048                              -0.7152         -0.7144           235            67           235            67
BM_format_to_n_string_begin<std::vector<char>>/4096                              -0.7780         -0.7775           439            98           438            98
BM_format_to_n_string_begin<std::vector<char>>/8192                              -0.8230         -0.8226           853           151           851           151
BM_format_to_n_string_begin<std::vector<char>>/16384                             -0.8065         -0.8060          1627           315          1623           315
BM_format_to_n_string_begin<std::vector<char>>/32768                             -0.5823         -0.5811          3221          1345          3212          1345
BM_format_to_n_string_begin<std::vector<char>>/65536                             -0.5351         -0.5340          7089          3295          7072          3295
BM_format_to_n_string_begin<std::vector<char>>/131072                            -0.5683         -0.5672         15268          6591         15229          6590
BM_format_to_n_string_begin<std::vector<char>>/262144                            -0.5351         -0.5339         30296         14084         30219         14084
BM_format_to_n_string_begin<std::vector<char>>/524288                            -0.5061         -0.5049         61230         30239         61074         30238
BM_format_to_n_string_begin<std::vector<char>>/1048576                           -0.5143         -0.5128        124101         60270        123704         60271
BM_format_to_n_string_begin<std::list<char>>/1                                   +0.0383         +0.0408            49            51            49            51
BM_format_to_n_string_begin<std::list<char>>/2                                   +0.0278         +0.0301            50            51            50            51
BM_format_to_n_string_begin<std::list<char>>/4                                   +0.0388         +0.0412            51            53            51            53
BM_format_to_n_string_begin<std::list<char>>/8                                   -0.0386         -0.0360            64            62            64            62
BM_format_to_n_string_begin<std::list<char>>/16                                  -0.0225         -0.0201            85            83            85            83
BM_format_to_n_string_begin<std::list<char>>/32                                  -0.0095         -0.0071           127           126           127           126
BM_format_to_n_string_begin<std::list<char>>/64                                  -0.0072         -0.0048           214           212           213           212
BM_format_to_n_string_begin<std::list<char>>/128                                 -0.0117         -0.0092           389           385           388           385
BM_format_to_n_string_begin<std::list<char>>/256                                 -0.0034         -0.0009           749           746           747           746
BM_format_to_n_string_begin<std::list<char>>/512                                 -0.0098         -0.0074          1453          1439          1449          1439
BM_format_to_n_string_begin<std::list<char>>/1024                                +0.0109         +0.0132          2852          2883          2845          2882
BM_format_to_n_string_begin<std::list<char>>/2048                                +0.0088         +0.0113          5685          5735          5671          5735
BM_format_to_n_string_begin<std::list<char>>/4096                                +0.0043         +0.0068         11312         11360         11283         11360
BM_format_to_n_string_begin<std::list<char>>/8192                                +0.0171         +0.0197         22644         23030         22586         23030
BM_format_to_n_string_begin<std::list<char>>/16384                               +0.0146         +0.0172         45298         45959         45180         45958
BM_format_to_n_string_begin<std::list<char>>/32768                               +0.0167         +0.0195         90351         91864         90110         91864
BM_format_to_n_string_begin<std::list<char>>/65536                               +0.0150         +0.0180        180594        183305        180048        183298
BM_format_to_n_string_begin<std::list<char>>/131072                              +0.0060         +0.0092        373023        375274        371863        375279
BM_format_to_n_string_begin<std::list<char>>/262144                              -0.0354         -0.0318        895166        863452        891717        863366
BM_format_to_n_string_begin<std::list<char>>/524288                              -0.0745         -0.0712       2209006       2044442       2201104       2044356
BM_format_to_n_string_begin<std::list<char>>/1048576                             -0.0161         -0.0125       4421130       4349820       4404315       4349352
BM_format_to_n_string_span<char>/1                                               -0.0987         -0.0965            53            48            53            48
BM_format_to_n_string_span<char>/2                                               -0.0768         -0.0745            53            48            52            48
BM_format_to_n_string_span<char>/4                                               -0.0904         -0.0882            53            48            53            48
BM_format_to_n_string_span<char>/8                                               -0.0868         -0.0846            53            48            53            48
BM_format_to_n_string_span<char>/16                                              -0.0957         -0.0932            54            49            54            49
BM_format_to_n_string_span<char>/32                                              -0.0926         -0.0904            53            48            53            48
BM_format_to_n_string_span<char>/64                                              -0.0923         -0.0876            53            48            53            48
BM_format_to_n_string_span<char>/128                                             -0.1998         -0.1977            61            49            61            49
BM_format_to_n_string_span<char>/256                                             -0.2900         -0.2883            69            49            69            49
BM_format_to_n_string_span<char>/512                                             -0.4116         -0.4100            90            53            89            53
BM_format_to_n_string_span<char>/1024                                            -0.5854         -0.5844           134            56           134            56
BM_format_to_n_string_span<char>/2048                                            -0.7000         -0.6993           223            67           222            67
BM_format_to_n_string_span<char>/4096                                            -0.7731         -0.7725           427            97           426            97
BM_format_to_n_string_span<char>/8192                                            -0.8164         -0.8159           818           150           816           150
BM_format_to_n_string_span<char>/16384                                           -0.3453         -0.3436          1622          1062          1617          1062
BM_format_to_n_string_span<char>/32768                                           -0.5885         -0.5875          3137          1291          3129          1291
BM_format_to_n_string_span<char>/65536                                           -0.5064         -0.5052          6698          3306          6682          3306
BM_format_to_n_string_span<char>/131072                                          -0.5622         -0.5612         14925          6534         14888          6534
BM_format_to_n_string_span<char>/262144                                          -0.5215         -0.5201         29688         14207         29603         14207
BM_format_to_n_string_span<char>/524288                                          -0.4899         -0.4888         59308         30252         59180         30253
BM_format_to_n_string_span<char>/1048576                                         -0.4927         -0.4913        118765         60247        118433         60248
BM_format_to_n_string_pointer<char>/1                                            -0.0827         -0.0804            52            48            52            48
BM_format_to_n_string_pointer<char>/2                                            -0.0843         -0.0821            53            48            53            48
BM_format_to_n_string_pointer<char>/4                                            -0.0944         -0.0920            53            48            53            48
BM_format_to_n_string_pointer<char>/8                                            -0.0875         -0.0853            53            48            53            48
BM_format_to_n_string_pointer<char>/16                                           -0.0793         -0.0771            53            48            53            48
BM_format_to_n_string_pointer<char>/32                                           -0.0767         -0.0743            52            48            52            48
BM_format_to_n_string_pointer<char>/64                                           -0.0935         -0.0914            53            48            53            48
BM_format_to_n_string_pointer<char>/128                                          -0.2203         -0.2182            62            49            62            49
BM_format_to_n_string_pointer<char>/256                                          -0.2950         -0.2933            70            49            69            49
BM_format_to_n_string_pointer<char>/512                                          -0.4038         -0.4025            88            53            88            53
BM_format_to_n_string_pointer<char>/1024                                         -0.5755         -0.5745           131            56           131            56
BM_format_to_n_string_pointer<char>/2048                                         -0.7043         -0.7036           226            67           225            67
BM_format_to_n_string_pointer<char>/4096                                         -0.7726         -0.7719           426            97           425            97
BM_format_to_n_string_pointer<char>/8192                                         -0.8157         -0.8153           815           150           813           150
BM_format_to_n_string_pointer<char>/16384                                        -0.3490         -0.3473          1618          1053          1614          1053
BM_format_to_n_string_pointer<char>/32768                                        -0.5880         -0.5870          3137          1293          3129          1292
BM_format_to_n_string_pointer<char>/65536                                        -0.5062         -0.5048          6693          3305          6675          3305
BM_format_to_n_string_pointer<char>/131072                                       -0.5617         -0.5606         14912          6536         14876          6536
BM_format_to_n_string_pointer<char>/262144                                       -0.5206         -0.5194         29685         14230         29609         14230
BM_format_to_n_string_pointer<char>/524288                                       -0.4884         -0.4873         59254         30316         59133         30315
BM_format_to_n_string_pointer<char>/1048576                                      -0.4924         -0.4915        118746         60274        118523         60275
BM_format_to_n_string_back_inserter<std::wstring>/1                              -0.0171         -0.0142            58            57            57            57
BM_format_to_n_string_back_inserter<std::wstring>/2                              -0.0132         -0.0108            57            57            57            57
BM_format_to_n_string_back_inserter<std::wstring>/4                              -0.0045         -0.0021            57            57            57            57
BM_format_to_n_string_back_inserter<std::wstring>/8                              +0.0143         +0.0167            77            78            77            78
BM_format_to_n_string_back_inserter<std::wstring>/16                             -0.0363         -0.0341            78            75            78            75
BM_format_to_n_string_back_inserter<std::wstring>/32                             -0.1794         -0.1771            93            76            93            76
BM_format_to_n_string_back_inserter<std::wstring>/64                             -0.2365         -0.2348           103            79           103            79
BM_format_to_n_string_back_inserter<std::wstring>/128                            -0.4526         -0.4513           159            87           159            87
BM_format_to_n_string_back_inserter<std::wstring>/256                            -0.6135         -0.6125           288           111           287           111
BM_format_to_n_string_back_inserter<std::wstring>/512                            -0.5428         -0.5415           484           221           483           221
BM_format_to_n_string_back_inserter<std::wstring>/1024                           -0.5268         -0.5256           817           387           815           387
BM_format_to_n_string_back_inserter<std::wstring>/2048                           -0.5229         -0.5217          1553           741          1549           741
BM_format_to_n_string_back_inserter<std::wstring>/4096                           -0.4385         -0.4371          2984          1676          2977          1676
BM_format_to_n_string_back_inserter<std::wstring>/8192                           -0.4267         -0.4252          5893          3378          5878          3378
BM_format_to_n_string_back_inserter<std::wstring>/16384                          -0.4487         -0.4471         12448          6863         12412          6863
BM_format_to_n_string_back_inserter<std::wstring>/32768                          -0.3570         -0.3555         25981         16705         25918         16705
BM_format_to_n_string_back_inserter<std::wstring>/65536                          -0.3206         -0.3189         52551         35705         52422         35706
BM_format_to_n_string_back_inserter<std::wstring>/131072                         -0.3304         -0.3290        107130         71733        106904         71729
BM_format_to_n_string_back_inserter<std::wstring>/262144                         -0.3516         -0.3502        229385        148730        228860        148724
BM_format_to_n_string_back_inserter<std::wstring>/524288                         -0.4429         -0.4413        635498        354054        633625        354006
BM_format_to_n_string_back_inserter<std::wstring>/1048576                        -0.2928         -0.2901       1433803       1014026       1428452       1014009
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/1                      +0.0008         +0.0032            70            71            70            71
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/2                      +0.0038         +0.0062            71            71            71            71
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/4                      -0.0211         -0.0186            73            72            73            72
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/8                      -0.0250         -0.0225            76            74            75            74
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/16                     -0.0156         -0.0130            80            79            80            79
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/32                     -0.1442         -0.1422           104            89           104            89
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/64                     -0.1640         -0.1620           137           115           137           115
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/128                    -0.3540         -0.3521           225           146           225           146
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/256                    -0.3525         -0.3508           338           219           337           219
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/512                    -0.2100         -0.2082           546           431           544           431
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/1024                   -0.2051         -0.2033           872           693           870           693
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/2048                   -0.2659         -0.2653          1553          1140          1551          1140
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/4096                   -0.2330         -0.2331          2719          2086          2719          2086
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/8192                   -0.2418         -0.2418          5032          3816          5033          3816
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/16384                  -0.3092         -0.3092         10447          7217         10447          7216
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/32768                  -0.2725         -0.2725         22749         16550         22749         16550
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/65536                  -0.2417         -0.2417         46382         35172         46383         35171
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/131072                 -0.2335         -0.2335         91122         69842         91123         69843
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/262144                 -0.2594         -0.2593        189609        140424        189589        140428
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/524288                 -0.3822         -0.3821        604574        373523        604526        373526
BM_format_to_n_string_back_inserter<std::vector<wchar_t>>/1048576                -0.2725         -0.2725       1419322       1032502       1419261       1032484
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/1                        +0.0054         +0.0054            64            64            64            64
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/2                        -0.0036         -0.0036            78            77            78            77
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/4                        -0.0090         -0.0090           106           105           106           105
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/8                        +0.0211         +0.0211           171           175           171           175
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/16                       +0.0075         +0.0075           333           336           333           336
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/32                       -0.0261         -0.0261           665           648           665           648
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/64                       -0.0167         -0.0167          1277          1256          1277          1256
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/128                      -0.0239         -0.0240          2531          2470          2531          2470
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/256                      -0.0218         -0.0217          5071          4960          5070          4960
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/512                      -0.0080         -0.0081          9998          9918          9998          9917
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/1024                     -0.0067         -0.0067         20060         19926         20060         19927
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/2048                     -0.0155         -0.0155         40194         39571         40195         39572
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/4096                     -0.0121         -0.0121         80358         79387         80359         79387
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/8192                     -0.0128         -0.0128        161371        159299        161364        159293
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/16384                    -0.0138         -0.0137        323119        318671        323121        318679
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/32768                    -0.0136         -0.0136        646629        637811        646587        637800
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/65536                    -0.0128         -0.0128       1292611       1276011       1292597       1276009
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/131072                   -0.0166         -0.0165       2616640       2573320       2616409       2573148
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/262144                   -0.0202         -0.0202       5414119       5304933       5414122       5304890
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/524288                   -0.0058         -0.0058      10974467      10910899      10974049      10910648
BM_format_to_n_string_back_inserter<std::list<wchar_t>>/1048576                  -0.0070         -0.0072      22293729      22137508      22293492      22133878
BM_format_to_n_string_begin<std::wstring>/1                                      -0.1086         -0.1086            52            46            52            46
BM_format_to_n_string_begin<std::wstring>/2                                      -0.1016         -0.1016            52            46            52            46
BM_format_to_n_string_begin<std::wstring>/4                                      -0.1055         -0.1056            52            46            52            46
BM_format_to_n_string_begin<std::wstring>/8                                      -0.1076         -0.1076            52            46            52            46
BM_format_to_n_string_begin<std::wstring>/16                                     -0.1157         -0.1156            52            46            52            46
BM_format_to_n_string_begin<std::wstring>/32                                     -0.1668         -0.1668            56            47            56            47
BM_format_to_n_string_begin<std::wstring>/64                                     -0.2962         -0.2962            68            48            68            48
BM_format_to_n_string_begin<std::wstring>/128                                    -0.4523         -0.4524            94            51            94            51
BM_format_to_n_string_begin<std::wstring>/256                                    -0.5914         -0.5914           133            54           133            54
BM_format_to_n_string_begin<std::wstring>/512                                    -0.7158         -0.7158           231            66           231            66
BM_format_to_n_string_begin<std::wstring>/1024                                   -0.8021         -0.8021           424            84           424            84
BM_format_to_n_string_begin<std::wstring>/2048                                   -0.8208         -0.8208           830           149           830           149
BM_format_to_n_string_begin<std::wstring>/4096                                   -0.3947         -0.3947          1679          1016          1679          1016
BM_format_to_n_string_begin<std::wstring>/8192                                   -0.6010         -0.6010          3213          1282          3213          1282
BM_format_to_n_string_begin<std::wstring>/16384                                  -0.5182         -0.5182          6838          3294          6838          3294
BM_format_to_n_string_begin<std::wstring>/32768                                  -0.5245         -0.5246         14764          7020         14764          7019
BM_format_to_n_string_begin<std::wstring>/65536                                  -0.4448         -0.4448         29714         16497         29714         16497
BM_format_to_n_string_begin<std::wstring>/131072                                 -0.4967         -0.4967         59647         30022         59644         30020
BM_format_to_n_string_begin<std::wstring>/262144                                 -0.4847         -0.4847        119454         61552        119456         61554
BM_format_to_n_string_begin<std::wstring>/524288                                 -0.5910         -0.5910        286293        117085        286295        117081
BM_format_to_n_string_begin<std::wstring>/1048576                                -0.7244         -0.7244        911579        251242        911595        251244
BM_format_to_n_string_begin<std::vector<wchar_t>>/1                              -0.0950         -0.0950            51            46            51            46
BM_format_to_n_string_begin<std::vector<wchar_t>>/2                              -0.0913         -0.0913            51            46            51            46
BM_format_to_n_string_begin<std::vector<wchar_t>>/4                              -0.0944         -0.0945            51            46            51            46
BM_format_to_n_string_begin<std::vector<wchar_t>>/8                              -0.0920         -0.0920            51            46            51            46
BM_format_to_n_string_begin<std::vector<wchar_t>>/16                             -0.0992         -0.0991            52            46            52            46
BM_format_to_n_string_begin<std::vector<wchar_t>>/32                             -0.1598         -0.1598            56            47            56            47
BM_format_to_n_string_begin<std::vector<wchar_t>>/64                             -0.2987         -0.2987            68            48            68            48
BM_format_to_n_string_begin<std::vector<wchar_t>>/128                            -0.4623         -0.4624            94            51            94            51
BM_format_to_n_string_begin<std::vector<wchar_t>>/256                            -0.5964         -0.5964           135            54           135            54
BM_format_to_n_string_begin<std::vector<wchar_t>>/512                            -0.7230         -0.7230           236            65           236            65
BM_format_to_n_string_begin<std::vector<wchar_t>>/1024                           -0.8091         -0.8091           440            84           440            84
BM_format_to_n_string_begin<std::vector<wchar_t>>/2048                           -0.8237         -0.8237           853           150           853           150
BM_format_to_n_string_begin<std::vector<wchar_t>>/4096                           -0.3751         -0.3751          1634          1021          1634          1021
BM_format_to_n_string_begin<std::vector<wchar_t>>/8192                           -0.5989         -0.5989          3209          1287          3209          1287
BM_format_to_n_string_begin<std::vector<wchar_t>>/16384                          -0.5275         -0.5275          7058          3335          7058          3334
BM_format_to_n_string_begin<std::vector<wchar_t>>/32768                          -0.5442         -0.5442         15116          6890         15115          6890
BM_format_to_n_string_begin<std::vector<wchar_t>>/65536                          -0.4621         -0.4621         30376         16341         30377         16341
BM_format_to_n_string_begin<std::vector<wchar_t>>/131072                         -0.5121         -0.5120         60970         29750         60971         29751
BM_format_to_n_string_begin<std::vector<wchar_t>>/262144                         -0.5012         -0.5012        122493         61096        122497         61097
BM_format_to_n_string_begin<std::vector<wchar_t>>/524288                         -0.5962         -0.5962        290542        117312        290527        117302
BM_format_to_n_string_begin<std::vector<wchar_t>>/1048576                        -0.7241         -0.7240        910702        251297        910584        251295
BM_format_to_n_string_begin<std::list<wchar_t>>/1                                +0.0185         +0.0185            48            48            48            48
BM_format_to_n_string_begin<std::list<wchar_t>>/2                                +0.0192         +0.0191            48            49            48            49
BM_format_to_n_string_begin<std::list<wchar_t>>/4                                -0.0026         -0.0026            51            51            51            51
BM_format_to_n_string_begin<std::list<wchar_t>>/8                                -0.0166         -0.0166            62            61            62            61
BM_format_to_n_string_begin<std::list<wchar_t>>/16                               -0.0117         -0.0117            83            82            83            82
BM_format_to_n_string_begin<std::list<wchar_t>>/32                               -0.0485         -0.0484           132           126           132           126
BM_format_to_n_string_begin<std::list<wchar_t>>/64                               -0.0487         -0.0487           225           214           225           214
BM_format_to_n_string_begin<std::list<wchar_t>>/128                              -0.0547         -0.0546           411           389           411           389
BM_format_to_n_string_begin<std::list<wchar_t>>/256                              +0.1478         +0.1477           769           883           769           883
BM_format_to_n_string_begin<std::list<wchar_t>>/512                              +0.1130         +0.1131          1491          1659          1491          1659
BM_format_to_n_string_begin<std::list<wchar_t>>/1024                             +0.1267         +0.1267          2957          3332          2957          3332
BM_format_to_n_string_begin<std::list<wchar_t>>/2048                             +0.1346         +0.1347          5843          6630          5843          6630
BM_format_to_n_string_begin<std::list<wchar_t>>/4096                             +0.1490         +0.1491         11544         13264         11544         13264
BM_format_to_n_string_begin<std::list<wchar_t>>/8192                             +0.1379         +0.1378         23435         26666         23435         26664
BM_format_to_n_string_begin<std::list<wchar_t>>/16384                            +0.1406         +0.1406         47005         53614         47006         53614
BM_format_to_n_string_begin<std::list<wchar_t>>/32768                            +0.1397         +0.1397         93735        106831         93735        106827
BM_format_to_n_string_begin<std::list<wchar_t>>/65536                            +0.1371         +0.1371        187187        212847        187181        212851
BM_format_to_n_string_begin<std::list<wchar_t>>/131072                           +0.1760         +0.1759        387031        455136        387029        455091
BM_format_to_n_string_begin<std::list<wchar_t>>/262144                           +0.2059         +0.2059       1002722       1209205       1002684       1209145
BM_format_to_n_string_begin<std::list<wchar_t>>/524288                           +0.1347         +0.1346       2354693       2671975       2354599       2671575
BM_format_to_n_string_begin<std::list<wchar_t>>/1048576                          +0.0962         +0.0962       4864712       5332835       4864581       5332611
BM_format_to_n_string_span<wchar_t>/1                                            -0.0836         -0.0837            51            46            51            46
BM_format_to_n_string_span<wchar_t>/2                                            -0.0862         -0.0862            51            46            51            46
BM_format_to_n_string_span<wchar_t>/4                                            -0.0985         -0.0985            51            46            51            46
BM_format_to_n_string_span<wchar_t>/8                                            -0.0942         -0.0942            51            46            51            46
BM_format_to_n_string_span<wchar_t>/16                                           -0.1023         -0.1023            52            46            52            46
BM_format_to_n_string_span<wchar_t>/32                                           -0.1615         -0.1616            56            47            56            47
BM_format_to_n_string_span<wchar_t>/64                                           -0.2824         -0.2823            66            48            66            48
BM_format_to_n_string_span<wchar_t>/128                                          -0.4065         -0.4065            88            52            88            52
BM_format_to_n_string_span<wchar_t>/256                                          -0.5758         -0.5758           128            54           128            54
BM_format_to_n_string_span<wchar_t>/512                                          -0.7089         -0.7089           223            65           223            65
BM_format_to_n_string_span<wchar_t>/1024                                         -0.8040         -0.8040           428            84           428            84
BM_format_to_n_string_span<wchar_t>/2048                                         -0.8180         -0.8180           829           151           829           151
BM_format_to_n_string_span<wchar_t>/4096                                         -0.3744         -0.3745          1613          1009          1613          1009
BM_format_to_n_string_span<wchar_t>/8192                                         -0.5917         -0.5917          3151          1287          3151          1287
BM_format_to_n_string_span<wchar_t>/16384                                        -0.5256         -0.5256          6999          3321          7000          3321
BM_format_to_n_string_span<wchar_t>/32768                                        -0.5418         -0.5418         14819          6790         14818          6790
BM_format_to_n_string_span<wchar_t>/65536                                        -0.5062         -0.5062         29640         14637         29641         14636
BM_format_to_n_string_span<wchar_t>/131072                                       -0.4483         -0.4483         59443         32795         59440         32796
BM_format_to_n_string_span<wchar_t>/262144                                       -0.4868         -0.4867        118942         61047        118944         61049
BM_format_to_n_string_span<wchar_t>/524288                                       -0.5930         -0.5930        288199        117288        288173        117283
BM_format_to_n_string_span<wchar_t>/1048576                                      -0.7405         -0.7405        912877        236929        912855        236924
BM_format_to_n_string_pointer<wchar_t>/1                                         -0.0839         -0.0839            51            46            51            46
BM_format_to_n_string_pointer<wchar_t>/2                                         -0.0882         -0.0881            51            46            51            46
BM_format_to_n_string_pointer<wchar_t>/4                                         -0.0988         -0.0988            51            46            51            46
BM_format_to_n_string_pointer<wchar_t>/8                                         -0.0950         -0.0950            51            46            51            46
BM_format_to_n_string_pointer<wchar_t>/16                                        -0.0990         -0.0991            52            46            52            46
BM_format_to_n_string_pointer<wchar_t>/32                                        -0.1637         -0.1637            56            47            56            47
BM_format_to_n_string_pointer<wchar_t>/64                                        -0.2833         -0.2832            66            48            66            48
BM_format_to_n_string_pointer<wchar_t>/128                                       -0.4048         -0.4048            88            52            88            52
BM_format_to_n_string_pointer<wchar_t>/256                                       -0.5775         -0.5775           129            54           129            54
BM_format_to_n_string_pointer<wchar_t>/512                                       -0.7108         -0.7108           224            65           224            65
BM_format_to_n_string_pointer<wchar_t>/1024                                      -0.8044         -0.8044           429            84           429            84
BM_format_to_n_string_pointer<wchar_t>/2048                                      -0.8168         -0.8168           822           151           822           151
BM_format_to_n_string_pointer<wchar_t>/4096                                      -0.3690         -0.3690          1616          1020          1616          1020
BM_format_to_n_string_pointer<wchar_t>/8192                                      -0.5915         -0.5915          3151          1287          3151          1287
BM_format_to_n_string_pointer<wchar_t>/16384                                     -0.5266         -0.5266          6967          3298          6967          3298
BM_format_to_n_string_pointer<wchar_t>/32768                                     -0.5399         -0.5399         14734          6779         14734          6779
BM_format_to_n_string_pointer<wchar_t>/65536                                     -0.5039         -0.5039         29502         14635         29502         14635
BM_format_to_n_string_pointer<wchar_t>/131072                                    -0.4446         -0.4446         59189         32874         59187         32874
BM_format_to_n_string_pointer<wchar_t>/262144                                    -0.4838         -0.4838        118521         61182        118524         61179
BM_format_to_n_string_pointer<wchar_t>/524288                                    -0.5939         -0.5938        288848        117308        288823        117310
BM_format_to_n_string_pointer<wchar_t>/1048576                                   -0.7401         -0.7401        912304        237124        912281        237106
OVERALL_GEOMEAN                                                                  -0.3118         -0.3107             0             0             0             0
---
 libcxx/include/__format/buffer.h              | 226 +++++++++---------
 .../test/libcxx/transitive_includes/cxx03.csv |   1 +
 .../test/libcxx/transitive_includes/cxx11.csv |   1 +
 .../test/libcxx/transitive_includes/cxx14.csv |   1 +
 .../test/libcxx/transitive_includes/cxx17.csv |   1 +
 .../test/libcxx/transitive_includes/cxx20.csv |   2 +
 .../test/libcxx/transitive_includes/cxx23.csv |   2 +
 .../test/libcxx/transitive_includes/cxx26.csv |   2 +
 8 files changed, 125 insertions(+), 111 deletions(-)

diff --git a/libcxx/include/__format/buffer.h b/libcxx/include/__format/buffer.h
index ccf79077dfa70..c41ea73b3eb7e 100644
--- a/libcxx/include/__format/buffer.h
+++ b/libcxx/include/__format/buffer.h
@@ -39,6 +39,7 @@
 #include <__type_traits/conditional.h>
 #include <__utility/exception_guard.h>
 #include <__utility/move.h>
+#include <climits> // LLVM-20 remove
 #include <cstddef>
 #include <stdexcept>
 #include <string_view>
@@ -56,6 +57,30 @@ _LIBCPP_BEGIN_NAMESPACE_STD
 
 namespace __format {
 
+// A helper to limit the total size of code units written.
+class _LIBCPP_HIDE_FROM_ABI __max_output_size {
+public:
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI explicit __max_output_size(size_t __max_size) : __max_size_{__max_size} {}
+
+  // This function adjusts the size of a (bulk) write operations. It ensures the
+  // number of code units written by a __output_buffer never exceed
+  // __max_size_ code units.
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_t __write_request(size_t __code_units) {
+    size_t __result =
+        __code_units_written_ < __max_size_ ? std::min(__code_units, __max_size_ - __code_units_written_) : 0;
+    __code_units_written_ += __code_units;
+    return __result;
+  }
+
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_t __code_units_written() const noexcept { return __code_units_written_; }
+
+private:
+  size_t __max_size_;
+  // The code units that would have been written if there was no limit.
+  // format_to_n returns this value.
+  size_t __code_units_written_{0};
+};
+
 /// A "buffer" that handles writing to the proper iterator.
 ///
 /// This helper is used together with the @ref back_insert_iterator to offer
@@ -81,9 +106,6 @@ namespace __format {
 /// This class is ABI-tagged, still the new design does not change the size of
 /// objects of this class.
 ///
-/// The new design contains information regarding format_to_n changes, these
-/// will be implemented in follow-up patch.
-///
 /// The new design is the following.
 /// - There is an external object that connects the buffer to the output.
 /// - This buffer object:
@@ -189,12 +211,21 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer {
       : __ptr_(__ptr),
         __capacity_(__capacity),
         __flush_([](_CharT* __p, size_t __n, void* __o) { static_cast<_Tp*>(__o)->__flush(__p, __n); }),
-        __obj_(__obj) {}
+        __data_{.__version_llvm_20__ = false, .__obj_ = reinterpret_cast<uintptr_t>(__obj) >> 1} {}
 
   // New LLVM-20 function.
   [[nodiscard]]
   _LIBCPP_HIDE_FROM_ABI explicit __output_buffer(_CharT* __ptr, size_t __capacity, __prepare_write_type __prepare_write)
-      : __ptr_(__ptr), __capacity_(__capacity), __prepare_write_(__prepare_write), __obj_(nullptr) {}
+      : __output_buffer{__ptr, __capacity, __prepare_write, nullptr} {}
+
+  // New LLVM-20 function.
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI explicit __output_buffer(
+      _CharT* __ptr, size_t __capacity, __prepare_write_type __prepare_write, __max_output_size* __max_output_size)
+      : __ptr_(__ptr),
+        __capacity_(__capacity),
+        __prepare_write_(__prepare_write),
+        __data_{.__version_llvm_20_ = true, .__max_output_size_ = reinterpret_cast<uintptr_t>(__max_output_size) >> 1} {
+  }
 
   // Deprecated LLVM-19 function.
   _LIBCPP_HIDE_FROM_ABI void __reset(_CharT* __ptr, size_t __capacity) {
@@ -215,6 +246,10 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer {
 
   // Used in std::back_insert_iterator.
   _LIBCPP_HIDE_FROM_ABI void push_back(_CharT __c) {
+    if (__data_.__version_llvm_20_ && __data_.__max_output_size_ &&
+        reinterpret_cast<__max_output_size*>(__data_.__max_output_size_ << 1)->__write_request(1) == 0)
+      return;
+
     __ptr_[__size_++] = __c;
 
     // Profiling showed flushing after adding is more efficient than flushing
@@ -241,6 +276,11 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer {
     // upper case. For integral these strings are short.
     // TODO FMT Look at the improvements above.
     size_t __n = __str.size();
+    if (__data_.__version_llvm_20_ && __data_.__max_output_size_) {
+      __n = reinterpret_cast<__max_output_size*>(__data_.__max_output_size_ << 1)->__write_request(__n);
+      if (__n == 0)
+        return;
+    }
 
     __flush_on_overflow(__n);
     if (__n < __capacity_) { // push_back requires the buffer to have room for at least one character (so use <).
@@ -273,6 +313,12 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer {
     _LIBCPP_ASSERT_INTERNAL(__first <= __last, "not a valid range");
 
     size_t __n = static_cast<size_t>(__last - __first);
+    if (__data_.__version_llvm_20_ && __data_.__max_output_size_) {
+      __n = reinterpret_cast<__max_output_size*>(__data_.__max_output_size_ << 1)->__write_request(__n);
+      if (__n == 0)
+        return;
+    }
+
     __flush_on_overflow(__n);
     if (__n < __capacity_) { //  push_back requires the buffer to have room for at least one character (so use <).
       std::transform(__first, __last, std::addressof(__ptr_[__size_]), std::move(__operation));
@@ -295,6 +341,12 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer {
 
   /// A \c fill_n wrapper.
   _LIBCPP_HIDE_FROM_ABI void __fill(size_t __n, _CharT __value) {
+    if (__data_.__version_llvm_20_ && __data_.__max_output_size_) {
+      __n = reinterpret_cast<__max_output_size*>(__data_.__max_output_size_ << 1)->__write_request(__n);
+      if (__n == 0)
+        return;
+    }
+
     __flush_on_overflow(__n);
     if (__n < __capacity_) { //  push_back requires the buffer to have room for at least one character (so use <).
       std::fill_n(std::addressof(__ptr_[__size_]), __n, __value);
@@ -315,9 +367,9 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer {
   }
 
   _LIBCPP_HIDE_FROM_ABI void __flush(size_t __size_hint) {
-    if (__obj_) {
+    if (!__data_.__version_llvm_20_) {
       // LLVM-19 code path
-      __flush_(__ptr_, __size_, __obj_);
+      __flush_(__ptr_, __size_, reinterpret_cast<void*>(__data_.__obj_ << 1));
       __size_ = 0;
     } else {
       // LLVM-20 code path
@@ -340,7 +392,20 @@ class _LIBCPP_TEMPLATE_VIS __output_buffer {
   };
   static_assert(sizeof(__flush_) == sizeof(__prepare_write_), "The union is an ABI break.");
   static_assert(alignof(decltype(__flush_)) == alignof(decltype(__prepare_write_)), "The union is an ABI break.");
-  void* __obj_;
+  // Note this code is quite ugly, but it can cleaned up once the LLVM-19 parts
+  // of the code are removed.
+  union {
+    struct {
+      uintptr_t __version_llvm_20__ : 1;
+      uintptr_t __obj_ : CHAR_BIT * sizeof(void*) - 1;
+    };
+    struct {
+      uintptr_t __version_llvm_20_ : 1;
+      uintptr_t __max_output_size_ : CHAR_BIT * sizeof(__max_output_size*) - 1;
+    };
+  } __data_;
+  static_assert(sizeof(__data_) == sizeof(void*), "The struct is an ABI break.");
+  static_assert(alignof(decltype(__data_)) == alignof(void*), "The struct is an ABI break.");
 
   /// Flushes the buffer when the output operation would overflow the buffer.
   ///
@@ -560,105 +625,6 @@ class _LIBCPP_TEMPLATE_VIS __formatted_size_buffer {
   size_t __size_{0};
 };
 
-/// The base of a buffer that counts and limits the number of insertions.
-template <class _OutIt, __fmt_char_type _CharT, bool>
-  requires(output_iterator<_OutIt, const _CharT&>)
-struct _LIBCPP_TEMPLATE_VIS __format_to_n_buffer_base {
-  using _Size = iter_difference_t<_OutIt>;
-
-public:
-  _LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer_base(_OutIt __out_it, _Size __max_size)
-      : __writer_(std::move(__out_it)), __max_size_(std::max(_Size(0), __max_size)) {}
-
-  _LIBCPP_HIDE_FROM_ABI void __flush(_CharT* __ptr, size_t __n) {
-    if (_Size(__size_) <= __max_size_)
-      __writer_.__flush(__ptr, std::min(_Size(__n), __max_size_ - __size_));
-    __size_ += __n;
-  }
-
-protected:
-  __internal_storage<_CharT> __storage_;
-  __output_buffer<_CharT> __output_{__storage_.__begin(), __storage_.__buffer_size, this};
-  typename __writer_selector<_OutIt, _CharT>::type __writer_;
-
-  _Size __max_size_;
-  _Size __size_{0};
-};
-
-/// The base of a buffer that counts and limits the number of insertions.
-///
-/// This version is used when \c __enable_direct_output<_OutIt, _CharT> == true.
-///
-/// This class limits the size available to the direct writer so it will not
-/// exceed the maximum number of code units.
-template <class _OutIt, __fmt_char_type _CharT>
-  requires(output_iterator<_OutIt, const _CharT&>)
-class _LIBCPP_TEMPLATE_VIS __format_to_n_buffer_base<_OutIt, _CharT, true> {
-  using _Size = iter_difference_t<_OutIt>;
-
-public:
-  _LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer_base(_OutIt __out_it, _Size __max_size)
-      : __output_(std::__unwrap_iter(__out_it), __max_size, this),
-        __writer_(std::move(__out_it)),
-        __max_size_(__max_size) {
-    if (__max_size <= 0) [[unlikely]]
-      __output_.__reset(__storage_.__begin(), __storage_.__buffer_size);
-  }
-
-  _LIBCPP_HIDE_FROM_ABI void __flush(_CharT* __ptr, size_t __n) {
-    // A __flush to the direct writer happens in the following occasions:
-    // - The format function has written the maximum number of allowed code
-    //   units. At this point it's no longer valid to write to this writer. So
-    //   switch to the internal storage. This internal storage doesn't need to
-    //   be written anywhere so the __flush for that storage writes no output.
-    // - Like above, but the next "mass write" operation would overflow the
-    //   buffer. In that case the buffer is pre-emptively switched. The still
-    //   valid code units will be written separately.
-    // - The format_to_n function is finished. In this case there's no need to
-    //   switch the buffer, but for simplicity the buffers are still switched.
-    // When the __max_size <= 0 the constructor already switched the buffers.
-    if (__size_ == 0 && __ptr != __storage_.__begin()) {
-      __writer_.__flush(__ptr, __n);
-      __output_.__reset(__storage_.__begin(), __storage_.__buffer_size);
-    } else if (__size_ < __max_size_) {
-      // Copies a part of the internal buffer to the output up to n characters.
-      // See __output_buffer<_CharT>::__flush_on_overflow for more information.
-      _Size __s = std::min(_Size(__n), __max_size_ - __size_);
-      std::copy_n(__ptr, __s, __writer_.__out_it());
-      __writer_.__flush(__ptr, __s);
-    }
-
-    __size_ += __n;
-  }
-
-protected:
-  __internal_storage<_CharT> __storage_;
-  __output_buffer<_CharT> __output_;
-  __writer_direct<_OutIt, _CharT> __writer_;
-
-  _Size __max_size_;
-  _Size __size_{0};
-};
-
-/// The buffer that counts and limits the number of insertions.
-template <class _OutIt, __fmt_char_type _CharT>
-  requires(output_iterator<_OutIt, const _CharT&>)
-struct _LIBCPP_TEMPLATE_VIS __format_to_n_buffer final
-    : public __format_to_n_buffer_base< _OutIt, _CharT, __enable_direct_output<_OutIt, _CharT>> {
-  using _Base = __format_to_n_buffer_base<_OutIt, _CharT, __enable_direct_output<_OutIt, _CharT>>;
-  using _Size = iter_difference_t<_OutIt>;
-
-public:
-  _LIBCPP_HIDE_FROM_ABI explicit __format_to_n_buffer(_OutIt __out_it, _Size __max_size)
-      : _Base(std::move(__out_it), __max_size) {}
-  _LIBCPP_HIDE_FROM_ABI auto __make_output_iterator() { return this->__output_.__make_output_iterator(); }
-
-  _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> __result() && {
-    this->__output_.__flush(0);
-    return {std::move(this->__writer_).__out_it(), this->__size_};
-  }
-};
-
 // ***** ***** ***** LLVM-20 classes ***** ***** *****
 
 // A dynamically growing buffer.
@@ -668,8 +634,11 @@ class _LIBCPP_TEMPLATE_VIS __allocating_buffer : public __output_buffer<_CharT>
   __allocating_buffer(const __allocating_buffer&)            = delete;
   __allocating_buffer& operator=(const __allocating_buffer&) = delete;
 
-  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI __allocating_buffer()
-      : __output_buffer<_CharT>{__buffer_, __buffer_size_, __prepare_write} {}
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI __allocating_buffer() : __allocating_buffer{nullptr} {}
+
+  [[nodiscard]]
+  _LIBCPP_HIDE_FROM_ABI explicit __allocating_buffer(__max_output_size* __max_output_size)
+      : __output_buffer<_CharT>{__buffer_, __buffer_size_, __prepare_write, __max_output_size} {}
 
   _LIBCPP_HIDE_FROM_ABI ~__allocating_buffer() {
     if (__ptr_ != __buffer_) {
@@ -690,6 +659,7 @@ class _LIBCPP_TEMPLATE_VIS __allocating_buffer : public __output_buffer<_CharT>
   // its capacity is exceeded a dynamic buffer will be allocated.
   static constexpr size_t __buffer_size_ = 256;
   _CharT __buffer_[__buffer_size_];
+
   _CharT* __ptr_{__buffer_};
 
   _LIBCPP_HIDE_FROM_ABI void __grow_buffer(size_t __capacity) {
@@ -729,7 +699,12 @@ 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) {}
+      : __direct_iterator_buffer{__out_it, nullptr} {}
+
+  [[nodiscard]]
+  _LIBCPP_HIDE_FROM_ABI explicit __direct_iterator_buffer(_OutIt __out_it, __max_output_size* __max_output_size)
+      : __output_buffer<_CharT>{std::__unwrap_iter(__out_it), __buffer_size, __prepare_write, __max_output_size},
+        __out_it_(__out_it) {}
 
   [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _OutIt __out_it() && { return __out_it_ + this->__size(); }
 
@@ -753,7 +728,12 @@ 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()} {}
+      : __container_inserter_buffer{__out_it, nullptr} {}
+
+  [[nodiscard]]
+  _LIBCPP_HIDE_FROM_ABI explicit __container_inserter_buffer(_OutIt __out_it, __max_output_size* __max_output_size)
+      : __output_buffer<_CharT>{__buffer_, __buffer_size, __prepare_write, __max_output_size},
+        __container_{__out_it.__get_container()} {}
 
   [[nodiscard]] _LIBCPP_HIDE_FROM_ABI auto __out_it() && {
     __container_->insert(__container_->end(), __buffer_, __buffer_ + this->__size());
@@ -791,6 +771,9 @@ class _LIBCPP_TEMPLATE_VIS __iterator_buffer : public __allocating_buffer<_CharT
   [[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 explicit __iterator_buffer(_OutIt __out_it, __max_output_size* __max_output_size)
+      : __allocating_buffer<_CharT>{__max_output_size}, __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;
   }
@@ -813,6 +796,27 @@ class _LIBCPP_TEMPLATE_VIS __buffer_selector {
                                   __iterator_buffer<_OutIt, _CharT>>>;
 };
 
+// A buffer that counts and limits the number of insertions.
+template <class _OutIt, __fmt_char_type _CharT>
+class _LIBCPP_TEMPLATE_VIS __format_to_n_buffer : private __buffer_selector<_OutIt, _CharT>::type {
+public:
+  using _Base = __buffer_selector<_OutIt, _CharT>::type;
+
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI __format_to_n_buffer(_OutIt __out_it, iter_difference_t<_OutIt> __n)
+      : _Base{std::move(__out_it), std::addressof(__max_output_size_)},
+        __max_output_size_{__n < 0 ? size_t{0} : static_cast<size_t>(__n)} {}
+
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI auto __make_output_iterator() { return _Base::__make_output_iterator(); }
+
+  [[nodiscard]] _LIBCPP_HIDE_FROM_ABI format_to_n_result<_OutIt> __result() && {
+    return {static_cast<_Base&&>(*this).__out_it(),
+            static_cast<iter_difference_t<_OutIt>>(__max_output_size_.__code_units_written())};
+  }
+
+private:
+  __max_output_size __max_output_size_;
+};
+
 // ***** ***** ***** LLVM-19 and LLVM-20 class ***** ***** *****
 
 // A dynamically growing buffer intended to be used for retargeting a context.
diff --git a/libcxx/test/libcxx/transitive_includes/cxx03.csv b/libcxx/test/libcxx/transitive_includes/cxx03.csv
index 622fced5ffa40..f6e7db17f413f 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx03.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx03.csv
@@ -860,6 +860,7 @@ thread atomic
 thread cctype
 thread cerrno
 thread chrono
+thread climits
 thread clocale
 thread compare
 thread cstddef
diff --git a/libcxx/test/libcxx/transitive_includes/cxx11.csv b/libcxx/test/libcxx/transitive_includes/cxx11.csv
index 11c3c1322c406..752fea058e63b 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx11.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx11.csv
@@ -867,6 +867,7 @@ thread atomic
 thread cctype
 thread cerrno
 thread chrono
+thread climits
 thread clocale
 thread compare
 thread cstddef
diff --git a/libcxx/test/libcxx/transitive_includes/cxx14.csv b/libcxx/test/libcxx/transitive_includes/cxx14.csv
index 666d5c3896467..010f7e2fb82e9 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx14.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx14.csv
@@ -870,6 +870,7 @@ thread atomic
 thread cctype
 thread cerrno
 thread chrono
+thread climits
 thread clocale
 thread compare
 thread cstddef
diff --git a/libcxx/test/libcxx/transitive_includes/cxx17.csv b/libcxx/test/libcxx/transitive_includes/cxx17.csv
index 3a3aa5a894473..64c2db3eef6f9 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx17.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx17.csv
@@ -881,6 +881,7 @@ thread atomic
 thread cctype
 thread cerrno
 thread chrono
+thread climits
 thread clocale
 thread compare
 thread cstddef
diff --git a/libcxx/test/libcxx/transitive_includes/cxx20.csv b/libcxx/test/libcxx/transitive_includes/cxx20.csv
index 982c2013e3417..a7ea7f8dddbea 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx20.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx20.csv
@@ -276,6 +276,7 @@ filesystem version
 format array
 format cctype
 format cerrno
+format climits
 format clocale
 format cmath
 format cstddef
@@ -896,6 +897,7 @@ thread array
 thread atomic
 thread cctype
 thread cerrno
+thread climits
 thread clocale
 thread compare
 thread cstddef
diff --git a/libcxx/test/libcxx/transitive_includes/cxx23.csv b/libcxx/test/libcxx/transitive_includes/cxx23.csv
index 8ffb71d8b566b..a7310f20125b9 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx23.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx23.csv
@@ -180,6 +180,7 @@ filesystem version
 format array
 format cctype
 format cerrno
+format climits
 format clocale
 format cmath
 format cstddef
@@ -616,6 +617,7 @@ thread array
 thread atomic
 thread cctype
 thread cerrno
+thread climits
 thread clocale
 thread compare
 thread cstddef
diff --git a/libcxx/test/libcxx/transitive_includes/cxx26.csv b/libcxx/test/libcxx/transitive_includes/cxx26.csv
index 8ffb71d8b566b..a7310f20125b9 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx26.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx26.csv
@@ -180,6 +180,7 @@ filesystem version
 format array
 format cctype
 format cerrno
+format climits
 format clocale
 format cmath
 format cstddef
@@ -616,6 +617,7 @@ thread array
 thread atomic
 thread cctype
 thread cerrno
+thread climits
 thread clocale
 thread compare
 thread cstddef



More information about the llvm-branch-commits mailing list