[llvm-branch-commits] [libcxx] [libc++][format][4/7] Improves std::format_to performance. (PR #101823)
Mark de Wever via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sat Aug 3 06:55:20 PDT 2024
https://github.com/mordante created https://github.com/llvm/llvm-project/pull/101823
This changes the __output_buffer users for format_to to the new structure. It also uses the new allocating buffer to improve performance.
write_double_comparison:
Before
----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
BM_sprintf 197 ns 197 ns 3537000
BM_to_string 219 ns 219 ns 3200000
BM_to_chars 42.3 ns 42.3 ns 16490000
BM_to_chars_as_string 48.1 ns 48.1 ns 14508000
BM_format 167 ns 167 ns 4207000
BM_format_to_back_inserter<std::string> 179 ns 179 ns 3914000
BM_format_to_back_inserter<std::vector<char>> 216 ns 216 ns 3234000
BM_format_to_back_inserter<std::list<char>> 752 ns 752 ns 932000
BM_format_to_iterator/<std::array> 165 ns 165 ns 4257000
BM_format_to_iterator/<std::string> 165 ns 165 ns 4251000
BM_format_to_iterator/<std::vector> 165 ns 165 ns 4254000
After
----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
BM_sprintf 197 ns 197 ns 3548000
BM_to_string 219 ns 219 ns 3203000
BM_to_chars 42.3 ns 42.3 ns 16540000
BM_to_chars_as_string 48.2 ns 48.2 ns 14532000
BM_format 167 ns 167 ns 4190000
BM_format_to_back_inserter<std::string> 176 ns 176 ns 3959000
BM_format_to_back_inserter<std::vector<char>> 211 ns 211 ns 3312000
BM_format_to_back_inserter<std::list<char>> 752 ns 752 ns 934000
BM_format_to_iterator/<std::array> 162 ns 162 ns 4313000
BM_format_to_iterator/<std::string> 162 ns 162 ns 4307000
BM_format_to_iterator/<std::vector> 162 ns 162 ns 4308000
Comparison
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf +0.0003 +0.0002 197 197 197 197
BM_to_string -0.0004 -0.0004 219 219 219 219
BM_to_chars +0.0003 +0.0003 42 42 42 42
BM_to_chars_as_string +0.0004 +0.0004 48 48 48 48
BM_format +0.0016 +0.0016 167 167 167 167
BM_format_to_back_inserter<std::string> -0.0128 -0.0127 179 176 179 176
BM_format_to_back_inserter<std::vector<char>> -0.0216 -0.0216 216 211 216 211
BM_format_to_back_inserter<std::list<char>> -0.0008 -0.0008 752 752 752 752
BM_format_to_iterator/<std::array> -0.0137 -0.0137 165 162 165 162
BM_format_to_iterator/<std::string> -0.0154 -0.0153 165 162 165 162
BM_format_to_iterator/<std::vector> -0.0138 -0.0138 165 162 165 162
OVERALL_GEOMEAN -0.0069 -0.0069 0 0 0 0
write_int_comparison:
Before
----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
BM_sprintf 80.3 ns 80.1 ns 8703000
BM_to_string 15.0 ns 14.9 ns 46849000
BM_to_chars 4.94 ns 4.92 ns 139052000
BM_to_chars_as_string 15.6 ns 15.6 ns 44945000
BM_format 62.1 ns 61.9 ns 11302000
BM_format_to_back_inserter<std::string> 70.3 ns 70.1 ns 9984000
BM_format_to_back_inserter<std::vector<char>> 92.9 ns 92.7 ns 7520000
BM_format_to_back_inserter<std::list<char>> 239 ns 239 ns 2926000
BM_format_to_iterator/<std::array> 60.6 ns 60.4 ns 11582000
BM_format_to_iterator/<std::string> 60.2 ns 60.0 ns 11671000
BM_format_to_iterator/<std::vector> 60.1 ns 60.0 ns 11691000
After
----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
BM_sprintf 81.3 ns 81.2 ns 8546000
BM_to_string 14.9 ns 14.9 ns 46809000
BM_to_chars 4.93 ns 4.93 ns 138278000
BM_to_chars_as_string 15.4 ns 15.4 ns 45504000
BM_format 62.0 ns 61.9 ns 11330000
BM_format_to_back_inserter<std::string> 69.0 ns 68.9 ns 10164000
BM_format_to_back_inserter<std::vector<char>> 90.4 ns 90.3 ns 7736000
BM_format_to_back_inserter<std::list<char>> 242 ns 242 ns 2891000
BM_format_to_iterator/<std::array> 58.6 ns 58.6 ns 11952000
BM_format_to_iterator/<std::string> 58.2 ns 58.1 ns 12052000
BM_format_to_iterator/<std::vector> 58.4 ns 58.3 ns 11983000
Comparison
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf +0.0116 +0.0132 80 81 80 81
BM_to_string -0.0050 -0.0036 15 15 15 15
BM_to_chars -0.0005 +0.0010 5 5 5 5
BM_to_chars_as_string -0.0168 -0.0149 16 15 16 15
BM_format -0.0015 +0.0001 62 62 62 62
BM_format_to_back_inserter<std::string> -0.0186 -0.0172 70 69 70 69
BM_format_to_back_inserter<std::vector<char>> -0.0271 -0.0256 93 90 93 90
BM_format_to_back_inserter<std::list<char>> +0.0104 +0.0119 239 242 239 242
BM_format_to_iterator/<std::array> -0.0322 -0.0304 61 59 60 59
BM_format_to_iterator/<std::string> -0.0330 -0.0317 60 58 60 58
BM_format_to_iterator/<std::vector> -0.0285 -0.0270 60 58 60 58
OVERALL_GEOMEAN -0.0130 -0.0114 0 0 0 0
write_string_comparison:
Comparison
Benchmark Time CPU Time Old Time New CPU Old CPU New
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6 -0.0037 -0.0051 4 4 4 4
BM_format/C string len = 6 -0.0022 -0.0037 50 49 50 49
BM_format_to_back_inserter<std::string>/C string len = 6 -0.0136 -0.0151 57 56 57 56
BM_format_to_back_inserter<std::vector<char>>/C string len = 6 +0.0408 +0.0392 73 76 73 76
BM_format_to_back_inserter<std::deque<char>>/C string len = 6 +0.0115 +0.0099 156 158 156 157
BM_format_to_back_inserter<std::list<char>>/C string len = 6 +0.0325 +0.0307 136 140 136 140
BM_format_to_iterator/<std::array> C string len = 6 -0.0153 -0.0167 47 46 47 46
BM_format_to_iterator/<std::string> C string len = 6 -0.0332 -0.0346 47 46 47 46
BM_format_to_iterator/<std::vector> C string len = 6 -0.0125 -0.0141 46 46 46 46
BM_format_to_iterator/<std::deque> C string len = 6 +0.0041 +0.0026 52 53 52 53
BM_format/string len = 6 -0.0170 -0.0185 50 49 50 49
BM_format_to_back_inserter<std::string>/string len = 6 -0.0092 -0.0106 56 55 56 55
BM_format_to_back_inserter<std::vector<char>>/string len = 6 +0.0153 +0.0138 73 74 73 74
BM_format_to_back_inserter<std::deque<char>>/string len = 6 +0.0392 +0.0371 155 161 154 160
BM_format_to_back_inserter<std::list<char>>/string len = 6 +0.0367 +0.0351 133 138 133 138
BM_format_to_iterator/<std::array> string len = 6 -0.0107 -0.0125 47 46 47 46
BM_format_to_iterator/<std::string> string len = 6 -0.0312 -0.0326 47 46 47 46
BM_format_to_iterator/<std::vector> string len = 6 -0.0103 -0.0144 46 46 46 46
BM_format_to_iterator/<std::deque> string len = 6 -0.0042 -0.0057 53 53 53 52
BM_format/string_view len = 6 -0.0191 -0.0206 49 48 49 48
BM_format_to_back_inserter<std::string>/string_view len = 6 -0.0283 -0.0298 56 55 56 54
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6 +0.0408 +0.0389 72 75 72 75
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6 +0.0214 +0.0199 153 157 153 156
BM_format_to_back_inserter<std::list<char>>/string_view len = 6 +0.0407 +0.0393 132 137 132 137
BM_format_to_iterator/<std::array> string_view len = 6 -0.0235 -0.0249 46 45 46 45
BM_format_to_iterator/<std::string> string_view len = 6 -0.0368 -0.0385 46 45 46 44
BM_format_to_iterator/<std::vector> string_view len = 6 -0.0293 -0.0308 46 45 46 45
BM_format_to_iterator/<std::deque> string_view len = 6 +0.0094 +0.0079 52 52 52 52
BM_sprintf/C string len = 60 -0.0004 -0.0018 5 5 5 5
BM_format/C string len = 60 +0.0250 +0.0232 64 65 64 65
BM_format_to_back_inserter<std::string>/C string len = 60 -0.0027 -0.0041 75 75 75 75
BM_format_to_back_inserter<std::vector<char>>/C string len = 60 +0.0228 +0.0233 89 91 89 91
BM_format_to_back_inserter<std::deque<char>>/C string len = 60 +0.0303 +0.0312 285 294 285 294
BM_format_to_back_inserter<std::list<char>>/C string len = 60 +0.0419 +0.0429 1164 1212 1163 1212
BM_format_to_iterator/<std::array> C string len = 60 -0.0154 -0.0145 46 46 46 46
BM_format_to_iterator/<std::string> C string len = 60 -0.0355 -0.0345 47 45 47 45
BM_format_to_iterator/<std::vector> C string len = 60 -0.0161 -0.0152 46 46 46 46
BM_format_to_iterator/<std::deque> C string len = 60 +0.0044 +0.0054 52 52 52 52
BM_format/string len = 60 +0.0268 +0.0278 62 64 62 64
BM_format_to_back_inserter<std::string>/string len = 60 -0.0031 -0.0022 75 74 75 74
BM_format_to_back_inserter<std::vector<char>>/string len = 60 +0.0183 +0.0191 87 88 86 88
BM_format_to_back_inserter<std::deque<char>>/string len = 60 +0.0567 +0.0578 279 295 279 295
BM_format_to_back_inserter<std::list<char>>/string len = 60 +0.0386 +0.0396 1167 1212 1165 1212
BM_format_to_iterator/<std::array> string len = 60 -0.0094 -0.0084 47 46 47 46
BM_format_to_iterator/<std::string> string len = 60 -0.0268 -0.0259 47 46 47 46
BM_format_to_iterator/<std::vector> string len = 60 -0.0082 -0.0073 46 46 46 46
BM_format_to_iterator/<std::deque> string len = 60 +0.0254 +0.0264 52 54 52 54
BM_format/string_view len = 60 -0.0084 -0.0075 62 62 62 62
BM_format_to_back_inserter<std::string>/string_view len = 60 -0.0001 +0.0008 74 74 74 74
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60 +0.0145 +0.0154 86 88 86 88
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60 +0.0411 +0.0420 279 291 279 291
BM_format_to_back_inserter<std::list<char>>/string_view len = 60 +0.0358 +0.0368 1164 1205 1163 1205
BM_format_to_iterator/<std::array> string_view len = 60 -0.0306 -0.0297 47 45 47 45
BM_format_to_iterator/<std::string> string_view len = 60 -0.0321 -0.0312 46 45 46 45
BM_format_to_iterator/<std::vector> string_view len = 60 -0.0320 -0.0311 46 45 46 45
BM_format_to_iterator/<std::deque> string_view len = 60 +0.0039 +0.0048 52 52 52 52
BM_sprintf/C string len = 6000 +0.4788 +0.4802 77 114 77 114
BM_format/C string len = 6000 -0.0087 -0.0078 345 342 345 342
BM_format_to_back_inserter<std::string>/C string len = 6000 +0.0104 +0.0114 1001 1011 1000 1011
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000 +0.0195 +0.0206 972 991 971 991
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000 -0.0092 -0.0082 15129 14990 15114 14990
BM_format_to_back_inserter<std::list<char>>/C string len = 6000 -0.0017 -0.0007 115290 115092 115167 115090
BM_format_to_iterator/<std::array> C string len = 6000 -0.0136 -0.0127 161 159 161 159
BM_format_to_iterator/<std::string> C string len = 6000 -0.0442 -0.0433 154 147 154 147
BM_format_to_iterator/<std::vector> C string len = 6000 -0.0148 -0.0139 150 148 150 148
BM_format_to_iterator/<std::deque> C string len = 6000 -0.3357 -0.3350 463 308 463 308
BM_format/string len = 6000 +0.0329 +0.0341 282 291 281 291
BM_format_to_back_inserter<std::string>/string len = 6000 +0.0289 +0.0299 941 968 940 968
BM_format_to_back_inserter<std::vector<char>>/string len = 6000 +0.0058 +0.0068 933 938 932 938
BM_format_to_back_inserter<std::deque<char>>/string len = 6000 -0.0053 -0.0043 15110 15029 15095 15030
BM_format_to_back_inserter<std::list<char>>/string len = 6000 +0.0041 +0.0065 115131 115601 114854 115597
BM_format_to_iterator/<std::array> string len = 6000 -0.0028 +0.0000 119 118 118 118
BM_format_to_iterator/<std::string> string len = 6000 -0.0214 -0.0190 108 105 107 105
BM_format_to_iterator/<std::vector> string len = 6000 -0.0125 -0.0100 107 105 107 105
BM_format_to_iterator/<std::deque> string len = 6000 -0.3286 -0.3269 395 265 394 265
BM_format/string_view len = 6000 +0.0084 +0.0110 282 284 281 284
BM_format_to_back_inserter<std::string>/string_view len = 6000 +0.0347 +0.0373 936 969 934 969
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000 +0.0148 +0.0173 925 938 922 938
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000 -0.0049 -0.0025 15072 14999 15036 14999
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000 +0.0017 +0.0040 115332 115524 115059 115520
BM_format_to_iterator/<std::array> string_view len = 6000 -0.0174 -0.0147 119 117 119 117
BM_format_to_iterator/<std::string> string_view len = 6000 -0.0269 -0.0245 108 105 107 105
BM_format_to_iterator/<std::vector> string_view len = 6000 -0.0226 -0.0202 107 105 107 105
BM_format_to_iterator/<std::deque> string_view len = 6000 -0.3463 -0.3447 392 256 391 256
OVERALL_GEOMEAN -0.0089 -0.0087 0 0 0 0
format_to:
Before
--------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------------------
BM_format_to_string_back_inserter<std::string>/1 55.3 ns 55.2 ns 12600282 bytes_per_second=17.2841Mi/s
BM_format_to_string_back_inserter<std::string>/2 55.3 ns 55.2 ns 12711392 bytes_per_second=34.584Mi/s
BM_format_to_string_back_inserter<std::string>/4 55.3 ns 55.2 ns 12668346 bytes_per_second=69.1337Mi/s
BM_format_to_string_back_inserter<std::string>/8 55.0 ns 54.8 ns 12806254 bytes_per_second=139.148Mi/s
BM_format_to_string_back_inserter<std::string>/16 55.0 ns 54.9 ns 12771640 bytes_per_second=278.038Mi/s
BM_format_to_string_back_inserter<std::string>/32 74.3 ns 74.1 ns 9425332 bytes_per_second=411.691Mi/s
BM_format_to_string_back_inserter<std::string>/64 74.3 ns 74.1 ns 9467958 bytes_per_second=823.72Mi/s
BM_format_to_string_back_inserter<std::string>/128 75.6 ns 75.4 ns 9244814 bytes_per_second=1.58012Gi/s
BM_format_to_string_back_inserter<std::string>/256 90.4 ns 90.1 ns 7758708 bytes_per_second=2.64476Gi/s
BM_format_to_string_back_inserter<std::string>/512 136 ns 135 ns 5171079 bytes_per_second=3.52016Gi/s
BM_format_to_string_back_inserter<std::string>/1024 253 ns 252 ns 2766944 bytes_per_second=3.77704Gi/s
BM_format_to_string_back_inserter<std::string>/2048 410 ns 409 ns 1711155 bytes_per_second=4.66192Gi/s
BM_format_to_string_back_inserter<std::string>/4096 662 ns 660 ns 1063114 bytes_per_second=5.77795Gi/s
BM_format_to_string_back_inserter<std::string>/8192 1124 ns 1121 ns 626215 bytes_per_second=6.80694Gi/s
BM_format_to_string_back_inserter<std::string>/16384 2228 ns 2222 ns 315523 bytes_per_second=6.86706Gi/s
BM_format_to_string_back_inserter<std::string>/32768 4795 ns 4783 ns 146357 bytes_per_second=6.38068Gi/s
BM_format_to_string_back_inserter<std::string>/65536 8433 ns 8412 ns 83268 bytes_per_second=7.25532Gi/s
BM_format_to_string_back_inserter<std::string>/131072 44973 ns 44732 ns 15650 bytes_per_second=2.7289Gi/s
BM_format_to_string_back_inserter<std::string>/262144 134871 ns 134517 ns 5205 bytes_per_second=1.81495Gi/s
BM_format_to_string_back_inserter<std::string>/524288 316669 ns 316613 ns 2208 bytes_per_second=1.5422Gi/s
BM_format_to_string_back_inserter<std::string>/1048576 677580 ns 677582 ns 1036 bytes_per_second=1.44125Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1 69.9 ns 69.9 ns 9994480 bytes_per_second=13.6348Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/2 70.1 ns 70.1 ns 9995724 bytes_per_second=27.2205Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/4 71.3 ns 71.3 ns 9850375 bytes_per_second=53.5283Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/8 73.8 ns 73.8 ns 9486647 bytes_per_second=103.44Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/16 78.7 ns 78.7 ns 8873541 bytes_per_second=193.765Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/32 88.7 ns 88.7 ns 7913676 bytes_per_second=344.039Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/64 90.2 ns 90.2 ns 7740112 bytes_per_second=676.676Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/128 92.2 ns 92.2 ns 7569110 bytes_per_second=1.29352Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/256 106 ns 106 ns 6612544 bytes_per_second=2.25002Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/512 163 ns 163 ns 4299613 bytes_per_second=2.9327Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1024 240 ns 240 ns 2919691 bytes_per_second=3.98065Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/2048 400 ns 400 ns 1749907 bytes_per_second=4.76489Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/4096 635 ns 635 ns 1101669 bytes_per_second=6.00718Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/8192 1064 ns 1064 ns 655668 bytes_per_second=7.17313Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/16384 1986 ns 1986 ns 352665 bytes_per_second=7.68268Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/32768 3834 ns 3835 ns 182295 bytes_per_second=7.95861Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/65536 7388 ns 7388 ns 94038 bytes_per_second=8.26153Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/131072 17454 ns 17454 ns 40109 bytes_per_second=6.99363Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/262144 36133 ns 36133 ns 19353 bytes_per_second=6.75666Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/524288 73310 ns 73310 ns 9556 bytes_per_second=6.66053Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1048576 145001 ns 144996 ns 4828 bytes_per_second=6.73509Gi/s
BM_format_to_string_back_inserter<std::list<char>>/1 62.9 ns 62.9 ns 11119088 bytes_per_second=15.1622Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2 76.0 ns 76.0 ns 9212976 bytes_per_second=25.0904Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4 103 ns 103 ns 6740929 bytes_per_second=36.8618Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8 171 ns 171 ns 4096894 bytes_per_second=44.6147Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16 324 ns 324 ns 2147006 bytes_per_second=47.0328Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32 638 ns 638 ns 1096597 bytes_per_second=47.799Mi/s
BM_format_to_string_back_inserter<std::list<char>>/64 1230 ns 1230 ns 570396 bytes_per_second=49.6318Mi/s
BM_format_to_string_back_inserter<std::list<char>>/128 2427 ns 2427 ns 289550 bytes_per_second=50.306Mi/s
BM_format_to_string_back_inserter<std::list<char>>/256 4847 ns 4847 ns 144614 bytes_per_second=50.3648Mi/s
BM_format_to_string_back_inserter<std::list<char>>/512 9656 ns 9656 ns 72476 bytes_per_second=50.5676Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1024 19415 ns 19416 ns 35934 bytes_per_second=50.298Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2048 38927 ns 38928 ns 17986 bytes_per_second=50.173Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4096 78062 ns 78064 ns 8967 bytes_per_second=50.0392Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8192 156624 ns 156628 ns 4464 bytes_per_second=49.8795Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16384 313781 ns 313788 ns 2232 bytes_per_second=49.7948Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32768 626674 ns 626667 ns 1112 bytes_per_second=49.867Mi/s
BM_format_to_string_back_inserter<std::list<char>>/65536 1248918 ns 1248933 ns 558 bytes_per_second=50.0427Mi/s
BM_format_to_string_back_inserter<std::list<char>>/131072 2512031 ns 2511949 ns 277 bytes_per_second=49.7622Mi/s
BM_format_to_string_back_inserter<std::list<char>>/262144 5118786 ns 5118308 ns 126 bytes_per_second=48.8443Mi/s
BM_format_to_string_back_inserter<std::list<char>>/524288 10395742 ns 10395288 ns 63 bytes_per_second=48.0987Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1048576 21110172 ns 21110073 ns 31 bytes_per_second=47.3708Mi/s
BM_format_to_string_begin<std::string>/1 47.0 ns 47.0 ns 14928464 bytes_per_second=20.2942Mi/s
BM_format_to_string_begin<std::string>/2 47.0 ns 47.0 ns 14889677 bytes_per_second=40.5641Mi/s
BM_format_to_string_begin<std::string>/4 47.1 ns 47.1 ns 14877893 bytes_per_second=81.0735Mi/s
BM_format_to_string_begin<std::string>/8 47.0 ns 47.0 ns 14855791 bytes_per_second=162.307Mi/s
BM_format_to_string_begin<std::string>/16 47.1 ns 47.1 ns 14867291 bytes_per_second=324.274Mi/s
BM_format_to_string_begin<std::string>/32 47.0 ns 47.0 ns 14863938 bytes_per_second=649.013Mi/s
BM_format_to_string_begin<std::string>/64 46.5 ns 46.5 ns 14004459 bytes_per_second=1.28171Gi/s
BM_format_to_string_begin<std::string>/128 47.1 ns 47.1 ns 14831108 bytes_per_second=2.53299Gi/s
BM_format_to_string_begin<std::string>/256 51.6 ns 51.6 ns 13604783 bytes_per_second=4.62228Gi/s
BM_format_to_string_begin<std::string>/512 50.0 ns 50.0 ns 13980138 bytes_per_second=9.53155Gi/s
BM_format_to_string_begin<std::string>/1024 59.2 ns 59.2 ns 11872452 bytes_per_second=16.1221Gi/s
BM_format_to_string_begin<std::string>/2048 69.0 ns 69.0 ns 10128771 bytes_per_second=27.6377Gi/s
BM_format_to_string_begin<std::string>/4096 100 ns 100 ns 6963452 bytes_per_second=38.0663Gi/s
BM_format_to_string_begin<std::string>/8192 151 ns 151 ns 4635381 bytes_per_second=50.5416Gi/s
BM_format_to_string_begin<std::string>/16384 314 ns 314 ns 2233442 bytes_per_second=48.5983Gi/s
BM_format_to_string_begin<std::string>/32768 1336 ns 1336 ns 524989 bytes_per_second=22.8492Gi/s
BM_format_to_string_begin<std::string>/65536 3763 ns 3763 ns 185762 bytes_per_second=16.2188Gi/s
BM_format_to_string_begin<std::string>/131072 6556 ns 6556 ns 106616 bytes_per_second=18.6207Gi/s
BM_format_to_string_begin<std::string>/262144 13979 ns 13979 ns 50149 bytes_per_second=17.4643Gi/s
BM_format_to_string_begin<std::string>/524288 28719 ns 28719 ns 24379 bytes_per_second=17.0019Gi/s
BM_format_to_string_begin<std::string>/1048576 57299 ns 57299 ns 12180 bytes_per_second=17.0432Gi/s
BM_format_to_string_begin<std::vector<char>>/1 46.1 ns 46.1 ns 15188343 bytes_per_second=20.6809Mi/s
BM_format_to_string_begin<std::vector<char>>/2 46.1 ns 46.1 ns 15158904 bytes_per_second=41.3318Mi/s
BM_format_to_string_begin<std::vector<char>>/4 46.1 ns 46.1 ns 15170378 bytes_per_second=82.6776Mi/s
BM_format_to_string_begin<std::vector<char>>/8 45.7 ns 45.7 ns 15315671 bytes_per_second=167.026Mi/s
BM_format_to_string_begin<std::vector<char>>/16 46.2 ns 46.2 ns 15163881 bytes_per_second=330.559Mi/s
BM_format_to_string_begin<std::vector<char>>/32 46.1 ns 46.1 ns 15201091 bytes_per_second=661.98Mi/s
BM_format_to_string_begin<std::vector<char>>/64 46.2 ns 46.2 ns 14183997 bytes_per_second=1.28927Gi/s
BM_format_to_string_begin<std::vector<char>>/128 46.7 ns 46.7 ns 14987395 bytes_per_second=2.55007Gi/s
BM_format_to_string_begin<std::vector<char>>/256 51.3 ns 51.3 ns 13898949 bytes_per_second=4.64462Gi/s
BM_format_to_string_begin<std::vector<char>>/512 50.1 ns 50.1 ns 10000000 bytes_per_second=9.52165Gi/s
BM_format_to_string_begin<std::vector<char>>/1024 59.2 ns 59.2 ns 11805042 bytes_per_second=16.105Gi/s
BM_format_to_string_begin<std::vector<char>>/2048 69.0 ns 69.0 ns 10139614 bytes_per_second=27.6266Gi/s
BM_format_to_string_begin<std::vector<char>>/4096 97.6 ns 97.6 ns 7179535 bytes_per_second=39.0938Gi/s
BM_format_to_string_begin<std::vector<char>>/8192 152 ns 152 ns 4610486 bytes_per_second=50.227Gi/s
BM_format_to_string_begin<std::vector<char>>/16384 314 ns 314 ns 2230251 bytes_per_second=48.5946Gi/s
BM_format_to_string_begin<std::vector<char>>/32768 1333 ns 1333 ns 525550 bytes_per_second=22.8868Gi/s
BM_format_to_string_begin<std::vector<char>>/65536 3760 ns 3760 ns 185821 bytes_per_second=16.2322Gi/s
BM_format_to_string_begin<std::vector<char>>/131072 6479 ns 6480 ns 107960 bytes_per_second=18.8391Gi/s
BM_format_to_string_begin<std::vector<char>>/262144 14164 ns 14164 ns 49862 bytes_per_second=17.2368Gi/s
BM_format_to_string_begin<std::vector<char>>/524288 28916 ns 28916 ns 24149 bytes_per_second=16.8861Gi/s
BM_format_to_string_begin<std::vector<char>>/1048576 57621 ns 57622 ns 12140 bytes_per_second=16.9478Gi/s
BM_format_to_string_begin<std::list<char>>/1 47.6 ns 47.6 ns 14675857 bytes_per_second=20.0271Mi/s
BM_format_to_string_begin<std::list<char>>/2 48.8 ns 48.8 ns 14331930 bytes_per_second=39.1155Mi/s
BM_format_to_string_begin<std::list<char>>/4 50.9 ns 50.9 ns 13747606 bytes_per_second=74.9309Mi/s
BM_format_to_string_begin<std::list<char>>/8 63.4 ns 63.4 ns 11065440 bytes_per_second=120.329Mi/s
BM_format_to_string_begin<std::list<char>>/16 82.4 ns 82.4 ns 8510480 bytes_per_second=185.222Mi/s
BM_format_to_string_begin<std::list<char>>/32 126 ns 126 ns 5564932 bytes_per_second=242.653Mi/s
BM_format_to_string_begin<std::list<char>>/64 211 ns 211 ns 3311820 bytes_per_second=289.214Mi/s
BM_format_to_string_begin<std::list<char>>/128 384 ns 384 ns 1825012 bytes_per_second=318.238Mi/s
BM_format_to_string_begin<std::list<char>>/256 735 ns 735 ns 951285 bytes_per_second=332.108Mi/s
BM_format_to_string_begin<std::list<char>>/512 1428 ns 1428 ns 489437 bytes_per_second=341.969Mi/s
BM_format_to_string_begin<std::list<char>>/1024 2792 ns 2792 ns 242406 bytes_per_second=349.822Mi/s
BM_format_to_string_begin<std::list<char>>/2048 5594 ns 5594 ns 124188 bytes_per_second=349.129Mi/s
BM_format_to_string_begin<std::list<char>>/4096 11163 ns 11163 ns 62794 bytes_per_second=349.936Mi/s
BM_format_to_string_begin<std::list<char>>/8192 22339 ns 22339 ns 31335 bytes_per_second=349.718Mi/s
BM_format_to_string_begin<std::list<char>>/16384 44673 ns 44674 ns 15675 bytes_per_second=349.754Mi/s
BM_format_to_string_begin<std::list<char>>/32768 89015 ns 89016 ns 7849 bytes_per_second=351.06Mi/s
BM_format_to_string_begin<std::list<char>>/65536 177988 ns 177989 ns 3938 bytes_per_second=351.145Mi/s
BM_format_to_string_begin<std::list<char>>/131072 362715 ns 362697 ns 1933 bytes_per_second=344.64Mi/s
BM_format_to_string_begin<std::list<char>>/262144 846730 ns 846685 ns 825 bytes_per_second=295.269Mi/s
BM_format_to_string_begin<std::list<char>>/524288 2018755 ns 2018721 ns 347 bytes_per_second=247.682Mi/s
BM_format_to_string_begin<std::list<char>>/1048576 4225251 ns 4225188 ns 165 bytes_per_second=236.676Mi/s
BM_format_to_string_span<char>/1 46.2 ns 46.2 ns 15156896 bytes_per_second=20.6258Mi/s
BM_format_to_string_span<char>/2 46.3 ns 46.3 ns 15114242 bytes_per_second=41.1559Mi/s
BM_format_to_string_span<char>/4 46.4 ns 46.4 ns 15089475 bytes_per_second=82.1686Mi/s
BM_format_to_string_span<char>/8 45.9 ns 45.9 ns 15249334 bytes_per_second=166.143Mi/s
BM_format_to_string_span<char>/16 46.3 ns 46.3 ns 15087074 bytes_per_second=329.233Mi/s
BM_format_to_string_span<char>/32 46.4 ns 46.4 ns 15099464 bytes_per_second=657.611Mi/s
BM_format_to_string_span<char>/64 46.4 ns 46.4 ns 14101746 bytes_per_second=1.2849Gi/s
BM_format_to_string_span<char>/128 47.0 ns 47.0 ns 14919410 bytes_per_second=2.53769Gi/s
BM_format_to_string_span<char>/256 50.8 ns 50.8 ns 13874090 bytes_per_second=4.69274Gi/s
BM_format_to_string_span<char>/512 50.5 ns 50.5 ns 13849265 bytes_per_second=9.44604Gi/s
BM_format_to_string_span<char>/1024 59.6 ns 59.6 ns 11774716 bytes_per_second=16.008Gi/s
BM_format_to_string_span<char>/2048 69.3 ns 69.3 ns 10102354 bytes_per_second=27.5137Gi/s
BM_format_to_string_span<char>/4096 98.0 ns 98.0 ns 7137947 bytes_per_second=38.9144Gi/s
BM_format_to_string_span<char>/8192 153 ns 153 ns 4585057 bytes_per_second=49.9901Gi/s
BM_format_to_string_span<char>/16384 316 ns 316 ns 2225896 bytes_per_second=48.3398Gi/s
BM_format_to_string_span<char>/32768 1339 ns 1339 ns 520365 bytes_per_second=22.7872Gi/s
BM_format_to_string_span<char>/65536 3780 ns 3780 ns 184720 bytes_per_second=16.1474Gi/s
BM_format_to_string_span<char>/131072 6557 ns 6557 ns 106444 bytes_per_second=18.6157Gi/s
BM_format_to_string_span<char>/262144 14199 ns 14199 ns 49363 bytes_per_second=17.1939Gi/s
BM_format_to_string_span<char>/524288 28833 ns 28834 ns 24254 bytes_per_second=16.9343Gi/s
BM_format_to_string_span<char>/1048576 57660 ns 57660 ns 12166 bytes_per_second=16.9365Gi/s
BM_format_to_string_pointer<char>/1 46.4 ns 46.4 ns 15070582 bytes_per_second=20.5355Mi/s
BM_format_to_string_pointer<char>/2 46.5 ns 46.5 ns 15064611 bytes_per_second=41.0239Mi/s
BM_format_to_string_pointer<char>/4 46.4 ns 46.4 ns 15080092 bytes_per_second=82.1674Mi/s
BM_format_to_string_pointer<char>/8 45.9 ns 45.9 ns 15239465 bytes_per_second=166.094Mi/s
BM_format_to_string_pointer<char>/16 46.4 ns 46.4 ns 15077440 bytes_per_second=328.884Mi/s
BM_format_to_string_pointer<char>/32 46.4 ns 46.4 ns 15070278 bytes_per_second=657.438Mi/s
BM_format_to_string_pointer<char>/64 46.4 ns 46.4 ns 14094814 bytes_per_second=1.28358Gi/s
BM_format_to_string_pointer<char>/128 46.8 ns 46.8 ns 14894522 bytes_per_second=2.54466Gi/s
BM_format_to_string_pointer<char>/256 51.2 ns 51.2 ns 13908865 bytes_per_second=4.65713Gi/s
BM_format_to_string_pointer<char>/512 50.2 ns 50.2 ns 13999036 bytes_per_second=9.5049Gi/s
BM_format_to_string_pointer<char>/1024 59.4 ns 59.4 ns 11805502 bytes_per_second=16.0611Gi/s
BM_format_to_string_pointer<char>/2048 69.1 ns 69.1 ns 10114415 bytes_per_second=27.5936Gi/s
BM_format_to_string_pointer<char>/4096 97.6 ns 97.6 ns 7154104 bytes_per_second=39.0914Gi/s
BM_format_to_string_pointer<char>/8192 151 ns 151 ns 4653492 bytes_per_second=50.6101Gi/s
BM_format_to_string_pointer<char>/16384 314 ns 314 ns 2222259 bytes_per_second=48.6129Gi/s
BM_format_to_string_pointer<char>/32768 1336 ns 13…
>From 0b9f969b2a9676bd62995d0d0a46460cf12cd9b5 Mon Sep 17 00:00:00 2001
From: Mark de Wever <koraq at xs4all.nl>
Date: Sat, 30 Mar 2024 17:35:56 +0100
Subject: [PATCH] [libc++][format][4/7] Improves std::format_to performance.
This changes the __output_buffer users for format_to to the new structure.
It also uses the new allocating buffer to improve performance.
write_double_comparison:
Before
----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
BM_sprintf 197 ns 197 ns 3537000
BM_to_string 219 ns 219 ns 3200000
BM_to_chars 42.3 ns 42.3 ns 16490000
BM_to_chars_as_string 48.1 ns 48.1 ns 14508000
BM_format 167 ns 167 ns 4207000
BM_format_to_back_inserter<std::string> 179 ns 179 ns 3914000
BM_format_to_back_inserter<std::vector<char>> 216 ns 216 ns 3234000
BM_format_to_back_inserter<std::list<char>> 752 ns 752 ns 932000
BM_format_to_iterator/<std::array> 165 ns 165 ns 4257000
BM_format_to_iterator/<std::string> 165 ns 165 ns 4251000
BM_format_to_iterator/<std::vector> 165 ns 165 ns 4254000
After
----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
BM_sprintf 197 ns 197 ns 3548000
BM_to_string 219 ns 219 ns 3203000
BM_to_chars 42.3 ns 42.3 ns 16540000
BM_to_chars_as_string 48.2 ns 48.2 ns 14532000
BM_format 167 ns 167 ns 4190000
BM_format_to_back_inserter<std::string> 176 ns 176 ns 3959000
BM_format_to_back_inserter<std::vector<char>> 211 ns 211 ns 3312000
BM_format_to_back_inserter<std::list<char>> 752 ns 752 ns 934000
BM_format_to_iterator/<std::array> 162 ns 162 ns 4313000
BM_format_to_iterator/<std::string> 162 ns 162 ns 4307000
BM_format_to_iterator/<std::vector> 162 ns 162 ns 4308000
Comparison
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf +0.0003 +0.0002 197 197 197 197
BM_to_string -0.0004 -0.0004 219 219 219 219
BM_to_chars +0.0003 +0.0003 42 42 42 42
BM_to_chars_as_string +0.0004 +0.0004 48 48 48 48
BM_format +0.0016 +0.0016 167 167 167 167
BM_format_to_back_inserter<std::string> -0.0128 -0.0127 179 176 179 176
BM_format_to_back_inserter<std::vector<char>> -0.0216 -0.0216 216 211 216 211
BM_format_to_back_inserter<std::list<char>> -0.0008 -0.0008 752 752 752 752
BM_format_to_iterator/<std::array> -0.0137 -0.0137 165 162 165 162
BM_format_to_iterator/<std::string> -0.0154 -0.0153 165 162 165 162
BM_format_to_iterator/<std::vector> -0.0138 -0.0138 165 162 165 162
OVERALL_GEOMEAN -0.0069 -0.0069 0 0 0 0
write_int_comparison:
Before
----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
BM_sprintf 80.3 ns 80.1 ns 8703000
BM_to_string 15.0 ns 14.9 ns 46849000
BM_to_chars 4.94 ns 4.92 ns 139052000
BM_to_chars_as_string 15.6 ns 15.6 ns 44945000
BM_format 62.1 ns 61.9 ns 11302000
BM_format_to_back_inserter<std::string> 70.3 ns 70.1 ns 9984000
BM_format_to_back_inserter<std::vector<char>> 92.9 ns 92.7 ns 7520000
BM_format_to_back_inserter<std::list<char>> 239 ns 239 ns 2926000
BM_format_to_iterator/<std::array> 60.6 ns 60.4 ns 11582000
BM_format_to_iterator/<std::string> 60.2 ns 60.0 ns 11671000
BM_format_to_iterator/<std::vector> 60.1 ns 60.0 ns 11691000
After
----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
BM_sprintf 81.3 ns 81.2 ns 8546000
BM_to_string 14.9 ns 14.9 ns 46809000
BM_to_chars 4.93 ns 4.93 ns 138278000
BM_to_chars_as_string 15.4 ns 15.4 ns 45504000
BM_format 62.0 ns 61.9 ns 11330000
BM_format_to_back_inserter<std::string> 69.0 ns 68.9 ns 10164000
BM_format_to_back_inserter<std::vector<char>> 90.4 ns 90.3 ns 7736000
BM_format_to_back_inserter<std::list<char>> 242 ns 242 ns 2891000
BM_format_to_iterator/<std::array> 58.6 ns 58.6 ns 11952000
BM_format_to_iterator/<std::string> 58.2 ns 58.1 ns 12052000
BM_format_to_iterator/<std::vector> 58.4 ns 58.3 ns 11983000
Comparison
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf +0.0116 +0.0132 80 81 80 81
BM_to_string -0.0050 -0.0036 15 15 15 15
BM_to_chars -0.0005 +0.0010 5 5 5 5
BM_to_chars_as_string -0.0168 -0.0149 16 15 16 15
BM_format -0.0015 +0.0001 62 62 62 62
BM_format_to_back_inserter<std::string> -0.0186 -0.0172 70 69 70 69
BM_format_to_back_inserter<std::vector<char>> -0.0271 -0.0256 93 90 93 90
BM_format_to_back_inserter<std::list<char>> +0.0104 +0.0119 239 242 239 242
BM_format_to_iterator/<std::array> -0.0322 -0.0304 61 59 60 59
BM_format_to_iterator/<std::string> -0.0330 -0.0317 60 58 60 58
BM_format_to_iterator/<std::vector> -0.0285 -0.0270 60 58 60 58
OVERALL_GEOMEAN -0.0130 -0.0114 0 0 0 0
write_string_comparison:
Before
---------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6 3.58 ns 3.58 ns 195215226
BM_format/C string len = 6 49.6 ns 49.6 ns 14114169
BM_format_to_back_inserter<std::string>/C string len = 6 56.8 ns 56.7 ns 12354503
BM_format_to_back_inserter<std::vector<char>>/C string len = 6 73.0 ns 72.9 ns 9558050
BM_format_to_back_inserter<std::deque<char>>/C string len = 6 156 ns 156 ns 4498803
BM_format_to_back_inserter<std::list<char>>/C string len = 6 136 ns 136 ns 5164775
BM_format_to_iterator/<std::array> C string len = 6 46.6 ns 46.5 ns 15056991
BM_format_to_iterator/<std::string> C string len = 6 47.2 ns 47.1 ns 14865806
BM_format_to_iterator/<std::vector> C string len = 6 46.4 ns 46.4 ns 15115383
BM_format_to_iterator/<std::deque> C string len = 6 52.5 ns 52.4 ns 13340197
BM_format/string len = 6 49.7 ns 49.6 ns 14109221
BM_format_to_back_inserter<std::string>/string len = 6 55.7 ns 55.6 ns 12566789
BM_format_to_back_inserter<std::vector<char>>/string len = 6 73.0 ns 72.9 ns 9615078
BM_format_to_back_inserter<std::deque<char>>/string len = 6 155 ns 154 ns 4527026
BM_format_to_back_inserter<std::list<char>>/string len = 6 133 ns 133 ns 5260984
BM_format_to_iterator/<std::array> string len = 6 46.7 ns 46.7 ns 14997233
BM_format_to_iterator/<std::string> string len = 6 47.3 ns 47.3 ns 14823572
BM_format_to_iterator/<std::vector> string len = 6 46.4 ns 46.4 ns 15096193
BM_format_to_iterator/<std::deque> string len = 6 52.8 ns 52.8 ns 13255170
BM_format/string_view len = 6 48.9 ns 48.9 ns 14343000
BM_format_to_back_inserter<std::string>/string_view len = 6 56.2 ns 56.2 ns 12465511
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6 72.0 ns 72.0 ns 9713443
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6 153 ns 153 ns 4567407
BM_format_to_back_inserter<std::list<char>>/string_view len = 6 132 ns 132 ns 5299318
BM_format_to_iterator/<std::array> string_view len = 6 46.3 ns 46.3 ns 15136404
BM_format_to_iterator/<std::string> string_view len = 6 46.3 ns 46.2 ns 15109243
BM_format_to_iterator/<std::vector> string_view len = 6 46.2 ns 46.2 ns 15109163
BM_format_to_iterator/<std::deque> string_view len = 6 51.7 ns 51.6 ns 13596607
BM_sprintf/C string len = 60 4.84 ns 4.84 ns 144840145
BM_format/C string len = 60 63.7 ns 63.6 ns 10992968
BM_format_to_back_inserter<std::string>/C string len = 60 75.1 ns 75.0 ns 9344335
BM_format_to_back_inserter<std::vector<char>>/C string len = 60 88.7 ns 88.6 ns 7890501
BM_format_to_back_inserter<std::deque<char>>/C string len = 60 285 ns 285 ns 2456362
BM_format_to_back_inserter<std::list<char>>/C string len = 60 1164 ns 1163 ns 601922
BM_format_to_iterator/<std::array> C string len = 60 46.3 ns 46.3 ns 15130688
BM_format_to_iterator/<std::string> C string len = 60 47.0 ns 47.0 ns 14932772
BM_format_to_iterator/<std::vector> C string len = 60 46.4 ns 46.3 ns 15105615
BM_format_to_iterator/<std::deque> C string len = 60 52.1 ns 52.1 ns 13457398
BM_format/string len = 60 62.2 ns 62.2 ns 11214844
BM_format_to_back_inserter<std::string>/string len = 60 74.7 ns 74.7 ns 9362502
BM_format_to_back_inserter<std::vector<char>>/string len = 60 86.6 ns 86.5 ns 8089613
BM_format_to_back_inserter<std::deque<char>>/string len = 60 279 ns 279 ns 2512066
BM_format_to_back_inserter<std::list<char>>/string len = 60 1167 ns 1165 ns 599277
BM_format_to_iterator/<std::array> string len = 60 46.7 ns 46.7 ns 15001681
BM_format_to_iterator/<std::string> string len = 60 47.3 ns 47.2 ns 14812974
BM_format_to_iterator/<std::vector> string len = 60 46.4 ns 46.4 ns 15082006
BM_format_to_iterator/<std::deque> string len = 60 52.3 ns 52.2 ns 13388503
BM_format/string_view len = 60 62.1 ns 62.0 ns 11284789
BM_format_to_back_inserter<std::string>/string_view len = 60 74.4 ns 74.3 ns 9417398
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60 86.4 ns 86.3 ns 8130553
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60 279 ns 279 ns 2504047
BM_format_to_back_inserter<std::list<char>>/string_view len = 60 1164 ns 1163 ns 602294
BM_format_to_iterator/<std::array> string_view len = 60 46.7 ns 46.6 ns 15000596
BM_format_to_iterator/<std::string> string_view len = 60 46.4 ns 46.4 ns 15109351
BM_format_to_iterator/<std::vector> string_view len = 60 46.4 ns 46.4 ns 15094222
BM_format_to_iterator/<std::deque> string_view len = 60 52.1 ns 52.1 ns 13453584
BM_sprintf/C string len = 6000 77.1 ns 77.0 ns 9095120
BM_format/C string len = 6000 345 ns 345 ns 2032789
BM_format_to_back_inserter<std::string>/C string len = 6000 1001 ns 1000 ns 697688
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000 972 ns 971 ns 720843
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000 15129 ns 15114 ns 46330
BM_format_to_back_inserter<std::list<char>>/C string len = 6000 115290 ns 115167 ns 6065
BM_format_to_iterator/<std::array> C string len = 6000 161 ns 161 ns 4358261
BM_format_to_iterator/<std::string> C string len = 6000 154 ns 154 ns 4559197
BM_format_to_iterator/<std::vector> C string len = 6000 150 ns 150 ns 4660257
BM_format_to_iterator/<std::deque> C string len = 6000 463 ns 463 ns 1512400
BM_format/string len = 6000 282 ns 281 ns 2494935
BM_format_to_back_inserter<std::string>/string len = 6000 941 ns 940 ns 742779
BM_format_to_back_inserter<std::vector<char>>/string len = 6000 933 ns 932 ns 749515
BM_format_to_back_inserter<std::deque<char>>/string len = 6000 15110 ns 15095 ns 46447
BM_format_to_back_inserter<std::list<char>>/string len = 6000 115131 ns 114854 ns 6080
BM_format_to_iterator/<std::array> string len = 6000 119 ns 118 ns 5903779
BM_format_to_iterator/<std::string> string len = 6000 108 ns 107 ns 6528813
BM_format_to_iterator/<std::vector> string len = 6000 107 ns 107 ns 6574916
BM_format_to_iterator/<std::deque> string len = 6000 395 ns 394 ns 1776801
BM_format/string_view len = 6000 282 ns 281 ns 2484729
BM_format_to_back_inserter<std::string>/string_view len = 6000 936 ns 934 ns 751176
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000 925 ns 922 ns 759237
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000 15072 ns 15036 ns 46625
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000 115332 ns 115059 ns 6094
BM_format_to_iterator/<std::array> string_view len = 6000 119 ns 119 ns 5907620
BM_format_to_iterator/<std::string> string_view len = 6000 108 ns 107 ns 6509157
BM_format_to_iterator/<std::vector> string_view len = 6000 107 ns 107 ns 6556001
BM_format_to_iterator/<std::deque> string_view len = 6000 392 ns 391 ns 1791454
After
---------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6 3.57 ns 3.56 ns 196180052
BM_format/C string len = 6 49.5 ns 49.4 ns 14164054
BM_format_to_back_inserter<std::string>/C string len = 6 56.0 ns 55.9 ns 12538707
BM_format_to_back_inserter<std::vector<char>>/C string len = 6 75.9 ns 75.7 ns 9240871
BM_format_to_back_inserter<std::deque<char>>/C string len = 6 158 ns 157 ns 4451418
BM_format_to_back_inserter<std::list<char>>/C string len = 6 140 ns 140 ns 5027890
BM_format_to_iterator/<std::array> C string len = 6 45.8 ns 45.7 ns 15319048
BM_format_to_iterator/<std::string> C string len = 6 45.6 ns 45.5 ns 15401554
BM_format_to_iterator/<std::vector> C string len = 6 45.8 ns 45.7 ns 15300166
BM_format_to_iterator/<std::deque> C string len = 6 52.7 ns 52.6 ns 13285185
BM_format/string len = 6 48.8 ns 48.7 ns 14348744
BM_format_to_back_inserter<std::string>/string len = 6 55.2 ns 55.0 ns 12741162
BM_format_to_back_inserter<std::vector<char>>/string len = 6 74.1 ns 73.9 ns 9486802
BM_format_to_back_inserter<std::deque<char>>/string len = 6 161 ns 160 ns 4378461
BM_format_to_back_inserter<std::list<char>>/string len = 6 138 ns 138 ns 5093901
BM_format_to_iterator/<std::array> string len = 6 46.2 ns 46.1 ns 15206070
BM_format_to_iterator/<std::string> string len = 6 45.9 ns 45.8 ns 15308600
BM_format_to_iterator/<std::vector> string len = 6 46.0 ns 45.7 ns 15294308
BM_format_to_iterator/<std::deque> string len = 6 52.6 ns 52.5 ns 13337923
BM_format/string_view len = 6 48.0 ns 47.9 ns 14613157
BM_format_to_back_inserter<std::string>/string_view len = 6 54.6 ns 54.5 ns 12873822
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6 75.0 ns 74.8 ns 9336395
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6 157 ns 156 ns 4485483
BM_format_to_back_inserter<std::list<char>>/string_view len = 6 137 ns 137 ns 5103661
BM_format_to_iterator/<std::array> string_view len = 6 45.2 ns 45.1 ns 15521006
BM_format_to_iterator/<std::string> string_view len = 6 44.6 ns 44.5 ns 15774831
BM_format_to_iterator/<std::vector> string_view len = 6 44.8 ns 44.7 ns 15675865
BM_format_to_iterator/<std::deque> string_view len = 6 52.2 ns 52.0 ns 13439531
BM_sprintf/C string len = 60 4.84 ns 4.83 ns 145140791
BM_format/C string len = 60 65.3 ns 65.1 ns 10780458
BM_format_to_back_inserter<std::string>/C string len = 60 74.9 ns 74.7 ns 9347593
BM_format_to_back_inserter<std::vector<char>>/C string len = 60 90.8 ns 90.7 ns 7662645
BM_format_to_back_inserter<std::deque<char>>/C string len = 60 294 ns 294 ns 2381522
BM_format_to_back_inserter<std::list<char>>/C string len = 60 1212 ns 1212 ns 577916
BM_format_to_iterator/<std::array> C string len = 60 45.6 ns 45.6 ns 15344329
BM_format_to_iterator/<std::string> C string len = 60 45.3 ns 45.3 ns 15441949
BM_format_to_iterator/<std::vector> C string len = 60 45.6 ns 45.6 ns 15338324
BM_format_to_iterator/<std::deque> C string len = 60 52.3 ns 52.3 ns 13400650
BM_format/string len = 60 63.9 ns 63.9 ns 10949816
BM_format_to_back_inserter<std::string>/string len = 60 74.5 ns 74.5 ns 9381269
BM_format_to_back_inserter<std::vector<char>>/string len = 60 88.1 ns 88.1 ns 7951042
BM_format_to_back_inserter<std::deque<char>>/string len = 60 295 ns 295 ns 2376712
BM_format_to_back_inserter<std::list<char>>/string len = 60 1212 ns 1212 ns 577933
BM_format_to_iterator/<std::array> string len = 60 46.3 ns 46.3 ns 15126961
BM_format_to_iterator/<std::string> string len = 60 46.0 ns 46.0 ns 15209386
BM_format_to_iterator/<std::vector> string len = 60 46.0 ns 46.0 ns 15215256
BM_format_to_iterator/<std::deque> string len = 60 53.6 ns 53.6 ns 13026167
BM_format/string_view len = 60 61.6 ns 61.6 ns 11367134
BM_format_to_back_inserter<std::string>/string_view len = 60 74.4 ns 74.4 ns 9414535
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60 87.6 ns 87.6 ns 7985409
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60 291 ns 291 ns 2409202
BM_format_to_back_inserter<std::list<char>>/string_view len = 60 1205 ns 1205 ns 580314
BM_format_to_iterator/<std::array> string_view len = 60 45.2 ns 45.2 ns 15495462
BM_format_to_iterator/<std::string> string_view len = 60 44.9 ns 45.0 ns 15592145
BM_format_to_iterator/<std::vector> string_view len = 60 44.9 ns 44.9 ns 15573834
BM_format_to_iterator/<std::deque> string_view len = 60 52.3 ns 52.3 ns 13381282
BM_sprintf/C string len = 6000 114 ns 114 ns 6138575
BM_format/C string len = 6000 342 ns 342 ns 2047071
BM_format_to_back_inserter<std::string>/C string len = 6000 1011 ns 1011 ns 691579
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000 991 ns 991 ns 711574
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000 14990 ns 14990 ns 46648
BM_format_to_back_inserter<std::list<char>>/C string len = 6000 115092 ns 115090 ns 6097
BM_format_to_iterator/<std::array> C string len = 6000 159 ns 159 ns 4420990
BM_format_to_iterator/<std::string> C string len = 6000 147 ns 147 ns 4762118
BM_format_to_iterator/<std::vector> C string len = 6000 148 ns 148 ns 4733276
BM_format_to_iterator/<std::deque> C string len = 6000 308 ns 308 ns 2278285
BM_format/string len = 6000 291 ns 291 ns 2409136
BM_format_to_back_inserter<std::string>/string len = 6000 968 ns 968 ns 721845
BM_format_to_back_inserter<std::vector<char>>/string len = 6000 938 ns 938 ns 752091
BM_format_to_back_inserter<std::deque<char>>/string len = 6000 15029 ns 15030 ns 46591
BM_format_to_back_inserter<std::list<char>>/string len = 6000 115601 ns 115597 ns 6066
BM_format_to_iterator/<std::array> string len = 6000 118 ns 118 ns 5924962
BM_format_to_iterator/<std::string> string len = 6000 105 ns 105 ns 6630413
BM_format_to_iterator/<std::vector> string len = 6000 105 ns 105 ns 6628677
BM_format_to_iterator/<std::deque> string len = 6000 265 ns 265 ns 2684420
BM_format/string_view len = 6000 284 ns 284 ns 2461853
BM_format_to_back_inserter<std::string>/string_view len = 6000 969 ns 969 ns 724433
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000 938 ns 938 ns 749795
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000 14999 ns 14999 ns 46697
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000 115524 ns 115520 ns 6033
BM_format_to_iterator/<std::array> string_view len = 6000 117 ns 117 ns 5982505
BM_format_to_iterator/<std::string> string_view len = 6000 105 ns 105 ns 6664752
BM_format_to_iterator/<std::vector> string_view len = 6000 105 ns 105 ns 6684043
BM_format_to_iterator/<std::deque> string_view len = 6000 256 ns 256 ns 2689843
Comparison
Benchmark Time CPU Time Old Time New CPU Old CPU New
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_sprintf/C string len = 6 -0.0037 -0.0051 4 4 4 4
BM_format/C string len = 6 -0.0022 -0.0037 50 49 50 49
BM_format_to_back_inserter<std::string>/C string len = 6 -0.0136 -0.0151 57 56 57 56
BM_format_to_back_inserter<std::vector<char>>/C string len = 6 +0.0408 +0.0392 73 76 73 76
BM_format_to_back_inserter<std::deque<char>>/C string len = 6 +0.0115 +0.0099 156 158 156 157
BM_format_to_back_inserter<std::list<char>>/C string len = 6 +0.0325 +0.0307 136 140 136 140
BM_format_to_iterator/<std::array> C string len = 6 -0.0153 -0.0167 47 46 47 46
BM_format_to_iterator/<std::string> C string len = 6 -0.0332 -0.0346 47 46 47 46
BM_format_to_iterator/<std::vector> C string len = 6 -0.0125 -0.0141 46 46 46 46
BM_format_to_iterator/<std::deque> C string len = 6 +0.0041 +0.0026 52 53 52 53
BM_format/string len = 6 -0.0170 -0.0185 50 49 50 49
BM_format_to_back_inserter<std::string>/string len = 6 -0.0092 -0.0106 56 55 56 55
BM_format_to_back_inserter<std::vector<char>>/string len = 6 +0.0153 +0.0138 73 74 73 74
BM_format_to_back_inserter<std::deque<char>>/string len = 6 +0.0392 +0.0371 155 161 154 160
BM_format_to_back_inserter<std::list<char>>/string len = 6 +0.0367 +0.0351 133 138 133 138
BM_format_to_iterator/<std::array> string len = 6 -0.0107 -0.0125 47 46 47 46
BM_format_to_iterator/<std::string> string len = 6 -0.0312 -0.0326 47 46 47 46
BM_format_to_iterator/<std::vector> string len = 6 -0.0103 -0.0144 46 46 46 46
BM_format_to_iterator/<std::deque> string len = 6 -0.0042 -0.0057 53 53 53 52
BM_format/string_view len = 6 -0.0191 -0.0206 49 48 49 48
BM_format_to_back_inserter<std::string>/string_view len = 6 -0.0283 -0.0298 56 55 56 54
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6 +0.0408 +0.0389 72 75 72 75
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6 +0.0214 +0.0199 153 157 153 156
BM_format_to_back_inserter<std::list<char>>/string_view len = 6 +0.0407 +0.0393 132 137 132 137
BM_format_to_iterator/<std::array> string_view len = 6 -0.0235 -0.0249 46 45 46 45
BM_format_to_iterator/<std::string> string_view len = 6 -0.0368 -0.0385 46 45 46 44
BM_format_to_iterator/<std::vector> string_view len = 6 -0.0293 -0.0308 46 45 46 45
BM_format_to_iterator/<std::deque> string_view len = 6 +0.0094 +0.0079 52 52 52 52
BM_sprintf/C string len = 60 -0.0004 -0.0018 5 5 5 5
BM_format/C string len = 60 +0.0250 +0.0232 64 65 64 65
BM_format_to_back_inserter<std::string>/C string len = 60 -0.0027 -0.0041 75 75 75 75
BM_format_to_back_inserter<std::vector<char>>/C string len = 60 +0.0228 +0.0233 89 91 89 91
BM_format_to_back_inserter<std::deque<char>>/C string len = 60 +0.0303 +0.0312 285 294 285 294
BM_format_to_back_inserter<std::list<char>>/C string len = 60 +0.0419 +0.0429 1164 1212 1163 1212
BM_format_to_iterator/<std::array> C string len = 60 -0.0154 -0.0145 46 46 46 46
BM_format_to_iterator/<std::string> C string len = 60 -0.0355 -0.0345 47 45 47 45
BM_format_to_iterator/<std::vector> C string len = 60 -0.0161 -0.0152 46 46 46 46
BM_format_to_iterator/<std::deque> C string len = 60 +0.0044 +0.0054 52 52 52 52
BM_format/string len = 60 +0.0268 +0.0278 62 64 62 64
BM_format_to_back_inserter<std::string>/string len = 60 -0.0031 -0.0022 75 74 75 74
BM_format_to_back_inserter<std::vector<char>>/string len = 60 +0.0183 +0.0191 87 88 86 88
BM_format_to_back_inserter<std::deque<char>>/string len = 60 +0.0567 +0.0578 279 295 279 295
BM_format_to_back_inserter<std::list<char>>/string len = 60 +0.0386 +0.0396 1167 1212 1165 1212
BM_format_to_iterator/<std::array> string len = 60 -0.0094 -0.0084 47 46 47 46
BM_format_to_iterator/<std::string> string len = 60 -0.0268 -0.0259 47 46 47 46
BM_format_to_iterator/<std::vector> string len = 60 -0.0082 -0.0073 46 46 46 46
BM_format_to_iterator/<std::deque> string len = 60 +0.0254 +0.0264 52 54 52 54
BM_format/string_view len = 60 -0.0084 -0.0075 62 62 62 62
BM_format_to_back_inserter<std::string>/string_view len = 60 -0.0001 +0.0008 74 74 74 74
BM_format_to_back_inserter<std::vector<char>>/string_view len = 60 +0.0145 +0.0154 86 88 86 88
BM_format_to_back_inserter<std::deque<char>>/string_view len = 60 +0.0411 +0.0420 279 291 279 291
BM_format_to_back_inserter<std::list<char>>/string_view len = 60 +0.0358 +0.0368 1164 1205 1163 1205
BM_format_to_iterator/<std::array> string_view len = 60 -0.0306 -0.0297 47 45 47 45
BM_format_to_iterator/<std::string> string_view len = 60 -0.0321 -0.0312 46 45 46 45
BM_format_to_iterator/<std::vector> string_view len = 60 -0.0320 -0.0311 46 45 46 45
BM_format_to_iterator/<std::deque> string_view len = 60 +0.0039 +0.0048 52 52 52 52
BM_sprintf/C string len = 6000 +0.4788 +0.4802 77 114 77 114
BM_format/C string len = 6000 -0.0087 -0.0078 345 342 345 342
BM_format_to_back_inserter<std::string>/C string len = 6000 +0.0104 +0.0114 1001 1011 1000 1011
BM_format_to_back_inserter<std::vector<char>>/C string len = 6000 +0.0195 +0.0206 972 991 971 991
BM_format_to_back_inserter<std::deque<char>>/C string len = 6000 -0.0092 -0.0082 15129 14990 15114 14990
BM_format_to_back_inserter<std::list<char>>/C string len = 6000 -0.0017 -0.0007 115290 115092 115167 115090
BM_format_to_iterator/<std::array> C string len = 6000 -0.0136 -0.0127 161 159 161 159
BM_format_to_iterator/<std::string> C string len = 6000 -0.0442 -0.0433 154 147 154 147
BM_format_to_iterator/<std::vector> C string len = 6000 -0.0148 -0.0139 150 148 150 148
BM_format_to_iterator/<std::deque> C string len = 6000 -0.3357 -0.3350 463 308 463 308
BM_format/string len = 6000 +0.0329 +0.0341 282 291 281 291
BM_format_to_back_inserter<std::string>/string len = 6000 +0.0289 +0.0299 941 968 940 968
BM_format_to_back_inserter<std::vector<char>>/string len = 6000 +0.0058 +0.0068 933 938 932 938
BM_format_to_back_inserter<std::deque<char>>/string len = 6000 -0.0053 -0.0043 15110 15029 15095 15030
BM_format_to_back_inserter<std::list<char>>/string len = 6000 +0.0041 +0.0065 115131 115601 114854 115597
BM_format_to_iterator/<std::array> string len = 6000 -0.0028 +0.0000 119 118 118 118
BM_format_to_iterator/<std::string> string len = 6000 -0.0214 -0.0190 108 105 107 105
BM_format_to_iterator/<std::vector> string len = 6000 -0.0125 -0.0100 107 105 107 105
BM_format_to_iterator/<std::deque> string len = 6000 -0.3286 -0.3269 395 265 394 265
BM_format/string_view len = 6000 +0.0084 +0.0110 282 284 281 284
BM_format_to_back_inserter<std::string>/string_view len = 6000 +0.0347 +0.0373 936 969 934 969
BM_format_to_back_inserter<std::vector<char>>/string_view len = 6000 +0.0148 +0.0173 925 938 922 938
BM_format_to_back_inserter<std::deque<char>>/string_view len = 6000 -0.0049 -0.0025 15072 14999 15036 14999
BM_format_to_back_inserter<std::list<char>>/string_view len = 6000 +0.0017 +0.0040 115332 115524 115059 115520
BM_format_to_iterator/<std::array> string_view len = 6000 -0.0174 -0.0147 119 117 119 117
BM_format_to_iterator/<std::string> string_view len = 6000 -0.0269 -0.0245 108 105 107 105
BM_format_to_iterator/<std::vector> string_view len = 6000 -0.0226 -0.0202 107 105 107 105
BM_format_to_iterator/<std::deque> string_view len = 6000 -0.3463 -0.3447 392 256 391 256
OVERALL_GEOMEAN -0.0089 -0.0087 0 0 0 0
format_to:
Before
--------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------------------
BM_format_to_string_back_inserter<std::string>/1 55.3 ns 55.2 ns 12600282 bytes_per_second=17.2841Mi/s
BM_format_to_string_back_inserter<std::string>/2 55.3 ns 55.2 ns 12711392 bytes_per_second=34.584Mi/s
BM_format_to_string_back_inserter<std::string>/4 55.3 ns 55.2 ns 12668346 bytes_per_second=69.1337Mi/s
BM_format_to_string_back_inserter<std::string>/8 55.0 ns 54.8 ns 12806254 bytes_per_second=139.148Mi/s
BM_format_to_string_back_inserter<std::string>/16 55.0 ns 54.9 ns 12771640 bytes_per_second=278.038Mi/s
BM_format_to_string_back_inserter<std::string>/32 74.3 ns 74.1 ns 9425332 bytes_per_second=411.691Mi/s
BM_format_to_string_back_inserter<std::string>/64 74.3 ns 74.1 ns 9467958 bytes_per_second=823.72Mi/s
BM_format_to_string_back_inserter<std::string>/128 75.6 ns 75.4 ns 9244814 bytes_per_second=1.58012Gi/s
BM_format_to_string_back_inserter<std::string>/256 90.4 ns 90.1 ns 7758708 bytes_per_second=2.64476Gi/s
BM_format_to_string_back_inserter<std::string>/512 136 ns 135 ns 5171079 bytes_per_second=3.52016Gi/s
BM_format_to_string_back_inserter<std::string>/1024 253 ns 252 ns 2766944 bytes_per_second=3.77704Gi/s
BM_format_to_string_back_inserter<std::string>/2048 410 ns 409 ns 1711155 bytes_per_second=4.66192Gi/s
BM_format_to_string_back_inserter<std::string>/4096 662 ns 660 ns 1063114 bytes_per_second=5.77795Gi/s
BM_format_to_string_back_inserter<std::string>/8192 1124 ns 1121 ns 626215 bytes_per_second=6.80694Gi/s
BM_format_to_string_back_inserter<std::string>/16384 2228 ns 2222 ns 315523 bytes_per_second=6.86706Gi/s
BM_format_to_string_back_inserter<std::string>/32768 4795 ns 4783 ns 146357 bytes_per_second=6.38068Gi/s
BM_format_to_string_back_inserter<std::string>/65536 8433 ns 8412 ns 83268 bytes_per_second=7.25532Gi/s
BM_format_to_string_back_inserter<std::string>/131072 44973 ns 44732 ns 15650 bytes_per_second=2.7289Gi/s
BM_format_to_string_back_inserter<std::string>/262144 134871 ns 134517 ns 5205 bytes_per_second=1.81495Gi/s
BM_format_to_string_back_inserter<std::string>/524288 316669 ns 316613 ns 2208 bytes_per_second=1.5422Gi/s
BM_format_to_string_back_inserter<std::string>/1048576 677580 ns 677582 ns 1036 bytes_per_second=1.44125Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1 69.9 ns 69.9 ns 9994480 bytes_per_second=13.6348Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/2 70.1 ns 70.1 ns 9995724 bytes_per_second=27.2205Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/4 71.3 ns 71.3 ns 9850375 bytes_per_second=53.5283Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/8 73.8 ns 73.8 ns 9486647 bytes_per_second=103.44Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/16 78.7 ns 78.7 ns 8873541 bytes_per_second=193.765Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/32 88.7 ns 88.7 ns 7913676 bytes_per_second=344.039Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/64 90.2 ns 90.2 ns 7740112 bytes_per_second=676.676Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/128 92.2 ns 92.2 ns 7569110 bytes_per_second=1.29352Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/256 106 ns 106 ns 6612544 bytes_per_second=2.25002Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/512 163 ns 163 ns 4299613 bytes_per_second=2.9327Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1024 240 ns 240 ns 2919691 bytes_per_second=3.98065Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/2048 400 ns 400 ns 1749907 bytes_per_second=4.76489Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/4096 635 ns 635 ns 1101669 bytes_per_second=6.00718Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/8192 1064 ns 1064 ns 655668 bytes_per_second=7.17313Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/16384 1986 ns 1986 ns 352665 bytes_per_second=7.68268Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/32768 3834 ns 3835 ns 182295 bytes_per_second=7.95861Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/65536 7388 ns 7388 ns 94038 bytes_per_second=8.26153Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/131072 17454 ns 17454 ns 40109 bytes_per_second=6.99363Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/262144 36133 ns 36133 ns 19353 bytes_per_second=6.75666Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/524288 73310 ns 73310 ns 9556 bytes_per_second=6.66053Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1048576 145001 ns 144996 ns 4828 bytes_per_second=6.73509Gi/s
BM_format_to_string_back_inserter<std::list<char>>/1 62.9 ns 62.9 ns 11119088 bytes_per_second=15.1622Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2 76.0 ns 76.0 ns 9212976 bytes_per_second=25.0904Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4 103 ns 103 ns 6740929 bytes_per_second=36.8618Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8 171 ns 171 ns 4096894 bytes_per_second=44.6147Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16 324 ns 324 ns 2147006 bytes_per_second=47.0328Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32 638 ns 638 ns 1096597 bytes_per_second=47.799Mi/s
BM_format_to_string_back_inserter<std::list<char>>/64 1230 ns 1230 ns 570396 bytes_per_second=49.6318Mi/s
BM_format_to_string_back_inserter<std::list<char>>/128 2427 ns 2427 ns 289550 bytes_per_second=50.306Mi/s
BM_format_to_string_back_inserter<std::list<char>>/256 4847 ns 4847 ns 144614 bytes_per_second=50.3648Mi/s
BM_format_to_string_back_inserter<std::list<char>>/512 9656 ns 9656 ns 72476 bytes_per_second=50.5676Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1024 19415 ns 19416 ns 35934 bytes_per_second=50.298Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2048 38927 ns 38928 ns 17986 bytes_per_second=50.173Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4096 78062 ns 78064 ns 8967 bytes_per_second=50.0392Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8192 156624 ns 156628 ns 4464 bytes_per_second=49.8795Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16384 313781 ns 313788 ns 2232 bytes_per_second=49.7948Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32768 626674 ns 626667 ns 1112 bytes_per_second=49.867Mi/s
BM_format_to_string_back_inserter<std::list<char>>/65536 1248918 ns 1248933 ns 558 bytes_per_second=50.0427Mi/s
BM_format_to_string_back_inserter<std::list<char>>/131072 2512031 ns 2511949 ns 277 bytes_per_second=49.7622Mi/s
BM_format_to_string_back_inserter<std::list<char>>/262144 5118786 ns 5118308 ns 126 bytes_per_second=48.8443Mi/s
BM_format_to_string_back_inserter<std::list<char>>/524288 10395742 ns 10395288 ns 63 bytes_per_second=48.0987Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1048576 21110172 ns 21110073 ns 31 bytes_per_second=47.3708Mi/s
BM_format_to_string_begin<std::string>/1 47.0 ns 47.0 ns 14928464 bytes_per_second=20.2942Mi/s
BM_format_to_string_begin<std::string>/2 47.0 ns 47.0 ns 14889677 bytes_per_second=40.5641Mi/s
BM_format_to_string_begin<std::string>/4 47.1 ns 47.1 ns 14877893 bytes_per_second=81.0735Mi/s
BM_format_to_string_begin<std::string>/8 47.0 ns 47.0 ns 14855791 bytes_per_second=162.307Mi/s
BM_format_to_string_begin<std::string>/16 47.1 ns 47.1 ns 14867291 bytes_per_second=324.274Mi/s
BM_format_to_string_begin<std::string>/32 47.0 ns 47.0 ns 14863938 bytes_per_second=649.013Mi/s
BM_format_to_string_begin<std::string>/64 46.5 ns 46.5 ns 14004459 bytes_per_second=1.28171Gi/s
BM_format_to_string_begin<std::string>/128 47.1 ns 47.1 ns 14831108 bytes_per_second=2.53299Gi/s
BM_format_to_string_begin<std::string>/256 51.6 ns 51.6 ns 13604783 bytes_per_second=4.62228Gi/s
BM_format_to_string_begin<std::string>/512 50.0 ns 50.0 ns 13980138 bytes_per_second=9.53155Gi/s
BM_format_to_string_begin<std::string>/1024 59.2 ns 59.2 ns 11872452 bytes_per_second=16.1221Gi/s
BM_format_to_string_begin<std::string>/2048 69.0 ns 69.0 ns 10128771 bytes_per_second=27.6377Gi/s
BM_format_to_string_begin<std::string>/4096 100 ns 100 ns 6963452 bytes_per_second=38.0663Gi/s
BM_format_to_string_begin<std::string>/8192 151 ns 151 ns 4635381 bytes_per_second=50.5416Gi/s
BM_format_to_string_begin<std::string>/16384 314 ns 314 ns 2233442 bytes_per_second=48.5983Gi/s
BM_format_to_string_begin<std::string>/32768 1336 ns 1336 ns 524989 bytes_per_second=22.8492Gi/s
BM_format_to_string_begin<std::string>/65536 3763 ns 3763 ns 185762 bytes_per_second=16.2188Gi/s
BM_format_to_string_begin<std::string>/131072 6556 ns 6556 ns 106616 bytes_per_second=18.6207Gi/s
BM_format_to_string_begin<std::string>/262144 13979 ns 13979 ns 50149 bytes_per_second=17.4643Gi/s
BM_format_to_string_begin<std::string>/524288 28719 ns 28719 ns 24379 bytes_per_second=17.0019Gi/s
BM_format_to_string_begin<std::string>/1048576 57299 ns 57299 ns 12180 bytes_per_second=17.0432Gi/s
BM_format_to_string_begin<std::vector<char>>/1 46.1 ns 46.1 ns 15188343 bytes_per_second=20.6809Mi/s
BM_format_to_string_begin<std::vector<char>>/2 46.1 ns 46.1 ns 15158904 bytes_per_second=41.3318Mi/s
BM_format_to_string_begin<std::vector<char>>/4 46.1 ns 46.1 ns 15170378 bytes_per_second=82.6776Mi/s
BM_format_to_string_begin<std::vector<char>>/8 45.7 ns 45.7 ns 15315671 bytes_per_second=167.026Mi/s
BM_format_to_string_begin<std::vector<char>>/16 46.2 ns 46.2 ns 15163881 bytes_per_second=330.559Mi/s
BM_format_to_string_begin<std::vector<char>>/32 46.1 ns 46.1 ns 15201091 bytes_per_second=661.98Mi/s
BM_format_to_string_begin<std::vector<char>>/64 46.2 ns 46.2 ns 14183997 bytes_per_second=1.28927Gi/s
BM_format_to_string_begin<std::vector<char>>/128 46.7 ns 46.7 ns 14987395 bytes_per_second=2.55007Gi/s
BM_format_to_string_begin<std::vector<char>>/256 51.3 ns 51.3 ns 13898949 bytes_per_second=4.64462Gi/s
BM_format_to_string_begin<std::vector<char>>/512 50.1 ns 50.1 ns 10000000 bytes_per_second=9.52165Gi/s
BM_format_to_string_begin<std::vector<char>>/1024 59.2 ns 59.2 ns 11805042 bytes_per_second=16.105Gi/s
BM_format_to_string_begin<std::vector<char>>/2048 69.0 ns 69.0 ns 10139614 bytes_per_second=27.6266Gi/s
BM_format_to_string_begin<std::vector<char>>/4096 97.6 ns 97.6 ns 7179535 bytes_per_second=39.0938Gi/s
BM_format_to_string_begin<std::vector<char>>/8192 152 ns 152 ns 4610486 bytes_per_second=50.227Gi/s
BM_format_to_string_begin<std::vector<char>>/16384 314 ns 314 ns 2230251 bytes_per_second=48.5946Gi/s
BM_format_to_string_begin<std::vector<char>>/32768 1333 ns 1333 ns 525550 bytes_per_second=22.8868Gi/s
BM_format_to_string_begin<std::vector<char>>/65536 3760 ns 3760 ns 185821 bytes_per_second=16.2322Gi/s
BM_format_to_string_begin<std::vector<char>>/131072 6479 ns 6480 ns 107960 bytes_per_second=18.8391Gi/s
BM_format_to_string_begin<std::vector<char>>/262144 14164 ns 14164 ns 49862 bytes_per_second=17.2368Gi/s
BM_format_to_string_begin<std::vector<char>>/524288 28916 ns 28916 ns 24149 bytes_per_second=16.8861Gi/s
BM_format_to_string_begin<std::vector<char>>/1048576 57621 ns 57622 ns 12140 bytes_per_second=16.9478Gi/s
BM_format_to_string_begin<std::list<char>>/1 47.6 ns 47.6 ns 14675857 bytes_per_second=20.0271Mi/s
BM_format_to_string_begin<std::list<char>>/2 48.8 ns 48.8 ns 14331930 bytes_per_second=39.1155Mi/s
BM_format_to_string_begin<std::list<char>>/4 50.9 ns 50.9 ns 13747606 bytes_per_second=74.9309Mi/s
BM_format_to_string_begin<std::list<char>>/8 63.4 ns 63.4 ns 11065440 bytes_per_second=120.329Mi/s
BM_format_to_string_begin<std::list<char>>/16 82.4 ns 82.4 ns 8510480 bytes_per_second=185.222Mi/s
BM_format_to_string_begin<std::list<char>>/32 126 ns 126 ns 5564932 bytes_per_second=242.653Mi/s
BM_format_to_string_begin<std::list<char>>/64 211 ns 211 ns 3311820 bytes_per_second=289.214Mi/s
BM_format_to_string_begin<std::list<char>>/128 384 ns 384 ns 1825012 bytes_per_second=318.238Mi/s
BM_format_to_string_begin<std::list<char>>/256 735 ns 735 ns 951285 bytes_per_second=332.108Mi/s
BM_format_to_string_begin<std::list<char>>/512 1428 ns 1428 ns 489437 bytes_per_second=341.969Mi/s
BM_format_to_string_begin<std::list<char>>/1024 2792 ns 2792 ns 242406 bytes_per_second=349.822Mi/s
BM_format_to_string_begin<std::list<char>>/2048 5594 ns 5594 ns 124188 bytes_per_second=349.129Mi/s
BM_format_to_string_begin<std::list<char>>/4096 11163 ns 11163 ns 62794 bytes_per_second=349.936Mi/s
BM_format_to_string_begin<std::list<char>>/8192 22339 ns 22339 ns 31335 bytes_per_second=349.718Mi/s
BM_format_to_string_begin<std::list<char>>/16384 44673 ns 44674 ns 15675 bytes_per_second=349.754Mi/s
BM_format_to_string_begin<std::list<char>>/32768 89015 ns 89016 ns 7849 bytes_per_second=351.06Mi/s
BM_format_to_string_begin<std::list<char>>/65536 177988 ns 177989 ns 3938 bytes_per_second=351.145Mi/s
BM_format_to_string_begin<std::list<char>>/131072 362715 ns 362697 ns 1933 bytes_per_second=344.64Mi/s
BM_format_to_string_begin<std::list<char>>/262144 846730 ns 846685 ns 825 bytes_per_second=295.269Mi/s
BM_format_to_string_begin<std::list<char>>/524288 2018755 ns 2018721 ns 347 bytes_per_second=247.682Mi/s
BM_format_to_string_begin<std::list<char>>/1048576 4225251 ns 4225188 ns 165 bytes_per_second=236.676Mi/s
BM_format_to_string_span<char>/1 46.2 ns 46.2 ns 15156896 bytes_per_second=20.6258Mi/s
BM_format_to_string_span<char>/2 46.3 ns 46.3 ns 15114242 bytes_per_second=41.1559Mi/s
BM_format_to_string_span<char>/4 46.4 ns 46.4 ns 15089475 bytes_per_second=82.1686Mi/s
BM_format_to_string_span<char>/8 45.9 ns 45.9 ns 15249334 bytes_per_second=166.143Mi/s
BM_format_to_string_span<char>/16 46.3 ns 46.3 ns 15087074 bytes_per_second=329.233Mi/s
BM_format_to_string_span<char>/32 46.4 ns 46.4 ns 15099464 bytes_per_second=657.611Mi/s
BM_format_to_string_span<char>/64 46.4 ns 46.4 ns 14101746 bytes_per_second=1.2849Gi/s
BM_format_to_string_span<char>/128 47.0 ns 47.0 ns 14919410 bytes_per_second=2.53769Gi/s
BM_format_to_string_span<char>/256 50.8 ns 50.8 ns 13874090 bytes_per_second=4.69274Gi/s
BM_format_to_string_span<char>/512 50.5 ns 50.5 ns 13849265 bytes_per_second=9.44604Gi/s
BM_format_to_string_span<char>/1024 59.6 ns 59.6 ns 11774716 bytes_per_second=16.008Gi/s
BM_format_to_string_span<char>/2048 69.3 ns 69.3 ns 10102354 bytes_per_second=27.5137Gi/s
BM_format_to_string_span<char>/4096 98.0 ns 98.0 ns 7137947 bytes_per_second=38.9144Gi/s
BM_format_to_string_span<char>/8192 153 ns 153 ns 4585057 bytes_per_second=49.9901Gi/s
BM_format_to_string_span<char>/16384 316 ns 316 ns 2225896 bytes_per_second=48.3398Gi/s
BM_format_to_string_span<char>/32768 1339 ns 1339 ns 520365 bytes_per_second=22.7872Gi/s
BM_format_to_string_span<char>/65536 3780 ns 3780 ns 184720 bytes_per_second=16.1474Gi/s
BM_format_to_string_span<char>/131072 6557 ns 6557 ns 106444 bytes_per_second=18.6157Gi/s
BM_format_to_string_span<char>/262144 14199 ns 14199 ns 49363 bytes_per_second=17.1939Gi/s
BM_format_to_string_span<char>/524288 28833 ns 28834 ns 24254 bytes_per_second=16.9343Gi/s
BM_format_to_string_span<char>/1048576 57660 ns 57660 ns 12166 bytes_per_second=16.9365Gi/s
BM_format_to_string_pointer<char>/1 46.4 ns 46.4 ns 15070582 bytes_per_second=20.5355Mi/s
BM_format_to_string_pointer<char>/2 46.5 ns 46.5 ns 15064611 bytes_per_second=41.0239Mi/s
BM_format_to_string_pointer<char>/4 46.4 ns 46.4 ns 15080092 bytes_per_second=82.1674Mi/s
BM_format_to_string_pointer<char>/8 45.9 ns 45.9 ns 15239465 bytes_per_second=166.094Mi/s
BM_format_to_string_pointer<char>/16 46.4 ns 46.4 ns 15077440 bytes_per_second=328.884Mi/s
BM_format_to_string_pointer<char>/32 46.4 ns 46.4 ns 15070278 bytes_per_second=657.438Mi/s
BM_format_to_string_pointer<char>/64 46.4 ns 46.4 ns 14094814 bytes_per_second=1.28358Gi/s
BM_format_to_string_pointer<char>/128 46.8 ns 46.8 ns 14894522 bytes_per_second=2.54466Gi/s
BM_format_to_string_pointer<char>/256 51.2 ns 51.2 ns 13908865 bytes_per_second=4.65713Gi/s
BM_format_to_string_pointer<char>/512 50.2 ns 50.2 ns 13999036 bytes_per_second=9.5049Gi/s
BM_format_to_string_pointer<char>/1024 59.4 ns 59.4 ns 11805502 bytes_per_second=16.0611Gi/s
BM_format_to_string_pointer<char>/2048 69.1 ns 69.1 ns 10114415 bytes_per_second=27.5936Gi/s
BM_format_to_string_pointer<char>/4096 97.6 ns 97.6 ns 7154104 bytes_per_second=39.0914Gi/s
BM_format_to_string_pointer<char>/8192 151 ns 151 ns 4653492 bytes_per_second=50.6101Gi/s
BM_format_to_string_pointer<char>/16384 314 ns 314 ns 2222259 bytes_per_second=48.6129Gi/s
BM_format_to_string_pointer<char>/32768 1336 ns 1336 ns 524528 bytes_per_second=22.8497Gi/s
BM_format_to_string_pointer<char>/65536 3759 ns 3759 ns 185462 bytes_per_second=16.2357Gi/s
BM_format_to_string_pointer<char>/131072 6538 ns 6537 ns 106885 bytes_per_second=18.6728Gi/s
BM_format_to_string_pointer<char>/262144 14087 ns 14087 ns 49626 bytes_per_second=17.3304Gi/s
BM_format_to_string_pointer<char>/524288 28681 ns 28681 ns 24379 bytes_per_second=17.0248Gi/s
BM_format_to_string_pointer<char>/1048576 57528 ns 57529 ns 12227 bytes_per_second=16.9753Gi/s
BM_format_to_string_back_inserter<std::wstring>/1 54.3 ns 54.3 ns 12869648 bytes_per_second=70.2204Mi/s
BM_format_to_string_back_inserter<std::wstring>/2 54.4 ns 54.4 ns 12867459 bytes_per_second=140.262Mi/s
BM_format_to_string_back_inserter<std::wstring>/4 54.3 ns 54.3 ns 12872545 bytes_per_second=281.006Mi/s
BM_format_to_string_back_inserter<std::wstring>/8 75.5 ns 75.5 ns 9299734 bytes_per_second=404.319Mi/s
BM_format_to_string_back_inserter<std::wstring>/16 75.7 ns 75.7 ns 9250422 bytes_per_second=806.724Mi/s
BM_format_to_string_back_inserter<std::wstring>/32 77.2 ns 77.2 ns 9055549 bytes_per_second=1.54468Gi/s
BM_format_to_string_back_inserter<std::wstring>/64 89.8 ns 89.8 ns 7807327 bytes_per_second=2.65577Gi/s
BM_format_to_string_back_inserter<std::wstring>/128 137 ns 137 ns 5098880 bytes_per_second=3.47031Gi/s
BM_format_to_string_back_inserter<std::wstring>/256 248 ns 248 ns 2826115 bytes_per_second=3.85063Gi/s
BM_format_to_string_back_inserter<std::wstring>/512 403 ns 403 ns 1736395 bytes_per_second=4.72998Gi/s
BM_format_to_string_back_inserter<std::wstring>/1024 640 ns 640 ns 1094838 bytes_per_second=5.95878Gi/s
BM_format_to_string_back_inserter<std::wstring>/2048 1091 ns 1091 ns 640668 bytes_per_second=6.99457Gi/s
BM_format_to_string_back_inserter<std::wstring>/4096 2174 ns 2174 ns 322224 bytes_per_second=7.01864Gi/s
BM_format_to_string_back_inserter<std::wstring>/8192 4557 ns 4557 ns 153328 bytes_per_second=6.69681Gi/s
BM_format_to_string_back_inserter<std::wstring>/16384 8636 ns 8636 ns 81139 bytes_per_second=7.06717Gi/s
BM_format_to_string_back_inserter<std::wstring>/32768 19780 ns 19780 ns 35336 bytes_per_second=6.17141Gi/s
BM_format_to_string_back_inserter<std::wstring>/65536 43104 ns 43103 ns 16273 bytes_per_second=5.66406Gi/s
BM_format_to_string_back_inserter<std::wstring>/131072 89918 ns 89919 ns 7768 bytes_per_second=5.43021Gi/s
BM_format_to_string_back_inserter<std::wstring>/262144 681804 ns 681826 ns 1024 bytes_per_second=1.43228Gi/s
BM_format_to_string_back_inserter<std::wstring>/524288 1478856 ns 1478765 ns 473 bytes_per_second=1.32078Gi/s
BM_format_to_string_back_inserter<std::wstring>/1048576 2840508 ns 2840412 ns 246 bytes_per_second=1.37524Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1 68.5 ns 68.5 ns 10223705 bytes_per_second=55.6912Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2 68.6 ns 68.6 ns 10201348 bytes_per_second=111.156Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4 70.9 ns 70.9 ns 9862572 bytes_per_second=215.354Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8 74.0 ns 74.0 ns 9451942 bytes_per_second=412.501Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16 81.3 ns 81.3 ns 8532932 bytes_per_second=751.16Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32 88.8 ns 88.8 ns 7891710 bytes_per_second=1.34179Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/64 126 ns 126 ns 5575610 bytes_per_second=1.89895Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/128 199 ns 199 ns 3505605 bytes_per_second=2.39111Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/256 293 ns 293 ns 2389141 bytes_per_second=3.25591Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/512 468 ns 468 ns 1493575 bytes_per_second=4.07284Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1024 701 ns 701 ns 998453 bytes_per_second=5.44024Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2048 1138 ns 1138 ns 617167 bytes_per_second=6.70671Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4096 2060 ns 2060 ns 340010 bytes_per_second=7.40872Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8192 3858 ns 3858 ns 181166 bytes_per_second=7.90994Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16384 7401 ns 7401 ns 94453 bytes_per_second=8.24654Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32768 17462 ns 17462 ns 40112 bytes_per_second=6.99062Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/65536 36165 ns 36166 ns 19349 bytes_per_second=6.75053Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/131072 72945 ns 72947 ns 9617 bytes_per_second=6.69361Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/262144 142931 ns 142930 ns 4903 bytes_per_second=6.83246Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/524288 336502 ns 336501 ns 2081 bytes_per_second=5.80422Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1048576 962003 ns 961961 ns 714 bytes_per_second=4.06072Gi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1 61.4 ns 61.4 ns 11413917 bytes_per_second=62.1089Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/2 76.9 ns 76.9 ns 9050279 bytes_per_second=99.1771Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/4 111 ns 111 ns 6278973 bytes_per_second=137.261Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/8 179 ns 179 ns 3915106 bytes_per_second=170.439Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/16 336 ns 336 ns 2087463 bytes_per_second=181.661Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/32 650 ns 650 ns 1065880 bytes_per_second=187.814Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/64 1272 ns 1272 ns 549372 bytes_per_second=191.923Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/128 2487 ns 2487 ns 281680 bytes_per_second=196.314Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/256 4964 ns 4964 ns 141195 bytes_per_second=196.723Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/512 9837 ns 9837 ns 71145 bytes_per_second=198.553Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1024 19842 ns 19842 ns 35289 bytes_per_second=196.87Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/2048 39731 ns 39730 ns 17616 bytes_per_second=196.639Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/4096 79592 ns 79593 ns 8776 bytes_per_second=196.31Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/8192 159493 ns 159495 ns 4394 bytes_per_second=195.93Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/16384 317842 ns 317840 ns 2205 bytes_per_second=196.64Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/32768 634422 ns 634434 ns 1097 bytes_per_second=197.026Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/65536 1271414 ns 1271449 ns 548 bytes_per_second=196.626Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/131072 2553515 ns 2553543 ns 273 bytes_per_second=195.806Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/262144 5225959 ns 5225902 ns 124 bytes_per_second=191.355Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/524288 10623331 ns 10622433 ns 61 bytes_per_second=188.281Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1048576 21606244 ns 21606044 ns 31 bytes_per_second=185.133Mi/s
BM_format_to_string_begin<std::wstring>/1 45.5 ns 45.5 ns 15441091 bytes_per_second=83.9024Mi/s
BM_format_to_string_begin<std::wstring>/2 45.5 ns 45.5 ns 15397107 bytes_per_second=167.71Mi/s
BM_format_to_string_begin<std::wstring>/4 45.5 ns 45.5 ns 15401917 bytes_per_second=335.622Mi/s
BM_format_to_string_begin<std::wstring>/8 45.5 ns 45.5 ns 15383295 bytes_per_second=671.319Mi/s
BM_format_to_string_begin<std::wstring>/16 45.5 ns 45.5 ns 14420804 bytes_per_second=1.31019Gi/s
BM_format_to_string_begin<std::wstring>/32 46.1 ns 46.1 ns 15219075 bytes_per_second=2.58554Gi/s
BM_format_to_string_begin<std::wstring>/64 48.9 ns 48.9 ns 14295070 bytes_per_second=4.87739Gi/s
BM_format_to_string_begin<std::wstring>/128 49.9 ns 49.9 ns 14037943 bytes_per_second=9.54779Gi/s
BM_format_to_string_begin<std::wstring>/256 54.4 ns 54.4 ns 12874278 bytes_per_second=17.5196Gi/s
BM_format_to_string_begin<std::wstring>/512 65.1 ns 65.1 ns 10754308 bytes_per_second=29.2923Gi/s
BM_format_to_string_begin<std::wstring>/1024 93.7 ns 93.7 ns 7477344 bytes_per_second=40.7095Gi/s
BM_format_to_string_begin<std::wstring>/2048 148 ns 148 ns 4740067 bytes_per_second=51.6162Gi/s
BM_format_to_string_begin<std::wstring>/4096 317 ns 317 ns 2201236 bytes_per_second=48.1154Gi/s
BM_format_to_string_begin<std::wstring>/8192 1338 ns 1338 ns 521312 bytes_per_second=22.8053Gi/s
BM_format_to_string_begin<std::wstring>/16384 3910 ns 3910 ns 179370 bytes_per_second=15.6115Gi/s
BM_format_to_string_begin<std::wstring>/32768 7066 ns 7066 ns 98872 bytes_per_second=17.2764Gi/s
BM_format_to_string_begin<std::wstring>/65536 14908 ns 14908 ns 47055 bytes_per_second=16.3764Gi/s
BM_format_to_string_begin<std::wstring>/131072 32636 ns 32636 ns 21371 bytes_per_second=14.9616Gi/s
BM_format_to_string_begin<std::wstring>/262144 60037 ns 60037 ns 11586 bytes_per_second=16.2661Gi/s
BM_format_to_string_begin<std::wstring>/524288 116806 ns 116808 ns 5988 bytes_per_second=16.7209Gi/s
BM_format_to_string_begin<std::wstring>/1048576 247097 ns 247089 ns 2829 bytes_per_second=15.8091Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1 44.5 ns 44.5 ns 15715279 bytes_per_second=85.8146Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/2 44.5 ns 44.5 ns 15767209 bytes_per_second=171.549Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/4 44.5 ns 44.5 ns 15751321 bytes_per_second=343.037Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/8 44.4 ns 44.4 ns 15767406 bytes_per_second=687.57Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/16 44.6 ns 44.6 ns 14528930 bytes_per_second=1.3365Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/32 45.2 ns 45.2 ns 15485958 bytes_per_second=2.63519Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/64 51.9 ns 51.9 ns 13492663 bytes_per_second=4.59426Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/128 49.1 ns 49.1 ns 14249935 bytes_per_second=9.71722Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/256 54.5 ns 54.5 ns 12851483 bytes_per_second=17.4989Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/512 64.3 ns 64.3 ns 10899647 bytes_per_second=29.6783Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1024 93.8 ns 93.8 ns 7466466 bytes_per_second=40.682Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/2048 148 ns 148 ns 4742068 bytes_per_second=51.6486Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/4096 319 ns 319 ns 2195494 bytes_per_second=47.8887Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/8192 1340 ns 1340 ns 522769 bytes_per_second=22.7802Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/16384 3978 ns 3978 ns 176216 bytes_per_second=15.3416Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/32768 6980 ns 6980 ns 99513 bytes_per_second=17.4884Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/65536 14353 ns 14353 ns 48818 bytes_per_second=17.0098Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/131072 31866 ns 31866 ns 21957 bytes_per_second=15.3229Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/262144 58559 ns 58559 ns 11988 bytes_per_second=16.6765Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/524288 117130 ns 117127 ns 5976 bytes_per_second=16.6752Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1048576 247971 ns 247961 ns 2820 bytes_per_second=15.7535Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/1 45.7 ns 45.7 ns 15314802 bytes_per_second=83.4396Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/2 46.9 ns 46.9 ns 14929862 bytes_per_second=162.749Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/4 48.4 ns 48.4 ns 14465135 bytes_per_second=315.113Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/8 61.5 ns 61.5 ns 11210175 bytes_per_second=495.818Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/16 80.9 ns 80.9 ns 8650119 bytes_per_second=754.522Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/32 125 ns 125 ns 5618285 bytes_per_second=979.747Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/64 214 ns 214 ns 3275402 bytes_per_second=1.11499Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/128 385 ns 385 ns 1819548 bytes_per_second=1.23843Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/256 730 ns 730 ns 959436 bytes_per_second=1.3067Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/512 1425 ns 1425 ns 490178 bytes_per_second=1.33841Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/1024 2815 ns 2815 ns 248998 bytes_per_second=1.35522Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/2048 5614 ns 5614 ns 124846 bytes_per_second=1.35901Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/4096 11194 ns 11193 ns 62639 bytes_per_second=1.3632Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/8192 22330 ns 22330 ns 31340 bytes_per_second=1.36665Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/16384 44550 ns 44551 ns 15717 bytes_per_second=1.37001Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/32768 88796 ns 88797 ns 7870 bytes_per_second=1.37471Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/65536 177926 ns 177928 ns 3942 bytes_per_second=1.37213Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/131072 367815 ns 367803 ns 1902 bytes_per_second=1.32756Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/262144 891361 ns 891325 ns 777 bytes_per_second=1.09563Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/524288 2131461 ns 2131391 ns 329 bytes_per_second=938.354Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/1048576 4429706 ns 4429516 ns 158 bytes_per_second=903.033Mi/s
BM_format_to_string_span<wchar_t>/1 44.6 ns 44.6 ns 15686342 bytes_per_second=85.4458Mi/s
BM_format_to_string_span<wchar_t>/2 44.5 ns 44.5 ns 15697054 bytes_per_second=171.361Mi/s
BM_format_to_string_span<wchar_t>/4 44.5 ns 44.5 ns 15697240 bytes_per_second=342.668Mi/s
BM_format_to_string_span<wchar_t>/8 44.5 ns 44.5 ns 15677749 bytes_per_second=685.739Mi/s
BM_format_to_string_span<wchar_t>/16 44.6 ns 44.6 ns 14716002 bytes_per_second=1.33557Gi/s
BM_format_to_string_span<wchar_t>/32 45.2 ns 45.2 ns 15472092 bytes_per_second=2.63565Gi/s
BM_format_to_string_span<wchar_t>/64 48.2 ns 48.2 ns 14524180 bytes_per_second=4.94487Gi/s
BM_format_to_string_span<wchar_t>/128 49.1 ns 49.1 ns 14264103 bytes_per_second=9.7111Gi/s
BM_format_to_string_span<wchar_t>/256 54.5 ns 54.5 ns 12828788 bytes_per_second=17.4966Gi/s
BM_format_to_string_span<wchar_t>/512 64.2 ns 64.2 ns 10904613 bytes_per_second=29.7212Gi/s
BM_format_to_string_span<wchar_t>/1024 93.5 ns 93.5 ns 7471189 bytes_per_second=40.7777Gi/s
BM_format_to_string_span<wchar_t>/2048 147 ns 147 ns 4771116 bytes_per_second=51.9904Gi/s
BM_format_to_string_span<wchar_t>/4096 316 ns 316 ns 2217774 bytes_per_second=48.2813Gi/s
BM_format_to_string_span<wchar_t>/8192 1334 ns 1334 ns 524155 bytes_per_second=22.8755Gi/s
BM_format_to_string_span<wchar_t>/16384 3889 ns 3890 ns 180011 bytes_per_second=15.6921Gi/s
BM_format_to_string_span<wchar_t>/32768 7045 ns 7045 ns 98892 bytes_per_second=17.3263Gi/s
BM_format_to_string_span<wchar_t>/65536 14812 ns 14813 ns 47101 bytes_per_second=16.4819Gi/s
BM_format_to_string_span<wchar_t>/131072 30052 ns 30052 ns 23308 bytes_per_second=16.2478Gi/s
BM_format_to_string_span<wchar_t>/262144 60795 ns 60796 ns 11510 bytes_per_second=16.0629Gi/s
BM_format_to_string_span<wchar_t>/524288 116559 ns 116557 ns 6004 bytes_per_second=16.7568Gi/s
BM_format_to_string_span<wchar_t>/1048576 243495 ns 243492 ns 2871 bytes_per_second=16.0426Gi/s
BM_format_to_string_pointer<wchar_t>/1 44.5 ns 44.5 ns 15762019 bytes_per_second=85.7394Mi/s
BM_format_to_string_pointer<wchar_t>/2 44.6 ns 44.6 ns 15709713 bytes_per_second=171.156Mi/s
BM_format_to_string_pointer<wchar_t>/4 44.6 ns 44.6 ns 15691304 bytes_per_second=342.152Mi/s
BM_format_to_string_pointer<wchar_t>/8 44.6 ns 44.6 ns 15697157 bytes_per_second=683.525Mi/s
BM_format_to_string_pointer<wchar_t>/16 44.7 ns 44.7 ns 14689424 bytes_per_second=1.33417Gi/s
BM_format_to_string_pointer<wchar_t>/32 45.3 ns 45.3 ns 15502552 bytes_per_second=2.63424Gi/s
BM_format_to_string_pointer<wchar_t>/64 48.2 ns 48.2 ns 14515085 bytes_per_second=4.94573Gi/s
BM_format_to_string_pointer<wchar_t>/128 49.1 ns 49.1 ns 14261932 bytes_per_second=9.70798Gi/s
BM_format_to_string_pointer<wchar_t>/256 54.4 ns 54.4 ns 12841110 bytes_per_second=17.5193Gi/s
BM_format_to_string_pointer<wchar_t>/512 64.3 ns 64.3 ns 10893107 bytes_per_second=29.6433Gi/s
BM_format_to_string_pointer<wchar_t>/1024 93.9 ns 93.9 ns 7455764 bytes_per_second=40.6154Gi/s
BM_format_to_string_pointer<wchar_t>/2048 147 ns 147 ns 4762265 bytes_per_second=51.9165Gi/s
BM_format_to_string_pointer<wchar_t>/4096 317 ns 317 ns 2199930 bytes_per_second=48.0748Gi/s
BM_format_to_string_pointer<wchar_t>/8192 1338 ns 1338 ns 522096 bytes_per_second=22.8025Gi/s
BM_format_to_string_pointer<wchar_t>/16384 3904 ns 3904 ns 179598 bytes_per_second=15.6357Gi/s
BM_format_to_string_pointer<wchar_t>/32768 7079 ns 7079 ns 98891 bytes_per_second=17.2433Gi/s
BM_format_to_string_pointer<wchar_t>/65536 14890 ns 14890 ns 47024 bytes_per_second=16.3961Gi/s
BM_format_to_string_pointer<wchar_t>/131072 30190 ns 30190 ns 23173 bytes_per_second=16.1736Gi/s
BM_format_to_string_pointer<wchar_t>/262144 61132 ns 61131 ns 11451 bytes_per_second=15.9749Gi/s
BM_format_to_string_pointer<wchar_t>/524288 117069 ns 117071 ns 5974 bytes_per_second=16.6832Gi/s
BM_format_to_string_pointer<wchar_t>/1048576 244917 ns 244915 ns 2854 bytes_per_second=15.9494Gi/s
After
--------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------------------
BM_format_to_string_back_inserter<std::string>/1 55.0 ns 55.0 ns 12608946 bytes_per_second=17.3318Mi/s
BM_format_to_string_back_inserter<std::string>/2 55.4 ns 55.4 ns 12618566 bytes_per_second=34.4502Mi/s
BM_format_to_string_back_inserter<std::string>/4 55.6 ns 55.6 ns 12586286 bytes_per_second=68.581Mi/s
BM_format_to_string_back_inserter<std::string>/8 55.3 ns 55.3 ns 12609665 bytes_per_second=138.017Mi/s
BM_format_to_string_back_inserter<std::string>/16 55.3 ns 55.3 ns 12650409 bytes_per_second=276.069Mi/s
BM_format_to_string_back_inserter<std::string>/32 74.6 ns 74.6 ns 9366037 bytes_per_second=409.003Mi/s
BM_format_to_string_back_inserter<std::string>/64 74.7 ns 74.7 ns 9347416 bytes_per_second=817.416Mi/s
BM_format_to_string_back_inserter<std::string>/128 75.9 ns 75.9 ns 9218122 bytes_per_second=1.5709Gi/s
BM_format_to_string_back_inserter<std::string>/256 89.9 ns 89.9 ns 7794597 bytes_per_second=2.65254Gi/s
BM_format_to_string_back_inserter<std::string>/512 136 ns 136 ns 5130459 bytes_per_second=3.50082Gi/s
BM_format_to_string_back_inserter<std::string>/1024 256 ns 256 ns 2736709 bytes_per_second=3.72333Gi/s
BM_format_to_string_back_inserter<std::string>/2048 416 ns 416 ns 1680964 bytes_per_second=4.58095Gi/s
BM_format_to_string_back_inserter<std::string>/4096 669 ns 669 ns 1044363 bytes_per_second=5.70418Gi/s
BM_format_to_string_back_inserter<std::string>/8192 1127 ns 1127 ns 619232 bytes_per_second=6.77015Gi/s
BM_format_to_string_back_inserter<std::string>/16384 2259 ns 2259 ns 309214 bytes_per_second=6.75435Gi/s
BM_format_to_string_back_inserter<std::string>/32768 4948 ns 4948 ns 141300 bytes_per_second=6.16789Gi/s
BM_format_to_string_back_inserter<std::string>/65536 8686 ns 8686 ns 80318 bytes_per_second=7.02679Gi/s
BM_format_to_string_back_inserter<std::string>/131072 45051 ns 44892 ns 15592 bytes_per_second=2.71922Gi/s
BM_format_to_string_back_inserter<std::string>/262144 135704 ns 135571 ns 5159 bytes_per_second=1.80083Gi/s
BM_format_to_string_back_inserter<std::string>/524288 319108 ns 319046 ns 2192 bytes_per_second=1.53044Gi/s
BM_format_to_string_back_inserter<std::string>/1048576 682377 ns 682337 ns 1026 bytes_per_second=1.4312Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1 68.9 ns 68.9 ns 10146795 bytes_per_second=13.8319Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/2 69.9 ns 69.9 ns 10011519 bytes_per_second=27.2871Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/4 70.6 ns 70.6 ns 9905343 bytes_per_second=54.001Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/8 73.2 ns 73.2 ns 9553456 bytes_per_second=104.183Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/16 78.0 ns 78.0 ns 8998227 bytes_per_second=195.725Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/32 87.4 ns 87.4 ns 8002212 bytes_per_second=349.182Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/64 88.7 ns 88.7 ns 7875909 bytes_per_second=688.234Mi/s
BM_format_to_string_back_inserter<std::vector<char>>/128 90.4 ns 90.4 ns 7766202 bytes_per_second=1.3186Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/256 105 ns 105 ns 6672492 bytes_per_second=2.27779Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/512 161 ns 161 ns 4334228 bytes_per_second=2.96091Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1024 238 ns 238 ns 2948654 bytes_per_second=4.01015Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/2048 406 ns 406 ns 1722858 bytes_per_second=4.696Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/4096 610 ns 610 ns 1146677 bytes_per_second=6.25831Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/8192 1046 ns 1046 ns 671348 bytes_per_second=7.29663Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/16384 1999 ns 1999 ns 350601 bytes_per_second=7.6325Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/32768 3942 ns 3942 ns 177471 bytes_per_second=7.74181Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/65536 7524 ns 7524 ns 93193 bytes_per_second=8.11239Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/131072 17452 ns 17452 ns 40707 bytes_per_second=6.99455Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/262144 36394 ns 36393 ns 19163 bytes_per_second=6.70847Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/524288 73978 ns 73979 ns 9473 bytes_per_second=6.60024Gi/s
BM_format_to_string_back_inserter<std::vector<char>>/1048576 146194 ns 146195 ns 4757 bytes_per_second=6.67986Gi/s
BM_format_to_string_back_inserter<std::list<char>>/1 62.1 ns 62.1 ns 11285287 bytes_per_second=15.3637Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2 76.5 ns 76.5 ns 9164091 bytes_per_second=24.9327Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4 106 ns 106 ns 6605835 bytes_per_second=36.0894Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8 172 ns 172 ns 4055623 bytes_per_second=44.2286Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16 325 ns 325 ns 2148932 bytes_per_second=46.9799Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32 633 ns 633 ns 1109882 bytes_per_second=48.2282Mi/s
BM_format_to_string_back_inserter<std::list<char>>/64 1230 ns 1230 ns 568760 bytes_per_second=49.6254Mi/s
BM_format_to_string_back_inserter<std::list<char>>/128 2433 ns 2433 ns 289364 bytes_per_second=50.179Mi/s
BM_format_to_string_back_inserter<std::list<char>>/256 4840 ns 4840 ns 144908 bytes_per_second=50.4427Mi/s
BM_format_to_string_back_inserter<std::list<char>>/512 9636 ns 9636 ns 72474 bytes_per_second=50.6744Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1024 19372 ns 19372 ns 36037 bytes_per_second=50.4102Mi/s
BM_format_to_string_back_inserter<std::list<char>>/2048 38759 ns 38759 ns 18046 bytes_per_second=50.391Mi/s
BM_format_to_string_back_inserter<std::list<char>>/4096 77593 ns 77593 ns 9015 bytes_per_second=50.3428Mi/s
BM_format_to_string_back_inserter<std::list<char>>/8192 156059 ns 156060 ns 4485 bytes_per_second=50.061Mi/s
BM_format_to_string_back_inserter<std::list<char>>/16384 312579 ns 312584 ns 2237 bytes_per_second=49.9866Mi/s
BM_format_to_string_back_inserter<std::list<char>>/32768 625037 ns 625048 ns 1116 bytes_per_second=49.9962Mi/s
BM_format_to_string_back_inserter<std::list<char>>/65536 1243717 ns 1243709 ns 561 bytes_per_second=50.2529Mi/s
BM_format_to_string_back_inserter<std::list<char>>/131072 2493845 ns 2493825 ns 278 bytes_per_second=50.1238Mi/s
BM_format_to_string_back_inserter<std::list<char>>/262144 5092860 ns 5092824 ns 127 bytes_per_second=49.0887Mi/s
BM_format_to_string_back_inserter<std::list<char>>/524288 10365037 ns 10364249 ns 63 bytes_per_second=48.2428Mi/s
BM_format_to_string_back_inserter<std::list<char>>/1048576 21045804 ns 21044840 ns 31 bytes_per_second=47.5176Mi/s
BM_format_to_string_begin<std::string>/1 45.7 ns 45.7 ns 15315734 bytes_per_second=20.8756Mi/s
BM_format_to_string_begin<std::string>/2 45.8 ns 45.8 ns 15284718 bytes_per_second=41.6495Mi/s
BM_format_to_string_begin<std::string>/4 45.8 ns 45.8 ns 15267703 bytes_per_second=83.2557Mi/s
BM_format_to_string_begin<std::string>/8 45.8 ns 45.8 ns 15287339 bytes_per_second=166.595Mi/s
BM_format_to_string_begin<std::string>/16 45.8 ns 45.8 ns 15292216 bytes_per_second=333.044Mi/s
BM_format_to_string_begin<std::string>/32 45.8 ns 45.8 ns 15296602 bytes_per_second=666.48Mi/s
BM_format_to_string_begin<std::string>/64 45.8 ns 45.8 ns 15288652 bytes_per_second=1.30226Gi/s
BM_format_to_string_begin<std::string>/128 46.4 ns 46.4 ns 15067311 bytes_per_second=2.56753Gi/s
BM_format_to_string_begin<std::string>/256 49.7 ns 49.7 ns 14097564 bytes_per_second=4.79754Gi/s
BM_format_to_string_begin<std::string>/512 50.1 ns 50.1 ns 13975374 bytes_per_second=9.5099Gi/s
BM_format_to_string_begin<std::string>/1024 58.6 ns 58.6 ns 11945304 bytes_per_second=16.2837Gi/s
BM_format_to_string_begin<std::string>/2048 82.9 ns 82.9 ns 8438746 bytes_per_second=23.0154Gi/s
BM_format_to_string_begin<std::string>/4096 97.1 ns 97.1 ns 7198265 bytes_per_second=39.2664Gi/s
BM_format_to_string_begin<std::string>/8192 149 ns 149 ns 4694202 bytes_per_second=51.0557Gi/s
BM_format_to_string_begin<std::string>/16384 304 ns 304 ns 2294175 bytes_per_second=50.1141Gi/s
BM_format_to_string_begin<std::string>/32768 1332 ns 1332 ns 524864 bytes_per_second=22.9031Gi/s
BM_format_to_string_begin<std::string>/65536 3284 ns 3284 ns 213219 bytes_per_second=18.5865Gi/s
BM_format_to_string_begin<std::string>/131072 6618 ns 6618 ns 105734 bytes_per_second=18.4439Gi/s
BM_format_to_string_begin<std::string>/262144 14882 ns 14882 ns 47061 bytes_per_second=16.4047Gi/s
BM_format_to_string_begin<std::string>/524288 28676 ns 28676 ns 24430 bytes_per_second=17.0275Gi/s
BM_format_to_string_begin<std::string>/1048576 57252 ns 57252 ns 12197 bytes_per_second=17.0572Gi/s
BM_format_to_string_begin<std::vector<char>>/1 45.8 ns 45.8 ns 15267695 bytes_per_second=20.836Mi/s
BM_format_to_string_begin<std::vector<char>>/2 46.1 ns 46.1 ns 15195910 bytes_per_second=41.4071Mi/s
BM_format_to_string_begin<std::vector<char>>/4 45.7 ns 45.7 ns 15330056 bytes_per_second=83.5359Mi/s
BM_format_to_string_begin<std::vector<char>>/8 45.5 ns 45.5 ns 15402816 bytes_per_second=167.803Mi/s
BM_format_to_string_begin<std::vector<char>>/16 45.4 ns 45.4 ns 15443498 bytes_per_second=335.893Mi/s
BM_format_to_string_begin<std::vector<char>>/32 45.7 ns 45.7 ns 15313718 bytes_per_second=667.659Mi/s
BM_format_to_string_begin<std::vector<char>>/64 45.7 ns 45.7 ns 15387708 bytes_per_second=1.30307Gi/s
BM_format_to_string_begin<std::vector<char>>/128 46.3 ns 46.3 ns 15107063 bytes_per_second=2.57456Gi/s
BM_format_to_string_begin<std::vector<char>>/256 48.9 ns 48.9 ns 14303099 bytes_per_second=4.87188Gi/s
BM_format_to_string_begin<std::vector<char>>/512 49.7 ns 49.7 ns 14084558 bytes_per_second=9.59126Gi/s
BM_format_to_string_begin<std::vector<char>>/1024 59.1 ns 59.1 ns 11810905 bytes_per_second=16.1327Gi/s
BM_format_to_string_begin<std::vector<char>>/2048 83.8 ns 83.8 ns 8349918 bytes_per_second=22.7525Gi/s
BM_format_to_string_begin<std::vector<char>>/4096 98.9 ns 98.9 ns 7050575 bytes_per_second=38.5623Gi/s
BM_format_to_string_begin<std::vector<char>>/8192 148 ns 148 ns 4730159 bytes_per_second=51.5292Gi/s
BM_format_to_string_begin<std::vector<char>>/16384 304 ns 304 ns 2286018 bytes_per_second=50.1323Gi/s
BM_format_to_string_begin<std::vector<char>>/32768 1334 ns 1334 ns 525344 bytes_per_second=22.8783Gi/s
BM_format_to_string_begin<std::vector<char>>/65536 3283 ns 3283 ns 212975 bytes_per_second=18.591Gi/s
BM_format_to_string_begin<std::vector<char>>/131072 6567 ns 6567 ns 106494 bytes_per_second=18.5874Gi/s
BM_format_to_string_begin<std::vector<char>>/262144 14069 ns 14069 ns 49792 bytes_per_second=17.3537Gi/s
BM_format_to_string_begin<std::vector<char>>/524288 28738 ns 28738 ns 24380 bytes_per_second=16.9906Gi/s
BM_format_to_string_begin<std::vector<char>>/1048576 57384 ns 57383 ns 12153 bytes_per_second=17.0183Gi/s
BM_format_to_string_begin<std::list<char>>/1 47.9 ns 47.9 ns 14610235 bytes_per_second=19.9008Mi/s
BM_format_to_string_begin<std::list<char>>/2 48.2 ns 48.2 ns 14524097 bytes_per_second=39.6086Mi/s
BM_format_to_string_begin<std::list<char>>/4 50.8 ns 50.8 ns 13779419 bytes_per_second=75.0641Mi/s
BM_format_to_string_begin<std::list<char>>/8 60.2 ns 60.2 ns 11601054 bytes_per_second=126.686Mi/s
BM_format_to_string_begin<std::list<char>>/16 80.3 ns 80.3 ns 8734097 bytes_per_second=190.079Mi/s
BM_format_to_string_begin<std::list<char>>/32 124 ns 124 ns 5643304 bytes_per_second=246.492Mi/s
BM_format_to_string_begin<std::list<char>>/64 208 ns 208 ns 3355533 bytes_per_second=292.895Mi/s
BM_format_to_string_begin<std::list<char>>/128 383 ns 383 ns 1837992 bytes_per_second=318.382Mi/s
BM_format_to_string_begin<std::list<char>>/256 748 ns 748 ns 934866 bytes_per_second=326.476Mi/s
BM_format_to_string_begin<std::list<char>>/512 1436 ns 1436 ns 486858 bytes_per_second=340.007Mi/s
BM_format_to_string_begin<std::list<char>>/1024 2894 ns 2894 ns 244197 bytes_per_second=337.475Mi/s
BM_format_to_string_begin<std::list<char>>/2048 5728 ns 5728 ns 121691 bytes_per_second=340.969Mi/s
BM_format_to_string_begin<std::list<char>>/4096 11331 ns 11331 ns 61789 bytes_per_second=344.744Mi/s
BM_format_to_string_begin<std::list<char>>/8192 22939 ns 22939 ns 30543 bytes_per_second=340.575Mi/s
BM_format_to_string_begin<std::list<char>>/16384 45955 ns 45955 ns 15252 bytes_per_second=340.005Mi/s
BM_format_to_string_begin<std::list<char>>/32768 91702 ns 91703 ns 7646 bytes_per_second=340.774Mi/s
BM_format_to_string_begin<std::list<char>>/65536 182117 ns 182119 ns 3845 bytes_per_second=343.183Mi/s
BM_format_to_string_begin<std::list<char>>/131072 370504 ns 370508 ns 1885 bytes_per_second=337.375Mi/s
BM_format_to_string_begin<std::list<char>>/262144 852511 ns 852470 ns 812 bytes_per_second=293.266Mi/s
BM_format_to_string_begin<std::list<char>>/524288 2011217 ns 2011107 ns 348 bytes_per_second=248.619Mi/s
BM_format_to_string_begin<std::list<char>>/1048576 4250045 ns 4249856 ns 165 bytes_per_second=235.302Mi/s
BM_format_to_string_span<char>/1 45.9 ns 45.9 ns 15271419 bytes_per_second=20.792Mi/s
BM_format_to_string_span<char>/2 45.8 ns 45.8 ns 15298666 bytes_per_second=41.6504Mi/s
BM_format_to_string_span<char>/4 45.5 ns 45.5 ns 15385663 bytes_per_second=83.8287Mi/s
BM_format_to_string_span<char>/8 45.8 ns 45.8 ns 15301650 bytes_per_second=166.746Mi/s
BM_format_to_string_span<char>/16 45.8 ns 45.8 ns 15303687 bytes_per_second=333.361Mi/s
BM_format_to_string_span<char>/32 45.4 ns 45.4 ns 15393460 bytes_per_second=671.681Mi/s
BM_format_to_string_span<char>/64 45.8 ns 45.8 ns 15359776 bytes_per_second=1.30207Gi/s
BM_format_to_string_span<char>/128 46.4 ns 46.4 ns 15093067 bytes_per_second=2.57078Gi/s
BM_format_to_string_span<char>/256 49.0 ns 49.0 ns 14276746 bytes_per_second=4.86283Gi/s
BM_format_to_string_span<char>/512 49.7 ns 49.7 ns 14074076 bytes_per_second=9.58552Gi/s
BM_format_to_string_span<char>/1024 59.2 ns 59.2 ns 11901333 bytes_per_second=16.1177Gi/s
BM_format_to_string_span<char>/2048 84.8 ns 84.8 ns 8242700 bytes_per_second=22.4821Gi/s
BM_format_to_string_span<char>/4096 94.1 ns 94.1 ns 7431297 bytes_per_second=40.5358Gi/s
BM_format_to_string_span<char>/8192 148 ns 148 ns 4743152 bytes_per_second=51.644Gi/s
BM_format_to_string_span<char>/16384 273 ns 273 ns 2571402 bytes_per_second=55.8844Gi/s
BM_format_to_string_span<char>/32768 1334 ns 1334 ns 525042 bytes_per_second=22.8708Gi/s
BM_format_to_string_span<char>/65536 3282 ns 3282 ns 213311 bytes_per_second=18.5946Gi/s
BM_format_to_string_span<char>/131072 6537 ns 6537 ns 106973 bytes_per_second=18.6748Gi/s
BM_format_to_string_span<char>/262144 14128 ns 14128 ns 49579 bytes_per_second=17.281Gi/s
BM_format_to_string_span<char>/524288 28932 ns 28933 ns 24205 bytes_per_second=16.8765Gi/s
BM_format_to_string_span<char>/1048576 60544 ns 60543 ns 11600 bytes_per_second=16.13Gi/s
BM_format_to_string_pointer<char>/1 45.9 ns 45.9 ns 15252402 bytes_per_second=20.7726Mi/s
BM_format_to_string_pointer<char>/2 45.9 ns 45.9 ns 15267134 bytes_per_second=41.5792Mi/s
BM_format_to_string_pointer<char>/4 45.5 ns 45.5 ns 15379145 bytes_per_second=83.7786Mi/s
BM_format_to_string_pointer<char>/8 45.8 ns 45.8 ns 15282721 bytes_per_second=166.595Mi/s
BM_format_to_string_pointer<char>/16 45.8 ns 45.8 ns 15271834 bytes_per_second=332.971Mi/s
BM_format_to_string_pointer<char>/32 45.5 ns 45.5 ns 15381576 bytes_per_second=671.226Mi/s
BM_format_to_string_pointer<char>/64 45.8 ns 45.8 ns 15367803 bytes_per_second=1.30179Gi/s
BM_format_to_string_pointer<char>/128 46.4 ns 46.4 ns 15094000 bytes_per_second=2.56988Gi/s
BM_format_to_string_pointer<char>/256 49.1 ns 49.1 ns 14263165 bytes_per_second=4.85744Gi/s
BM_format_to_string_pointer<char>/512 49.8 ns 49.8 ns 14067988 bytes_per_second=9.5836Gi/s
BM_format_to_string_pointer<char>/1024 59.2 ns 59.2 ns 11849610 bytes_per_second=16.1162Gi/s
BM_format_to_string_pointer<char>/2048 84.9 ns 84.9 ns 8226854 bytes_per_second=22.4648Gi/s
BM_format_to_string_pointer<char>/4096 94.4 ns 94.4 ns 7429430 bytes_per_second=40.4138Gi/s
BM_format_to_string_pointer<char>/8192 148 ns 148 ns 4719610 bytes_per_second=51.4879Gi/s
BM_format_to_string_pointer<char>/16384 274 ns 274 ns 2573637 bytes_per_second=55.6724Gi/s
BM_format_to_string_pointer<char>/32768 1335 ns 1335 ns 524147 bytes_per_second=22.8593Gi/s
BM_format_to_string_pointer<char>/65536 3286 ns 3286 ns 213316 bytes_per_second=18.576Gi/s
BM_format_to_string_pointer<char>/131072 6589 ns 6589 ns 106030 bytes_per_second=18.5261Gi/s
BM_format_to_string_pointer<char>/262144 13941 ns 13942 ns 50127 bytes_per_second=17.5117Gi/s
BM_format_to_string_pointer<char>/524288 28749 ns 28749 ns 24313 bytes_per_second=16.9843Gi/s
BM_format_to_string_pointer<char>/1048576 60922 ns 60923 ns 11657 bytes_per_second=16.0296Gi/s
BM_format_to_string_back_inserter<std::wstring>/1 53.8 ns 53.8 ns 12994567 bytes_per_second=70.9108Mi/s
BM_format_to_string_back_inserter<std::wstring>/2 53.8 ns 53.8 ns 12978471 bytes_per_second=141.694Mi/s
BM_format_to_string_back_inserter<std::wstring>/4 53.8 ns 53.8 ns 13077945 bytes_per_second=283.467Mi/s
BM_format_to_string_back_inserter<std::wstring>/8 72.6 ns 72.6 ns 9610959 bytes_per_second=420.16Mi/s
BM_format_to_string_back_inserter<std::wstring>/16 72.5 ns 72.5 ns 9610752 bytes_per_second=841.34Mi/s
BM_format_to_string_back_inserter<std::wstring>/32 74.3 ns 74.3 ns 9441354 bytes_per_second=1.60519Gi/s
BM_format_to_string_back_inserter<std::wstring>/64 76.3 ns 76.3 ns 9194211 bytes_per_second=3.1258Gi/s
BM_format_to_string_back_inserter<std::wstring>/128 83.7 ns 83.7 ns 8333241 bytes_per_second=5.69904Gi/s
BM_format_to_string_back_inserter<std::wstring>/256 104 ns 104 ns 6750687 bytes_per_second=9.18037Gi/s
BM_format_to_string_back_inserter<std::wstring>/512 219 ns 219 ns 3201818 bytes_per_second=8.70921Gi/s
BM_format_to_string_back_inserter<std::wstring>/1024 411 ns 411 ns 1704850 bytes_per_second=9.27969Gi/s
BM_format_to_string_back_inserter<std::wstring>/2048 746 ns 746 ns 946781 bytes_per_second=10.2309Gi/s
BM_format_to_string_back_inserter<std::wstring>/4096 1725 ns 1725 ns 405431 bytes_per_second=8.84797Gi/s
BM_format_to_string_back_inserter<std::wstring>/8192 3329 ns 3329 ns 210268 bytes_per_second=9.16631Gi/s
BM_format_to_string_back_inserter<std::wstring>/16384 6845 ns 6845 ns 102525 bytes_per_second=8.91734Gi/s
BM_format_to_string_back_inserter<std::wstring>/32768 16173 ns 16173 ns 43229 bytes_per_second=7.54788Gi/s
BM_format_to_string_back_inserter<std::wstring>/65536 35422 ns 35423 ns 19765 bytes_per_second=6.89224Gi/s
BM_format_to_string_back_inserter<std::wstring>/131072 73063 ns 73064 ns 9541 bytes_per_second=6.68292Gi/s
BM_format_to_string_back_inserter<std::wstring>/262144 647858 ns 647788 ns 1078 bytes_per_second=1.50753Gi/s
BM_format_to_string_back_inserter<std::wstring>/524288 1423678 ns 1423467 ns 489 bytes_per_second=1.37209Gi/s
BM_format_to_string_back_inserter<std::wstring>/1048576 2756304 ns 2756020 ns 254 bytes_per_second=1.41735Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1 66.9 ns 66.9 ns 10454021 bytes_per_second=57.0225Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2 68.0 ns 68.0 ns 10290274 bytes_per_second=112.254Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4 69.5 ns 69.5 ns 10091542 bytes_per_second=219.668Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8 72.0 ns 72.0 ns 9730331 bytes_per_second=423.569Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16 77.1 ns 77.1 ns 9129530 bytes_per_second=791.514Mi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32 89.2 ns 89.2 ns 7858872 bytes_per_second=1.33639Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/64 113 ns 113 ns 6199305 bytes_per_second=2.10325Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/128 145 ns 145 ns 4830829 bytes_per_second=3.28951Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/256 219 ns 219 ns 3199567 bytes_per_second=4.35747Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/512 429 ns 429 ns 1627664 bytes_per_second=4.44151Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1024 729 ns 729 ns 963084 bytes_per_second=5.23608Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2048 1157 ns 1157 ns 608226 bytes_per_second=6.59151Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4096 2097 ns 2097 ns 333445 bytes_per_second=7.27746Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8192 3799 ns 3799 ns 184182 bytes_per_second=8.03219Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16384 7594 ns 7593 ns 92256 bytes_per_second=8.03796Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32768 17132 ns 17132 ns 40821 bytes_per_second=7.12534Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/65536 35126 ns 35126 ns 19972 bytes_per_second=6.95037Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/131072 68707 ns 68708 ns 10190 bytes_per_second=7.10658Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/262144 134733 ns 134736 ns 5190 bytes_per_second=7.24797Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/524288 325704 ns 325696 ns 2152 bytes_per_second=5.99676Gi/s
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1048576 987276 ns 987268 ns 694 bytes_per_second=3.95662Gi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1 65.0 ns 65.0 ns 10764630 bytes_per_second=58.6946Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/2 75.7 ns 75.7 ns 9262220 bytes_per_second=100.79Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/4 106 ns 106 ns 6614820 bytes_per_second=144.494Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/8 172 ns 172 ns 4096429 bytes_per_second=177.124Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/16 359 ns 359 ns 1956317 bytes_per_second=170.044Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/32 667 ns 667 ns 1046748 bytes_per_second=182.903Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/64 1243 ns 1243 ns 553871 bytes_per_second=196.398Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/128 2441 ns 2441 ns 285414 bytes_per_second=200.017Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/256 4884 ns 4884 ns 143515 bytes_per_second=199.957Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/512 9715 ns 9716 ns 72147 bytes_per_second=201.031Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1024 19549 ns 19549 ns 35854 bytes_per_second=199.819Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/2048 39111 ns 39112 ns 17906 bytes_per_second=199.749Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/4096 78165 ns 78165 ns 8925 bytes_per_second=199.898Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/8192 157138 ns 157136 ns 4450 bytes_per_second=198.872Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/16384 314543 ns 314548 ns 2223 bytes_per_second=198.698Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/32768 629860 ns 629857 ns 1105 bytes_per_second=198.458Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/65536 1260234 ns 1260229 ns 553 bytes_per_second=198.377Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/131072 2545555 ns 2545480 ns 275 bytes_per_second=196.427Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/262144 5279010 ns 5274830 ns 124 bytes_per_second=189.58Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/524288 10667884 ns 10667981 ns 61 bytes_per_second=187.477Mi/s
BM_format_to_string_back_inserter<std::list<wchar_t>>/1048576 21667268 ns 21665586 ns 31 bytes_per_second=184.625Mi/s
BM_format_to_string_begin<std::wstring>/1 44.0 ns 44.0 ns 15885663 bytes_per_second=86.6787Mi/s
BM_format_to_string_begin<std::wstring>/2 44.0 ns 44.0 ns 15929967 bytes_per_second=173.434Mi/s
BM_format_to_string_begin<std::wstring>/4 44.0 ns 44.0 ns 15890332 bytes_per_second=346.685Mi/s
BM_format_to_string_begin<std::wstring>/8 44.0 ns 44.0 ns 15900063 bytes_per_second=694.236Mi/s
BM_format_to_string_begin<std::wstring>/16 44.0 ns 44.0 ns 15908010 bytes_per_second=1.35428Gi/s
BM_format_to_string_begin<std::wstring>/32 44.5 ns 44.5 ns 15678431 bytes_per_second=2.67706Gi/s
BM_format_to_string_begin<std::wstring>/64 47.6 ns 47.6 ns 14766812 bytes_per_second=5.0111Gi/s
BM_format_to_string_begin<std::wstring>/128 48.5 ns 48.5 ns 14444698 bytes_per_second=9.82401Gi/s
BM_format_to_string_begin<std::wstring>/256 58.3 ns 58.3 ns 12045526 bytes_per_second=16.3663Gi/s
BM_format_to_string_begin<std::wstring>/512 82.9 ns 82.9 ns 8422805 bytes_per_second=23.008Gi/s
BM_format_to_string_begin<std::wstring>/1024 92.7 ns 92.7 ns 7563548 bytes_per_second=41.161Gi/s
BM_format_to_string_begin<std::wstring>/2048 146 ns 146 ns 4790442 bytes_per_second=52.3526Gi/s
BM_format_to_string_begin<std::wstring>/4096 277 ns 277 ns 2525154 bytes_per_second=55.0871Gi/s
BM_format_to_string_begin<std::wstring>/8192 1330 ns 1330 ns 525371 bytes_per_second=22.9473Gi/s
BM_format_to_string_begin<std::wstring>/16384 3340 ns 3340 ns 209411 bytes_per_second=18.2727Gi/s
BM_format_to_string_begin<std::wstring>/32768 7063 ns 7063 ns 99337 bytes_per_second=17.2837Gi/s
BM_format_to_string_begin<std::wstring>/65536 14738 ns 14738 ns 47473 bytes_per_second=16.5655Gi/s
BM_format_to_string_begin<std::wstring>/131072 29862 ns 29862 ns 23457 bytes_per_second=16.3512Gi/s
BM_format_to_string_begin<std::wstring>/262144 60345 ns 60347 ns 11579 bytes_per_second=16.1825Gi/s
BM_format_to_string_begin<std::wstring>/524288 116540 ns 116537 ns 6001 bytes_per_second=16.7597Gi/s
BM_format_to_string_begin<std::wstring>/1048576 237020 ns 237009 ns 3022 bytes_per_second=16.4814Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1 44.0 ns 44.0 ns 15867055 bytes_per_second=86.6892Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/2 44.0 ns 44.0 ns 15900711 bytes_per_second=173.438Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/4 44.0 ns 44.0 ns 15899776 bytes_per_second=346.657Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/8 44.0 ns 44.0 ns 15919930 bytes_per_second=693.399Mi/s
BM_format_to_string_begin<std::vector<wchar_t>>/16 44.0 ns 44.0 ns 15921070 bytes_per_second=1.35442Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/32 44.6 ns 44.6 ns 15695175 bytes_per_second=2.67195Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/64 45.1 ns 45.1 ns 15484589 bytes_per_second=5.28257Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/128 48.5 ns 48.5 ns 14453697 bytes_per_second=9.84027Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/256 56.7 ns 56.7 ns 12342517 bytes_per_second=16.8056Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/512 82.6 ns 82.6 ns 8493345 bytes_per_second=23.0805Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1024 91.6 ns 91.6 ns 7641768 bytes_per_second=41.6496Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/2048 145 ns 145 ns 4845210 bytes_per_second=52.7525Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/4096 273 ns 273 ns 2552767 bytes_per_second=55.8487Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/8192 1329 ns 1329 ns 526482 bytes_per_second=22.9644Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/16384 3309 ns 3309 ns 211655 bytes_per_second=18.4432Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/32768 7117 ns 7117 ns 98330 bytes_per_second=17.1508Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/65536 14810 ns 14810 ns 47295 bytes_per_second=16.485Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/131072 30869 ns 30870 ns 22661 bytes_per_second=15.8174Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/262144 62039 ns 62040 ns 11262 bytes_per_second=15.7409Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/524288 116643 ns 116642 ns 6000 bytes_per_second=16.7447Gi/s
BM_format_to_string_begin<std::vector<wchar_t>>/1048576 235639 ns 235630 ns 2977 bytes_per_second=16.5779Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/1 45.8 ns 45.8 ns 15271075 bytes_per_second=83.2593Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/2 46.0 ns 46.0 ns 15196430 bytes_per_second=165.721Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/4 47.5 ns 47.5 ns 14383132 bytes_per_second=321.251Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/8 58.9 ns 58.9 ns 11920516 bytes_per_second=518.09Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/16 80.2 ns 80.2 ns 8623334 bytes_per_second=761.223Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/32 123 ns 123 ns 5685436 bytes_per_second=989.303Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/64 213 ns 213 ns 3314615 bytes_per_second=1.11905Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/128 385 ns 385 ns 1814884 bytes_per_second=1.237Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/256 883 ns 883 ns 795200 bytes_per_second=1.08056Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/512 1657 ns 1657 ns 422497 bytes_per_second=1.1512Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/1024 3334 ns 3334 ns 210358 bytes_per_second=1.14428Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/2048 6648 ns 6648 ns 105270 bytes_per_second=1.14769Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/4096 13219 ns 13219 ns 52970 bytes_per_second=1.15431Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/8192 26571 ns 26572 ns 26363 bytes_per_second=1.1485Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/16384 53425 ns 53425 ns 13120 bytes_per_second=1.14244Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/32768 106431 ns 106429 ns 6592 bytes_per_second=1.14697Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/65536 212703 ns 212704 ns 3288 bytes_per_second=1.1478Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/131072 448945 ns 448932 ns 1558 bytes_per_second=1.08765Gi/s
BM_format_to_string_begin<std::list<wchar_t>>/262144 1076203 ns 1076125 ns 647 bytes_per_second=929.26Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/524288 2540847 ns 2540726 ns 275 bytes_per_second=787.176Mi/s
BM_format_to_string_begin<std::list<wchar_t>>/1048576 5232106 ns 5231772 ns 132 bytes_per_second=764.559Mi/s
BM_format_to_string_span<wchar_t>/1 44.0 ns 44.0 ns 15924873 bytes_per_second=86.6028Mi/s
BM_format_to_string_span<wchar_t>/2 44.0 ns 44.0 ns 15896757 bytes_per_second=173.421Mi/s
BM_format_to_string_span<wchar_t>/4 44.0 ns 44.0 ns 15921558 bytes_per_second=346.791Mi/s
BM_format_to_string_span<wchar_t>/8 44.0 ns 44.0 ns 15920345 bytes_per_second=693.846Mi/s
BM_format_to_string_span<wchar_t>/16 44.0 ns 44.0 ns 15915412 bytes_per_second=1.35569Gi/s
BM_format_to_string_span<wchar_t>/32 44.6 ns 44.6 ns 15705704 bytes_per_second=2.6752Gi/s
BM_format_to_string_span<wchar_t>/64 47.7 ns 47.7 ns 14625042 bytes_per_second=4.99698Gi/s
BM_format_to_string_span<wchar_t>/128 48.4 ns 48.4 ns 14439893 bytes_per_second=9.84566Gi/s
BM_format_to_string_span<wchar_t>/256 57.4 ns 57.4 ns 12219394 bytes_per_second=16.623Gi/s
BM_format_to_string_span<wchar_t>/512 82.9 ns 82.9 ns 8445216 bytes_per_second=23.0068Gi/s
BM_format_to_string_span<wchar_t>/1024 91.8 ns 91.8 ns 7621819 bytes_per_second=41.5665Gi/s
BM_format_to_string_span<wchar_t>/2048 146 ns 146 ns 4806546 bytes_per_second=52.3575Gi/s
BM_format_to_string_span<wchar_t>/4096 276 ns 276 ns 2531409 bytes_per_second=55.3335Gi/s
BM_format_to_string_span<wchar_t>/8192 1329 ns 1329 ns 525064 bytes_per_second=22.9552Gi/s
BM_format_to_string_span<wchar_t>/16384 3334 ns 3334 ns 210093 bytes_per_second=18.3079Gi/s
BM_format_to_string_span<wchar_t>/32768 7126 ns 7126 ns 98463 bytes_per_second=17.1309Gi/s
BM_format_to_string_span<wchar_t>/65536 15258 ns 15259 ns 45819 bytes_per_second=16.0002Gi/s
BM_format_to_string_span<wchar_t>/131072 31890 ns 31890 ns 21932 bytes_per_second=15.3116Gi/s
BM_format_to_string_span<wchar_t>/262144 59619 ns 59619 ns 11766 bytes_per_second=16.3799Gi/s
BM_format_to_string_span<wchar_t>/524288 116558 ns 116559 ns 5997 bytes_per_second=16.7565Gi/s
BM_format_to_string_span<wchar_t>/1048576 234040 ns 234033 ns 3002 bytes_per_second=16.691Gi/s
BM_format_to_string_pointer<wchar_t>/1 44.0 ns 44.0 ns 15896580 bytes_per_second=86.6711Mi/s
BM_format_to_string_pointer<wchar_t>/2 44.0 ns 44.0 ns 15926804 bytes_per_second=173.492Mi/s
BM_format_to_string_pointer<wchar_t>/4 44.0 ns 44.0 ns 15895937 bytes_per_second=346.753Mi/s
BM_format_to_string_pointer<wchar_t>/8 44.0 ns 44.0 ns 15921799 bytes_per_second=693.352Mi/s
BM_format_to_string_pointer<wchar_t>/16 44.0 ns 44.0 ns 15906168 bytes_per_second=1.35548Gi/s
BM_format_to_string_pointer<wchar_t>/32 44.6 ns 44.6 ns 15704259 bytes_per_second=2.67379Gi/s
BM_format_to_string_pointer<wchar_t>/64 47.9 ns 47.9 ns 14621125 bytes_per_second=4.98045Gi/s
BM_format_to_string_pointer<wchar_t>/128 48.4 ns 48.4 ns 14455630 bytes_per_second=9.85747Gi/s
BM_format_to_string_pointer<wchar_t>/256 57.4 ns 57.4 ns 12255980 bytes_per_second=16.6258Gi/s
BM_format_to_string_pointer<wchar_t>/512 82.9 ns 82.9 ns 8423886 bytes_per_second=22.9942Gi/s
BM_format_to_string_pointer<wchar_t>/1024 91.8 ns 91.8 ns 7642388 bytes_per_second=41.5731Gi/s
BM_format_to_string_pointer<wchar_t>/2048 145 ns 145 ns 4830456 bytes_per_second=52.596Gi/s
BM_format_to_string_pointer<wchar_t>/4096 276 ns 276 ns 2529521 bytes_per_second=55.3044Gi/s
BM_format_to_string_pointer<wchar_t>/8192 1331 ns 1331 ns 526348 bytes_per_second=22.9332Gi/s
BM_format_to_string_pointer<wchar_t>/16384 3331 ns 3331 ns 210132 bytes_per_second=18.3246Gi/s
BM_format_to_string_pointer<wchar_t>/32768 7084 ns 7084 ns 98812 bytes_per_second=17.2312Gi/s
BM_format_to_string_pointer<wchar_t>/65536 14719 ns 14719 ns 47532 bytes_per_second=16.5868Gi/s
BM_format_to_string_pointer<wchar_t>/131072 29885 ns 29885 ns 23458 bytes_per_second=16.3385Gi/s
BM_format_to_string_pointer<wchar_t>/262144 60052 ns 60053 ns 11715 bytes_per_second=16.2616Gi/s
BM_format_to_string_pointer<wchar_t>/524288 116248 ns 116248 ns 6019 bytes_per_second=16.8014Gi/s
BM_format_to_string_pointer<wchar_t>/1048576 234130 ns 234121 ns 3010 bytes_per_second=16.6848Gi/s
Comparison
Benchmark Time CPU Time Old Time New CPU Old CPU New
--------------------------------------------------------------------------------------------------------------------------------------------------------------
BM_format_to_string_back_inserter<std::string>/1 -0.0052 -0.0027 55 55 55 55
BM_format_to_string_back_inserter<std::string>/2 +0.0013 +0.0039 55 55 55 55
BM_format_to_string_back_inserter<std::string>/4 +0.0057 +0.0081 55 56 55 56
BM_format_to_string_back_inserter<std::string>/8 +0.0058 +0.0082 55 55 55 55
BM_format_to_string_back_inserter<std::string>/16 +0.0047 +0.0071 55 55 55 55
BM_format_to_string_back_inserter<std::string>/32 +0.0039 +0.0066 74 75 74 75
BM_format_to_string_back_inserter<std::string>/64 +0.0053 +0.0077 74 75 74 75
BM_format_to_string_back_inserter<std::string>/128 +0.0035 +0.0059 76 76 75 76
BM_format_to_string_back_inserter<std::string>/256 -0.0053 -0.0029 90 90 90 90
BM_format_to_string_back_inserter<std::string>/512 +0.0031 +0.0055 136 136 135 136
BM_format_to_string_back_inserter<std::string>/1024 +0.0120 +0.0144 253 256 252 256
BM_format_to_string_back_inserter<std::string>/2048 +0.0152 +0.0177 410 416 409 416
BM_format_to_string_back_inserter<std::string>/4096 +0.0105 +0.0129 662 669 660 669
BM_format_to_string_back_inserter<std::string>/8192 +0.0029 +0.0054 1124 1127 1121 1127
BM_format_to_string_back_inserter<std::string>/16384 +0.0138 +0.0167 2228 2259 2222 2259
BM_format_to_string_back_inserter<std::string>/32768 +0.0319 +0.0345 4795 4948 4783 4948
BM_format_to_string_back_inserter<std::string>/65536 +0.0299 +0.0325 8433 8686 8412 8686
BM_format_to_string_back_inserter<std::string>/131072 +0.0017 +0.0036 44973 45051 44732 44892
BM_format_to_string_back_inserter<std::string>/262144 +0.0062 +0.0078 134871 135704 134517 135571
BM_format_to_string_back_inserter<std::string>/524288 +0.0077 +0.0077 316669 319108 316613 319046
BM_format_to_string_back_inserter<std::string>/1048576 +0.0071 +0.0070 677580 682377 677582 682337
BM_format_to_string_back_inserter<std::vector<char>>/1 -0.0142 -0.0143 70 69 70 69
BM_format_to_string_back_inserter<std::vector<char>>/2 -0.0024 -0.0024 70 70 70 70
BM_format_to_string_back_inserter<std::vector<char>>/4 -0.0087 -0.0088 71 71 71 71
BM_format_to_string_back_inserter<std::vector<char>>/8 -0.0071 -0.0071 74 73 74 73
BM_format_to_string_back_inserter<std::vector<char>>/16 -0.0100 -0.0100 79 78 79 78
BM_format_to_string_back_inserter<std::vector<char>>/32 -0.0147 -0.0147 89 87 89 87
BM_format_to_string_back_inserter<std::vector<char>>/64 -0.0168 -0.0168 90 89 90 89
BM_format_to_string_back_inserter<std::vector<char>>/128 -0.0190 -0.0190 92 90 92 90
BM_format_to_string_back_inserter<std::vector<char>>/256 -0.0122 -0.0122 106 105 106 105
BM_format_to_string_back_inserter<std::vector<char>>/512 -0.0095 -0.0095 163 161 163 161
BM_format_to_string_back_inserter<std::vector<char>>/1024 -0.0074 -0.0074 240 238 240 238
BM_format_to_string_back_inserter<std::vector<char>>/2048 +0.0147 +0.0147 400 406 400 406
BM_format_to_string_back_inserter<std::vector<char>>/4096 -0.0401 -0.0401 635 610 635 610
BM_format_to_string_back_inserter<std::vector<char>>/8192 -0.0169 -0.0169 1064 1046 1064 1046
BM_format_to_string_back_inserter<std::vector<char>>/16384 +0.0066 +0.0066 1986 1999 1986 1999
BM_format_to_string_back_inserter<std::vector<char>>/32768 +0.0280 +0.0280 3834 3942 3835 3942
BM_format_to_string_back_inserter<std::vector<char>>/65536 +0.0184 +0.0184 7388 7524 7388 7524
BM_format_to_string_back_inserter<std::vector<char>>/131072 -0.0001 -0.0001 17454 17452 17454 17452
BM_format_to_string_back_inserter<std::vector<char>>/262144 +0.0072 +0.0072 36133 36394 36133 36393
BM_format_to_string_back_inserter<std::vector<char>>/524288 +0.0091 +0.0091 73310 73978 73310 73979
BM_format_to_string_back_inserter<std::vector<char>>/1048576 +0.0082 +0.0083 145001 146194 144996 146195
BM_format_to_string_back_inserter<std::list<char>>/1 -0.0131 -0.0131 63 62 63 62
BM_format_to_string_back_inserter<std::list<char>>/2 +0.0063 +0.0063 76 76 76 76
BM_format_to_string_back_inserter<std::list<char>>/4 +0.0214 +0.0214 103 106 103 106
BM_format_to_string_back_inserter<std::list<char>>/8 +0.0087 +0.0087 171 172 171 172
BM_format_to_string_back_inserter<std::list<char>>/16 +0.0012 +0.0011 324 325 324 325
BM_format_to_string_back_inserter<std::list<char>>/32 -0.0089 -0.0089 638 633 638 633
BM_format_to_string_back_inserter<std::list<char>>/64 +0.0002 +0.0001 1230 1230 1230 1230
BM_format_to_string_back_inserter<std::list<char>>/128 +0.0025 +0.0025 2427 2433 2427 2433
BM_format_to_string_back_inserter<std::list<char>>/256 -0.0015 -0.0015 4847 4840 4847 4840
BM_format_to_string_back_inserter<std::list<char>>/512 -0.0021 -0.0021 9656 9636 9656 9636
BM_format_to_string_back_inserter<std::list<char>>/1024 -0.0022 -0.0022 19415 19372 19416 19372
BM_format_to_string_back_inserter<std::list<char>>/2048 -0.0043 -0.0043 38927 38759 38928 38759
BM_format_to_string_back_inserter<std::list<char>>/4096 -0.0060 -0.0060 78062 77593 78064 77593
BM_format_to_string_back_inserter<std::list<char>>/8192 -0.0036 -0.0036 156624 156059 156628 156060
BM_format_to_string_back_inserter<std::list<char>>/16384 -0.0038 -0.0038 313781 312579 313788 312584
BM_format_to_string_back_inserter<std::list<char>>/32768 -0.0026 -0.0026 626674 625037 626667 625048
BM_format_to_string_back_inserter<std::list<char>>/65536 -0.0042 -0.0042 1248918 1243717 1248933 1243709
BM_format_to_string_back_inserter<std::list<char>>/131072 -0.0072 -0.0072 2512031 2493845 2511949 2493825
BM_format_to_string_back_inserter<std::list<char>>/262144 -0.0051 -0.0050 5118786 5092860 5118308 5092824
BM_format_to_string_back_inserter<std::list<char>>/524288 -0.0030 -0.0030 10395742 10365037 10395288 10364249
BM_format_to_string_back_inserter<std::list<char>>/1048576 -0.0030 -0.0031 21110172 21045804 21110073 21044840
BM_format_to_string_begin<std::string>/1 -0.0278 -0.0279 47 46 47 46
BM_format_to_string_begin<std::string>/2 -0.0261 -0.0261 47 46 47 46
BM_format_to_string_begin<std::string>/4 -0.0262 -0.0262 47 46 47 46
BM_format_to_string_begin<std::string>/8 -0.0257 -0.0257 47 46 47 46
BM_format_to_string_begin<std::string>/16 -0.0264 -0.0263 47 46 47 46
BM_format_to_string_begin<std::string>/32 -0.0262 -0.0262 47 46 47 46
BM_format_to_string_begin<std::string>/64 -0.0158 -0.0158 47 46 47 46
BM_format_to_string_begin<std::string>/128 -0.0134 -0.0135 47 46 47 46
BM_format_to_string_begin<std::string>/256 -0.0365 -0.0365 52 50 52 50
BM_format_to_string_begin<std::string>/512 +0.0023 +0.0023 50 50 50 50
BM_format_to_string_begin<std::string>/1024 -0.0099 -0.0099 59 59 59 59
BM_format_to_string_begin<std::string>/2048 +0.2008 +0.2008 69 83 69 83
BM_format_to_string_begin<std::string>/4096 -0.0306 -0.0306 100 97 100 97
BM_format_to_string_begin<std::string>/8192 -0.0101 -0.0101 151 149 151 149
BM_format_to_string_begin<std::string>/16384 -0.0302 -0.0302 314 304 314 304
BM_format_to_string_begin<std::string>/32768 -0.0023 -0.0024 1336 1332 1336 1332
BM_format_to_string_begin<std::string>/65536 -0.1274 -0.1274 3763 3284 3763 3284
BM_format_to_string_begin<std::string>/131072 +0.0096 +0.0096 6556 6618 6556 6618
BM_format_to_string_begin<std::string>/262144 +0.0646 +0.0646 13979 14882 13979 14882
BM_format_to_string_begin<std::string>/524288 -0.0015 -0.0015 28719 28676 28719 28676
BM_format_to_string_begin<std::string>/1048576 -0.0008 -0.0008 57299 57252 57299 57252
BM_format_to_string_begin<std::vector<char>>/1 -0.0074 -0.0074 46 46 46 46
BM_format_to_string_begin<std::vector<char>>/2 -0.0018 -0.0018 46 46 46 46
BM_format_to_string_begin<std::vector<char>>/4 -0.0103 -0.0103 46 46 46 46
BM_format_to_string_begin<std::vector<char>>/8 -0.0046 -0.0046 46 45 46 45
BM_format_to_string_begin<std::vector<char>>/16 -0.0159 -0.0159 46 45 46 45
BM_format_to_string_begin<std::vector<char>>/32 -0.0085 -0.0085 46 46 46 46
BM_format_to_string_begin<std::vector<char>>/64 -0.0106 -0.0106 46 46 46 46
BM_format_to_string_begin<std::vector<char>>/128 -0.0095 -0.0095 47 46 47 46
BM_format_to_string_begin<std::vector<char>>/256 -0.0467 -0.0466 51 49 51 49
BM_format_to_string_begin<std::vector<char>>/512 -0.0072 -0.0073 50 50 50 50
BM_format_to_string_begin<std::vector<char>>/1024 -0.0017 -0.0017 59 59 59 59
BM_format_to_string_begin<std::vector<char>>/2048 +0.2143 +0.2142 69 84 69 84
BM_format_to_string_begin<std::vector<char>>/4096 +0.0138 +0.0138 98 99 98 99
BM_format_to_string_begin<std::vector<char>>/8192 -0.0252 -0.0253 152 148 152 148
BM_format_to_string_begin<std::vector<char>>/16384 -0.0307 -0.0307 314 304 314 304
BM_format_to_string_begin<std::vector<char>>/32768 +0.0004 +0.0004 1333 1334 1333 1334
BM_format_to_string_begin<std::vector<char>>/65536 -0.1269 -0.1269 3760 3283 3760 3283
BM_format_to_string_begin<std::vector<char>>/131072 +0.0136 +0.0135 6479 6567 6480 6567
BM_format_to_string_begin<std::vector<char>>/262144 -0.0067 -0.0067 14164 14069 14164 14069
BM_format_to_string_begin<std::vector<char>>/524288 -0.0062 -0.0062 28916 28738 28916 28738
BM_format_to_string_begin<std::vector<char>>/1048576 -0.0041 -0.0041 57621 57384 57622 57383
BM_format_to_string_begin<std::list<char>>/1 +0.0063 +0.0064 48 48 48 48
BM_format_to_string_begin<std::list<char>>/2 -0.0124 -0.0125 49 48 49 48
BM_format_to_string_begin<std::list<char>>/4 -0.0018 -0.0018 51 51 51 51
BM_format_to_string_begin<std::list<char>>/8 -0.0502 -0.0502 63 60 63 60
BM_format_to_string_begin<std::list<char>>/16 -0.0256 -0.0256 82 80 82 80
BM_format_to_string_begin<std::list<char>>/32 -0.0156 -0.0156 126 124 126 124
BM_format_to_string_begin<std::list<char>>/64 -0.0126 -0.0126 211 208 211 208
BM_format_to_string_begin<std::list<char>>/128 -0.0005 -0.0005 384 383 384 383
BM_format_to_string_begin<std::list<char>>/256 +0.0173 +0.0173 735 748 735 748
BM_format_to_string_begin<std::list<char>>/512 +0.0058 +0.0058 1428 1436 1428 1436
BM_format_to_string_begin<std::list<char>>/1024 +0.0366 +0.0366 2792 2894 2792 2894
BM_format_to_string_begin<std::list<char>>/2048 +0.0239 +0.0239 5594 5728 5594 5728
BM_format_to_string_begin<std::list<char>>/4096 +0.0150 +0.0151 11163 11331 11163 11331
BM_format_to_string_begin<std::list<char>>/8192 +0.0268 +0.0268 22339 22939 22339 22939
BM_format_to_string_begin<std::list<char>>/16384 +0.0287 +0.0287 44673 45955 44674 45955
BM_format_to_string_begin<std::list<char>>/32768 +0.0302 +0.0302 89015 91702 89016 91703
BM_format_to_string_begin<std::list<char>>/65536 +0.0232 +0.0232 177988 182117 177989 182119
BM_format_to_string_begin<std::list<char>>/131072 +0.0215 +0.0215 362715 370504 362697 370508
BM_format_to_string_begin<std::list<char>>/262144 +0.0068 +0.0068 846730 852511 846685 852470
BM_format_to_string_begin<std::list<char>>/524288 -0.0037 -0.0038 2018755 2011217 2018721 2011107
BM_format_to_string_begin<std::list<char>>/1048576 +0.0059 +0.0058 4225251 4250045 4225188 4249856
BM_format_to_string_span<char>/1 -0.0080 -0.0080 46 46 46 46
BM_format_to_string_span<char>/2 -0.0119 -0.0119 46 46 46 46
BM_format_to_string_span<char>/4 -0.0198 -0.0198 46 46 46 46
BM_format_to_string_span<char>/8 -0.0036 -0.0036 46 46 46 46
BM_format_to_string_span<char>/16 -0.0124 -0.0124 46 46 46 46
BM_format_to_string_span<char>/32 -0.0210 -0.0209 46 45 46 45
BM_format_to_string_span<char>/64 -0.0132 -0.0132 46 46 46 46
BM_format_to_string_span<char>/128 -0.0129 -0.0129 47 46 47 46
BM_format_to_string_span<char>/256 -0.0350 -0.0350 51 49 51 49
BM_format_to_string_span<char>/512 -0.0145 -0.0146 50 50 50 50
BM_format_to_string_span<char>/1024 -0.0068 -0.0068 60 59 60 59
BM_format_to_string_span<char>/2048 +0.2238 +0.2238 69 85 69 85
BM_format_to_string_span<char>/4096 -0.0400 -0.0400 98 94 98 94
BM_format_to_string_span<char>/8192 -0.0320 -0.0320 153 148 153 148
BM_format_to_string_span<char>/16384 -0.1350 -0.1350 316 273 316 273
BM_format_to_string_span<char>/32768 -0.0036 -0.0037 1339 1334 1339 1334
BM_format_to_string_span<char>/65536 -0.1316 -0.1316 3780 3282 3780 3282
BM_format_to_string_span<char>/131072 -0.0032 -0.0032 6557 6537 6557 6537
BM_format_to_string_span<char>/262144 -0.0050 -0.0050 14199 14128 14199 14128
BM_format_to_string_span<char>/524288 +0.0034 +0.0034 28833 28932 28834 28933
BM_format_to_string_span<char>/1048576 +0.0500 +0.0500 57660 60544 57660 60543
BM_format_to_string_pointer<char>/1 -0.0114 -0.0114 46 46 46 46
BM_format_to_string_pointer<char>/2 -0.0133 -0.0134 46 46 46 46
BM_format_to_string_pointer<char>/4 -0.0193 -0.0192 46 46 46 46
BM_format_to_string_pointer<char>/8 -0.0030 -0.0030 46 46 46 46
BM_format_to_string_pointer<char>/16 -0.0123 -0.0123 46 46 46 46
BM_format_to_string_pointer<char>/32 -0.0205 -0.0205 46 45 46 45
BM_format_to_string_pointer<char>/64 -0.0140 -0.0140 46 46 46 46
BM_format_to_string_pointer<char>/128 -0.0098 -0.0098 47 46 47 46
BM_format_to_string_pointer<char>/256 -0.0412 -0.0412 51 49 51 49
BM_format_to_string_pointer<char>/512 -0.0082 -0.0082 50 50 50 50
BM_format_to_string_pointer<char>/1024 -0.0034 -0.0034 59 59 59 59
BM_format_to_string_pointer<char>/2048 +0.2283 +0.2283 69 85 69 85
BM_format_to_string_pointer<char>/4096 -0.0327 -0.0327 98 94 98 94
BM_format_to_string_pointer<char>/8192 -0.0170 -0.0170 151 148 151 148
BM_format_to_string_pointer<char>/16384 -0.1268 -0.1268 314 274 314 274
BM_format_to_string_pointer<char>/32768 -0.0004 -0.0004 1336 1335 1336 1335
BM_format_to_string_pointer<char>/65536 -0.1260 -0.1260 3759 3286 3759 3286
BM_format_to_string_pointer<char>/131072 +0.0079 +0.0079 6538 6589 6537 6589
BM_format_to_string_pointer<char>/262144 -0.0104 -0.0104 14087 13941 14087 13942
BM_format_to_string_pointer<char>/524288 +0.0024 +0.0024 28681 28749 28681 28749
BM_format_to_string_pointer<char>/1048576 +0.0590 +0.0590 57528 60922 57529 60923
BM_format_to_string_back_inserter<std::wstring>/1 -0.0097 -0.0097 54 54 54 54
BM_format_to_string_back_inserter<std::wstring>/2 -0.0101 -0.0101 54 54 54 54
BM_format_to_string_back_inserter<std::wstring>/4 -0.0087 -0.0087 54 54 54 54
BM_format_to_string_back_inserter<std::wstring>/8 -0.0377 -0.0377 75 73 75 73
BM_format_to_string_back_inserter<std::wstring>/16 -0.0411 -0.0411 76 73 76 73
BM_format_to_string_back_inserter<std::wstring>/32 -0.0377 -0.0377 77 74 77 74
BM_format_to_string_back_inserter<std::wstring>/64 -0.1504 -0.1504 90 76 90 76
BM_format_to_string_back_inserter<std::wstring>/128 -0.3911 -0.3911 137 84 137 84
BM_format_to_string_back_inserter<std::wstring>/256 -0.5806 -0.5806 248 104 248 104
BM_format_to_string_back_inserter<std::wstring>/512 -0.4569 -0.4569 403 219 403 219
BM_format_to_string_back_inserter<std::wstring>/1024 -0.3579 -0.3579 640 411 640 411
BM_format_to_string_back_inserter<std::wstring>/2048 -0.3163 -0.3163 1091 746 1091 746
BM_format_to_string_back_inserter<std::wstring>/4096 -0.2068 -0.2068 2174 1725 2174 1725
BM_format_to_string_back_inserter<std::wstring>/8192 -0.2694 -0.2694 4557 3329 4557 3329
BM_format_to_string_back_inserter<std::wstring>/16384 -0.2075 -0.2075 8636 6845 8636 6845
BM_format_to_string_back_inserter<std::wstring>/32768 -0.1824 -0.1824 19780 16173 19780 16173
BM_format_to_string_back_inserter<std::wstring>/65536 -0.1782 -0.1782 43104 35422 43103 35423
BM_format_to_string_back_inserter<std::wstring>/131072 -0.1874 -0.1874 89918 73063 89919 73064
BM_format_to_string_back_inserter<std::wstring>/262144 -0.0498 -0.0499 681804 647858 681826 647788
BM_format_to_string_back_inserter<std::wstring>/524288 -0.0373 -0.0374 1478856 1423678 1478765 1423467
BM_format_to_string_back_inserter<std::wstring>/1048576 -0.0296 -0.0297 2840508 2756304 2840412 2756020
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1 -0.0234 -0.0233 68 67 68 67
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2 -0.0098 -0.0098 69 68 69 68
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4 -0.0196 -0.0196 71 69 71 69
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8 -0.0261 -0.0261 74 72 74 72
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16 -0.0509 -0.0510 81 77 81 77
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32 +0.0040 +0.0040 89 89 89 89
BM_format_to_string_back_inserter<std::vector<wchar_t>>/64 -0.0972 -0.0971 126 113 126 113
BM_format_to_string_back_inserter<std::vector<wchar_t>>/128 -0.2731 -0.2731 199 145 199 145
BM_format_to_string_back_inserter<std::vector<wchar_t>>/256 -0.2528 -0.2528 293 219 293 219
BM_format_to_string_back_inserter<std::vector<wchar_t>>/512 -0.0831 -0.0830 468 429 468 429
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1024 +0.0390 +0.0390 701 729 701 729
BM_format_to_string_back_inserter<std::vector<wchar_t>>/2048 +0.0175 +0.0175 1138 1157 1138 1157
BM_format_to_string_back_inserter<std::vector<wchar_t>>/4096 +0.0181 +0.0180 2060 2097 2060 2097
BM_format_to_string_back_inserter<std::vector<wchar_t>>/8192 -0.0152 -0.0152 3858 3799 3858 3799
BM_format_to_string_back_inserter<std::vector<wchar_t>>/16384 +0.0260 +0.0259 7401 7594 7401 7593
BM_format_to_string_back_inserter<std::vector<wchar_t>>/32768 -0.0189 -0.0189 17462 17132 17462 17132
BM_format_to_string_back_inserter<std::vector<wchar_t>>/65536 -0.0287 -0.0288 36165 35126 36166 35126
BM_format_to_string_back_inserter<std::vector<wchar_t>>/131072 -0.0581 -0.0581 72945 68707 72947 68708
BM_format_to_string_back_inserter<std::vector<wchar_t>>/262144 -0.0574 -0.0573 142931 134733 142930 134736
BM_format_to_string_back_inserter<std::vector<wchar_t>>/524288 -0.0321 -0.0321 336502 325704 336501 325696
BM_format_to_string_back_inserter<std::vector<wchar_t>>/1048576 +0.0263 +0.0263 962003 987276 961961 987268
BM_format_to_string_back_inserter<std::list<wchar_t>>/1 +0.0582 +0.0582 61 65 61 65
BM_format_to_string_back_inserter<std::list<wchar_t>>/2 -0.0160 -0.0160 77 76 77 76
BM_format_to_string_back_inserter<std::list<wchar_t>>/4 -0.0501 -0.0501 111 106 111 106
BM_format_to_string_back_inserter<std::list<wchar_t>>/8 -0.0378 -0.0377 179 172 179 172
BM_format_to_string_back_inserter<std::list<wchar_t>>/16 +0.0683 +0.0683 336 359 336 359
BM_format_to_string_back_inserter<std::list<wchar_t>>/32 +0.0269 +0.0269 650 667 650 667
BM_format_to_string_back_inserter<std::list<wchar_t>>/64 -0.0228 -0.0228 1272 1243 1272 1243
BM_format_to_string_back_inserter<std::list<wchar_t>>/128 -0.0185 -0.0185 2487 2441 2487 2441
BM_format_to_string_back_inserter<std::list<wchar_t>>/256 -0.0162 -0.0162 4964 4884 4964 4884
BM_format_to_string_back_inserter<std::list<wchar_t>>/512 -0.0123 -0.0123 9837 9715 9837 9716
BM_format_to_string_back_inserter<std::list<wchar_t>>/1024 -0.0148 -0.0148 19842 19549 19842 19549
BM_format_to_string_back_inserter<std::list<wchar_t>>/2048 -0.0156 -0.0156 39731 39111 39730 39112
BM_format_to_string_back_inserter<std::list<wchar_t>>/4096 -0.0179 -0.0179 79592 78165 79593 78165
BM_format_to_string_back_inserter<std::list<wchar_t>>/8192 -0.0148 -0.0148 159493 157138 159495 157136
BM_format_to_string_back_inserter<std::list<wchar_t>>/16384 -0.0104 -0.0104 317842 314543 317840 314548
BM_format_to_string_back_inserter<std::list<wchar_t>>/32768 -0.0072 -0.0072 634422 629860 634434 629857
BM_format_to_string_back_inserter<std::list<wchar_t>>/65536 -0.0088 -0.0088 1271414 1260234 1271449 1260229
BM_format_to_string_back_inserter<std::list<wchar_t>>/131072 -0.0031 -0.0032 2553515 2545555 2553543 2545480
BM_format_to_string_back_inserter<std::list<wchar_t>>/262144 +0.0102 +0.0094 5225959 5279010 5225902 5274830
BM_format_to_string_back_inserter<std::list<wchar_t>>/524288 +0.0042 +0.0043 10623331 10667884 10622433 10667981
BM_format_to_string_back_inserter<std::list<wchar_t>>/1048576 +0.0028 +0.0028 21606244 21667268 21606044 21665586
BM_format_to_string_begin<std::wstring>/1 -0.0321 -0.0320 45 44 45 44
BM_format_to_string_begin<std::wstring>/2 -0.0330 -0.0330 45 44 45 44
BM_format_to_string_begin<std::wstring>/4 -0.0319 -0.0319 45 44 45 44
BM_format_to_string_begin<std::wstring>/8 -0.0330 -0.0330 45 44 45 44
BM_format_to_string_begin<std::wstring>/16 -0.0325 -0.0326 45 44 45 44
BM_format_to_string_begin<std::wstring>/32 -0.0343 -0.0342 46 45 46 45
BM_format_to_string_begin<std::wstring>/64 -0.0267 -0.0267 49 48 49 48
BM_format_to_string_begin<std::wstring>/128 -0.0281 -0.0281 50 49 50 49
BM_format_to_string_begin<std::wstring>/256 +0.0704 +0.0705 54 58 54 58
BM_format_to_string_begin<std::wstring>/512 +0.2731 +0.2731 65 83 65 83
BM_format_to_string_begin<std::wstring>/1024 -0.0110 -0.0110 94 93 94 93
BM_format_to_string_begin<std::wstring>/2048 -0.0141 -0.0141 148 146 148 146
BM_format_to_string_begin<std::wstring>/4096 -0.1265 -0.1266 317 277 317 277
BM_format_to_string_begin<std::wstring>/8192 -0.0062 -0.0062 1338 1330 1338 1330
BM_format_to_string_begin<std::wstring>/16384 -0.1456 -0.1456 3910 3340 3910 3340
BM_format_to_string_begin<std::wstring>/32768 -0.0004 -0.0004 7066 7063 7066 7063
BM_format_to_string_begin<std::wstring>/65536 -0.0114 -0.0114 14908 14738 14908 14738
BM_format_to_string_begin<std::wstring>/131072 -0.0850 -0.0850 32636 29862 32636 29862
BM_format_to_string_begin<std::wstring>/262144 +0.0051 +0.0052 60037 60345 60037 60347
BM_format_to_string_begin<std::wstring>/524288 -0.0023 -0.0023 116806 116540 116808 116537
BM_format_to_string_begin<std::wstring>/1048576 -0.0408 -0.0408 247097 237020 247089 237009
BM_format_to_string_begin<std::vector<wchar_t>>/1 -0.0101 -0.0101 44 44 44 44
BM_format_to_string_begin<std::vector<wchar_t>>/2 -0.0109 -0.0109 44 44 44 44
BM_format_to_string_begin<std::vector<wchar_t>>/4 -0.0104 -0.0104 44 44 44 44
BM_format_to_string_begin<std::vector<wchar_t>>/8 -0.0084 -0.0084 44 44 44 44
BM_format_to_string_begin<std::vector<wchar_t>>/16 -0.0132 -0.0132 45 44 45 44
BM_format_to_string_begin<std::vector<wchar_t>>/32 -0.0137 -0.0138 45 45 45 45
BM_format_to_string_begin<std::vector<wchar_t>>/64 -0.1303 -0.1303 52 45 52 45
BM_format_to_string_begin<std::vector<wchar_t>>/128 -0.0125 -0.0125 49 48 49 48
BM_format_to_string_begin<std::vector<wchar_t>>/256 +0.0412 +0.0413 55 57 54 57
BM_format_to_string_begin<std::vector<wchar_t>>/512 +0.2858 +0.2859 64 83 64 83
BM_format_to_string_begin<std::vector<wchar_t>>/1024 -0.0232 -0.0232 94 92 94 92
BM_format_to_string_begin<std::vector<wchar_t>>/2048 -0.0209 -0.0209 148 145 148 145
BM_format_to_string_begin<std::vector<wchar_t>>/4096 -0.1425 -0.1425 319 273 319 273
BM_format_to_string_begin<std::vector<wchar_t>>/8192 -0.0080 -0.0080 1340 1329 1340 1329
BM_format_to_string_begin<std::vector<wchar_t>>/16384 -0.1682 -0.1682 3978 3309 3978 3309
BM_format_to_string_begin<std::vector<wchar_t>>/32768 +0.0197 +0.0197 6980 7117 6980 7117
BM_format_to_string_begin<std::vector<wchar_t>>/65536 +0.0318 +0.0318 14353 14810 14353 14810
BM_format_to_string_begin<std::vector<wchar_t>>/131072 -0.0313 -0.0313 31866 30869 31866 30870
BM_format_to_string_begin<std::vector<wchar_t>>/262144 +0.0594 +0.0594 58559 62039 58559 62040
BM_format_to_string_begin<std::vector<wchar_t>>/524288 -0.0042 -0.0041 117130 116643 117127 116642
BM_format_to_string_begin<std::vector<wchar_t>>/1048576 -0.0497 -0.0497 247971 235639 247961 235630
BM_format_to_string_begin<std::list<wchar_t>>/1 +0.0021 +0.0022 46 46 46 46
BM_format_to_string_begin<std::list<wchar_t>>/2 -0.0179 -0.0179 47 46 47 46
BM_format_to_string_begin<std::list<wchar_t>>/4 -0.0191 -0.0191 48 47 48 47
BM_format_to_string_begin<std::list<wchar_t>>/8 -0.0430 -0.0430 62 59 62 59
BM_format_to_string_begin<std::list<wchar_t>>/16 -0.0088 -0.0088 81 80 81 80
BM_format_to_string_begin<std::list<wchar_t>>/32 -0.0097 -0.0097 125 123 125 123
BM_format_to_string_begin<std::list<wchar_t>>/64 -0.0036 -0.0036 214 213 214 213
BM_format_to_string_begin<std::list<wchar_t>>/128 +0.0011 +0.0012 385 385 385 385
BM_format_to_string_begin<std::list<wchar_t>>/256 +0.2093 +0.2093 730 883 730 883
BM_format_to_string_begin<std::list<wchar_t>>/512 +0.1627 +0.1626 1425 1657 1425 1657
BM_format_to_string_begin<std::list<wchar_t>>/1024 +0.1843 +0.1843 2815 3334 2815 3334
BM_format_to_string_begin<std::list<wchar_t>>/2048 +0.1841 +0.1841 5614 6648 5614 6648
BM_format_to_string_begin<std::list<wchar_t>>/4096 +0.1809 +0.1810 11194 13219 11193 13219
BM_format_to_string_begin<std::list<wchar_t>>/8192 +0.1899 +0.1899 22330 26571 22330 26572
BM_format_to_string_begin<std::list<wchar_t>>/16384 +0.1992 +0.1992 44550 53425 44551 53425
BM_format_to_string_begin<std::list<wchar_t>>/32768 +0.1986 +0.1986 88796 106431 88797 106429
BM_format_to_string_begin<std::list<wchar_t>>/65536 +0.1955 +0.1954 177926 212703 177928 212704
BM_format_to_string_begin<std::list<wchar_t>>/131072 +0.2206 +0.2206 367815 448945 367803 448932
BM_format_to_string_begin<std::list<wchar_t>>/262144 +0.2074 +0.2073 891361 1076203 891325 1076125
BM_format_to_string_begin<std::list<wchar_t>>/524288 +0.1921 +0.1921 2131461 2540847 2131391 2540726
BM_format_to_string_begin<std::list<wchar_t>>/1048576 +0.1811 +0.1811 4429706 5232106 4429516 5231772
BM_format_to_string_span<wchar_t>/1 -0.0134 -0.0134 45 44 45 44
BM_format_to_string_span<wchar_t>/2 -0.0118 -0.0119 45 44 45 44
BM_format_to_string_span<wchar_t>/4 -0.0119 -0.0119 45 44 45 44
BM_format_to_string_span<wchar_t>/8 -0.0117 -0.0117 45 44 45 44
BM_format_to_string_span<wchar_t>/16 -0.0148 -0.0148 45 44 45 44
BM_format_to_string_span<wchar_t>/32 -0.0148 -0.0148 45 45 45 45
BM_format_to_string_span<wchar_t>/64 -0.0104 -0.0104 48 48 48 48
BM_format_to_string_span<wchar_t>/128 -0.0137 -0.0137 49 48 49 48
BM_format_to_string_span<wchar_t>/256 +0.0525 +0.0526 55 57 55 57
BM_format_to_string_span<wchar_t>/512 +0.2918 +0.2918 64 83 64 83
BM_format_to_string_span<wchar_t>/1024 -0.0190 -0.0190 94 92 94 92
BM_format_to_string_span<wchar_t>/2048 -0.0070 -0.0070 147 146 147 146
BM_format_to_string_span<wchar_t>/4096 -0.1275 -0.1274 316 276 316 276
BM_format_to_string_span<wchar_t>/8192 -0.0035 -0.0035 1334 1329 1334 1329
BM_format_to_string_span<wchar_t>/16384 -0.1429 -0.1429 3889 3334 3890 3334
BM_format_to_string_span<wchar_t>/32768 +0.0114 +0.0114 7045 7126 7045 7126
BM_format_to_string_span<wchar_t>/65536 +0.0301 +0.0301 14812 15258 14813 15259
BM_format_to_string_span<wchar_t>/131072 +0.0611 +0.0611 30052 31890 30052 31890
BM_format_to_string_span<wchar_t>/262144 -0.0194 -0.0194 60795 59619 60796 59619
BM_format_to_string_span<wchar_t>/524288 -0.0000 +0.0000 116559 116558 116557 116559
BM_format_to_string_span<wchar_t>/1048576 -0.0388 -0.0388 243495 234040 243492 234033
BM_format_to_string_pointer<wchar_t>/1 -0.0108 -0.0107 44 44 44 44
BM_format_to_string_pointer<wchar_t>/2 -0.0135 -0.0135 45 44 45 44
BM_format_to_string_pointer<wchar_t>/4 -0.0133 -0.0133 45 44 45 44
BM_format_to_string_pointer<wchar_t>/8 -0.0142 -0.0142 45 44 45 44
BM_format_to_string_pointer<wchar_t>/16 -0.0157 -0.0157 45 44 45 44
BM_format_to_string_pointer<wchar_t>/32 -0.0148 -0.0148 45 45 45 45
BM_format_to_string_pointer<wchar_t>/64 -0.0070 -0.0070 48 48 48 48
BM_format_to_string_pointer<wchar_t>/128 -0.0152 -0.0152 49 48 49 48
BM_format_to_string_pointer<wchar_t>/256 +0.0538 +0.0537 54 57 54 57
BM_format_to_string_pointer<wchar_t>/512 +0.2891 +0.2892 64 83 64 83
BM_format_to_string_pointer<wchar_t>/1024 -0.0231 -0.0230 94 92 94 92
BM_format_to_string_pointer<wchar_t>/2048 -0.0129 -0.0129 147 145 147 145
BM_format_to_string_pointer<wchar_t>/4096 -0.1307 -0.1307 317 276 317 276
BM_format_to_string_pointer<wchar_t>/8192 -0.0057 -0.0057 1338 1331 1338 1331
BM_format_to_string_pointer<wchar_t>/16384 -0.1468 -0.1467 3904 3331 3904 3331
BM_format_to_string_pointer<wchar_t>/32768 +0.0007 +0.0007 7079 7084 7079 7084
BM_format_to_string_pointer<wchar_t>/65536 -0.0115 -0.0115 14890 14719 14890 14719
BM_format_to_string_pointer<wchar_t>/131072 -0.0101 -0.0101 30190 29885 30190 29885
BM_format_to_string_pointer<wchar_t>/262144 -0.0177 -0.0176 61132 60052 61131 60053
BM_format_to_string_pointer<wchar_t>/524288 -0.0070 -0.0070 117069 116248 117071 116248
BM_format_to_string_pointer<wchar_t>/1048576 -0.0440 -0.0441 244917 234130 244915 234121
OVERALL_GEOMEAN -0.0153 -0.0152 0 0 0 0
---
libcxx/include/__format/buffer.h | 90 ++++++++++++++++++++++
libcxx/include/__format/format_functions.h | 4 +-
2 files changed, 92 insertions(+), 2 deletions(-)
diff --git a/libcxx/include/__format/buffer.h b/libcxx/include/__format/buffer.h
index bfe26bfb01cb5..5337c2fe0481c 100644
--- a/libcxx/include/__format/buffer.h
+++ b/libcxx/include/__format/buffer.h
@@ -39,6 +39,7 @@
#include <__utility/exception_guard.h>
#include <__utility/move.h>
#include <cstddef>
+#include <stdexcept>
#include <string_view>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
@@ -722,6 +723,95 @@ class _LIBCPP_TEMPLATE_VIS __allocating_buffer : public __output_buffer<_CharT>
}
};
+// A buffer that directly writes to the underlying buffer.
+template <class _OutIt, __fmt_char_type _CharT>
+class _LIBCPP_TEMPLATE_VIS __direct_iterator_buffer : public __output_buffer<_CharT> {
+public:
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI explicit __direct_iterator_buffer(_OutIt __out_it)
+ : __output_buffer<_CharT>{std::__unwrap_iter(__out_it), __buffer_size, __prepare_write}, __out_it_(__out_it) {}
+
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _OutIt __out_it() && { return __out_it_ + this->__size(); }
+
+private:
+ // The function format_to expects a buffer large enough for the output. The
+ // function format_to_n has its own helper class that restricts the number of
+ // write options. So this function class can pretend to have an infinite
+ // buffer.
+ static constexpr size_t __buffer_size = -1;
+
+ _OutIt __out_it_;
+
+ _LIBCPP_HIDE_FROM_ABI static void
+ __prepare_write([[maybe_unused]] __output_buffer<_CharT>& __buffer, [[maybe_unused]] size_t __size_hint) {
+ std::__throw_length_error("__direct_iterator_buffer");
+ }
+};
+
+// A buffer that writes its output to the end of a container.
+template <class _OutIt, __fmt_char_type _CharT>
+class _LIBCPP_TEMPLATE_VIS __container_inserter_buffer : public __output_buffer<_CharT> {
+public:
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI explicit __container_inserter_buffer(_OutIt __out_it)
+ : __output_buffer<_CharT>{__buffer_, __buffer_size, __prepare_write}, __container_{__out_it.__get_container()} {}
+
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI auto __out_it() && {
+ __container_->insert(__container_->end(), __buffer_, __buffer_ + this->__size());
+ return std::back_inserter(*__container_);
+ }
+
+private:
+ typename __back_insert_iterator_container<_OutIt>::type* __container_;
+
+ // This class uses a fixed size buffer and appends the elements in
+ // __buffer_size chunks. An alternative would be to use an allocating buffer
+ // and append the output in one write operation. Benchmarking showed no
+ // performance difference.
+ static constexpr size_t __buffer_size = 256;
+ _CharT __buffer_[__buffer_size];
+
+ _LIBCPP_HIDE_FROM_ABI void __prepare_write() {
+ __container_->insert(__container_->end(), __buffer_, __buffer_ + this->__size());
+ this->__buffer_flused();
+ }
+
+ _LIBCPP_HIDE_FROM_ABI static void
+ __prepare_write(__output_buffer<_CharT>& __buffer, [[maybe_unused]] size_t __size_hint) {
+ static_cast<__container_inserter_buffer<_OutIt, _CharT>&>(__buffer).__prepare_write();
+ }
+};
+
+// A buffer that writes to an iterator.
+//
+// Unlinke the __container_inserter_buffer this class' perfomance does benefit
+// from allocating and then inserting.
+template <class _OutIt, __fmt_char_type _CharT>
+class _LIBCPP_TEMPLATE_VIS __iterator_buffer : public __allocating_buffer<_CharT> {
+public:
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI explicit __iterator_buffer(_OutIt __out_it)
+ : __allocating_buffer<_CharT>{}, __out_it_{std::move(__out_it)} {}
+
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI auto __out_it() && {
+ return std::ranges::copy(this->__view(), std::move(__out_it_)).out;
+ }
+
+private:
+ _OutIt __out_it_;
+};
+
+// Selects the type of the buffer used for the output iterator.
+template <class _OutIt, __fmt_char_type _CharT>
+class _LIBCPP_TEMPLATE_VIS __buffer_selector {
+ using _Container = __back_insert_iterator_container<_OutIt>::type;
+
+public:
+ using type =
+ conditional_t<!same_as<_Container, void>,
+ __container_inserter_buffer<_OutIt, _CharT>,
+ conditional_t<__enable_direct_output<_OutIt, _CharT>,
+ __direct_iterator_buffer<_OutIt, _CharT>,
+ __iterator_buffer<_OutIt, _CharT>>>;
+};
+
// ***** ***** ***** LLVM-19 and LLVM-20 class ***** ***** *****
// A dynamically growing buffer intended to be used for retargeting a context.
diff --git a/libcxx/include/__format/format_functions.h b/libcxx/include/__format/format_functions.h
index a5c63bd4db70f..523cd5a785a9b 100644
--- a/libcxx/include/__format/format_functions.h
+++ b/libcxx/include/__format/format_functions.h
@@ -411,7 +411,7 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __vformat_to(_OutIt __out_it,
return std::__format::__vformat_to(
basic_format_parse_context{__fmt, __args.__size()}, std::__format_context_create(std::move(__out_it), __args));
else {
- __format::__format_buffer<_OutIt, _CharT> __buffer{std::move(__out_it)};
+ typename __format::__buffer_selector<_OutIt, _CharT>::type __buffer{std::move(__out_it)};
std::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()},
std::__format_context_create(__buffer.__make_output_iterator(), __args));
return std::move(__buffer).__out_it();
@@ -544,7 +544,7 @@ _LIBCPP_HIDE_FROM_ABI _OutIt __vformat_to(
return std::__format::__vformat_to(basic_format_parse_context{__fmt, __args.__size()},
std::__format_context_create(std::move(__out_it), __args, std::move(__loc)));
else {
- __format::__format_buffer<_OutIt, _CharT> __buffer{std::move(__out_it)};
+ typename __format::__buffer_selector<_OutIt, _CharT>::type __buffer{std::move(__out_it)};
std::__format::__vformat_to(
basic_format_parse_context{__fmt, __args.__size()},
std::__format_context_create(__buffer.__make_output_iterator(), __args, std::move(__loc)));
More information about the llvm-branch-commits
mailing list