[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