From ce3fe2204c8d9d6472a6d2c6109a3e50caff94fc Mon Sep 17 00:00:00 2001 From: Aleksandr Orefkov Date: Thu, 29 Jan 2026 23:48:41 +0300 Subject: [PATCH] - Update benchmarks results. - Add support for pretty view in debuggers for str_src and str_src_nt. --- bench/results.html | 875 +++++---- ... E5-2682 v4, Ubuntu 22 (WSL), Clang-21.txt | 1652 ++++++++-------- ...on E5-2682 v4, Ubuntu 22 (WSL), GCC-13.txt | 1656 ++++++++-------- ...-Xeon E5-2682 v4, Windows 10, Clang-19.txt | 1682 ++++++++-------- ...3-Xeon E5-2682 v4, Windows 10, MSVC-19.txt | 1684 +++++++++-------- ...eon E5-2682 v4, WASM Firefox, Clang-21.txt | 1670 ++++++++-------- for_debug/simstr.natvis | 21 + for_debug/simstr_pretty_print.py | 2 + readme.md | 139 +- readme_ru.md | 41 +- 10 files changed, 4777 insertions(+), 4645 deletions(-) diff --git a/bench/results.html b/bench/results.html index 3509e8b..043489a 100644 --- a/bench/results.html +++ b/bench/results.html @@ -274,7 +274,7 @@ L1 Instruction 32 KiB (x16) L2 Unified 256 KiB (x16) L3 Unified 40960 KiB (x1) -Load Average: 0.00, 0.23, 0.51 +Load Average: 0.00, 0.00, 0.00 ***WARNING*** ASLR is enabled, the results may have unreproducible noise in them. Include in charts:
  • Xeon E5-2682 v4, Ubuntu 22 (WSL), GCC-1332 X 2494.22 MHz CPU sCPU Caches: L1 Data 32 KiB (x16) @@ -309,7 +309,7 @@ Load Average: 0.00, 0.00, 0.00 benchmark::DoNotOptimize(str); } } -}226207266331925 +}219209265386862 Concat std::string and number by StrExpr to std::stringvoid ConcatSimToStd(benchmark::State& state) { std::string s1 = "start "; for (auto _: state) { @@ -319,7 +319,7 @@ Load Average: 0.00, 0.00, 0.00 benchmark::DoNotOptimize(str); } } -}104102157211415 +}105104178266384 Concat stringa and number by StrExpr to simstr::stringavoid ConcatSimToSim(benchmark::State& state) { stra s1 = "start "; for (auto _: state) { @@ -336,11 +336,22 @@ Load Average: 0.00, 0.00, 0.00 Unlike std::string, stringa holds 23 characters in SSO instead of 15, so at the end of the std::string test, memory has to be allocated, -while in stringa , the entire test is included in SSO.63.770.466.4108211 +while in stringa , the entire test is included in SSO.66.381.566.5128196 +Concat stringa and number by e_concat to simstr::stringavoid ConcatSimToSimConcat(benchmark::State& state) { + stra s1 = "start "; + for (auto _: state) { + for (int i = 1; i <= 100'000; i *= 10) { + benchmark::DoNotOptimize(s1); + stringa str = e_concat("", s1, i, " end"); + benchmark::DoNotOptimize(str); + } + } +}68.880.274.9145193

    # Concatenate string + Hex Number + "Literal"

    @@ -352,11 +363,11 @@ while in stringa , the entire test is included in SSO.68166877710741446 +}861935151820921594 Concat std::string and hex number by StrExpr to std::stringvoid ConcatSimToStdHex(benchmark::State& state) { // We use a short string so that the longest result is 15 characters and fits in the std::string SSO buffer. std::string s1 = "art "; @@ -367,7 +378,7 @@ while in stringa , the entire test is included in SSO.71.765.976.6136365 +}86.469.681.0182371 Concat stringa and hex number by StrExpr to simstr::stringavoid ConcatSimToSimHex(benchmark::State& state) { // stringa SSO buffer is 23, but we use a short string to compare under the same conditions stra s1 = "art "; @@ -378,11 +389,35 @@ while in stringa , the entire test is included in SSO.67.968.267.9101196 +}75.870.476.6124185 +Concat stringa and hex number by e_concat to simstr::stringavoid ConcatSimToSimHexC(benchmark::State& state) { + // stringa SSO buffer is 23, but we use a short string to compare under the same conditions + stra s1 = "art "; + for (auto _: state) { + for (unsigned i = 1; i <= 100'000; i *= 10) { + benchmark::DoNotOptimize(s1); + stringa str = e_concat("", s1, e_hex<HexFlags::Short>(i), " end"); + benchmark::DoNotOptimize(str); + } + } +}75.078.978.3180197 +Concat stringa and hex number by e_subst to simstr::stringavoid ConcatSimToSimHexS(benchmark::State& state) { + // stringa SSO buffer is 23, but we use a short string to compare under the same conditions + stra s1 = "art "; + for (auto _: state) { + for (unsigned i = 1; i <= 100'000; i *= 10) { + benchmark::DoNotOptimize(s1); + stringa str = e_subst(S_FRM("{}{} end"), s1, e_hex<HexFlags::Short>(i)); + benchmark::DoNotOptimize(str); + } + } +}150157150266402

    # Concatenate string + "Literal"

    @@ -396,7 +431,7 @@ while in stringa , the entire test is included in SSO.49.744.739.855.4111 +}45.245.540.172.587.7 Concat std::string by StrExpr to std::stringvoid ConcatSimToStdS(benchmark::State& state) { std::string s1 = "start "; for (auto _: state) { @@ -406,7 +441,7 @@ while in stringa , the entire test is included in SSO.40.535.939.177.9113 +}33.936.839.491.497.9 Concat stringa by StrExpr to stringavoid ConcatSimToSimS(benchmark::State& state) { stra s1 = "start "; for (auto _: state) { @@ -416,11 +451,11 @@ while in stringa , the entire test is included in SSO.27.025.929.252.595.9 +}29.127.228.760.191.9

    # Find three concatenated string in string_view

    @@ -428,20 +463,20 @@ while in stringa , the entire test is included in SSO.Find concat three std::stringsize_t find_pos_str(std::string_view src, std::string_view name) { // before C++26 we can not concatenate string and string_view... return src.find("\n- "s + std::string{name} + " -\n"); -}116130208225178 +}112135205265173 Find concat three strexprsize_t find_pos_exp(ssa src, ssa name) { return src.find(std::string{"\n- " + name + " -\n"}); -}51.139.8116122106 +}50.644.3114150110 Find concat three simstrsize_t find_pos_sim(ssa src, ssa name) { return src.find(lstringa<200>{"\n- " + name + " -\n"}); } >> Если результат конкатенации меньше 207 символов, он собирается в буфере на стеке, без аллокации и деалокации. If the concatenation result is less than 207 characters, -it is collected in a stack-based buffer, without allocation or deallocation.19.620.222.228.473.7 +it is collected in a stack-based buffer, without allocation or deallocation.22.853.421.532.476.2

    # Build Type Name

    @@ -456,19 +491,19 @@ it is collected in a stack-based buffer, without allocation or deallocation.7.6410.78.2517.918.2 +}7.1710.18.2220.915.2 BuildTypeNameExp 0/0std::string buildTypeNameExp(ssa type_name, size_t prec, size_t scale) { if (prec) { return type_name + "(" + prec + e_if(scale, ","_ss + scale) + ")"; } return type_name; -}6.526.637.5014.217.0 +}6.737.227.6214.815.8 BuildTypeNameSim 0/0stringa buildTypeNameSim(ssa type_name, size_t prec, size_t scale) { if (prec) { return type_name + "(" + prec + e_if(scale, ","_ss + scale) + ")"; } return type_name; -}4.995.238.3517.217.0 +}5.575.458.1918.315.6 BuildTypeNameStr 10/10std::string buildTypeNameStr(std::string_view type_name, size_t prec, size_t scale) { std::string res{type_name}; if (prec) { @@ -479,26 +514,26 @@ it is collected in a stack-based buffer, without allocation or deallocation.56.891.959.579.4275 +}57.286.464.1100253 BuildTypeNameExp 10/10std::string buildTypeNameExp(ssa type_name, size_t prec, size_t scale) { if (prec) { return type_name + "(" + prec + e_if(scale, ","_ss + scale) + ")"; } return type_name; -}30.525.334.240.099.6 +}31.124.933.948.092.7 BuildTypeNameSim 10/10stringa buildTypeNameSim(ssa type_name, size_t prec, size_t scale) { if (prec) { return type_name + "(" + prec + e_if(scale, ","_ss + scale) + ")"; } return type_name; -}22.722.726.437.971.2 +}24.722.225.344.665.5

    # Replace string by copy

    @@ -519,15 +554,15 @@ it is collected in a stack-based buffer, without allocation or deallocation."; -}207242318362451 +}202231312430411 Concat with replace expstd::string make_str_exp(std::string_view from, std::string_view pattern, std::string_view repl) { return "<" + e_repl(from, pattern, repl) + ">"; } >> В simstr строковое выражение для замены подстрок есть "из коробки". -simstr has a string expression for replacing substrings out of the box.149135224223248 +simstr has a string expression for replacing substrings out of the box.151139228278243

    # Create Empty Str

    @@ -539,49 +574,49 @@ void CreateEmpty(benchmark::State& state) { benchmark::DoNotOptimize(empty_string); } } >> Пустые строки, ничего необычного. -Empty lines, nothing unusual.1.121.121.112.632.18 +Empty lines, nothing unusual.1.161.151.172.852.14 std::string_view e;template<typename T> void CreateEmpty(benchmark::State& state) { for (auto _: state) { T empty_string; benchmark::DoNotOptimize(empty_string); } -}0.3730.7370.3721.840.993 +}0.3840.7720.3632.020.972 ssa e;template<typename T> void CreateEmpty(benchmark::State& state) { for (auto _: state) { T empty_string; benchmark::DoNotOptimize(empty_string); } -}0.3670.1820.3641.830.952 +}0.3780.1900.3602.050.939 stringa e;template<typename T> void CreateEmpty(benchmark::State& state) { for (auto _: state) { T empty_string; benchmark::DoNotOptimize(empty_string); } -}0.7530.7510.7572.222.19 +}0.7620.7500.7402.422.15 lstringa<20> e;template<typename T> void CreateEmpty(benchmark::State& state) { for (auto _: state) { T empty_string; benchmark::DoNotOptimize(empty_string); } -}1.131.121.122.592.26 +}1.141.111.112.912.19 lstringa<40> e;template<typename T> void CreateEmpty(benchmark::State& state) { for (auto _: state) { T empty_string; benchmark::DoNotOptimize(empty_string); } -}1.131.111.152.562.60 +}1.121.121.103.012.58

    # Create Str from short literal (9 symbols)

    @@ -595,7 +630,7 @@ void CreateShortLiteral(benchmark::State& state) { } >> Короткий литерал помещается во внутренний буфер std::string, время тратится только на копирование 10 байтов. The short literal is placed in the internal std::string buffer; -time is spent only copying 10 bytes.1.841.871.852.642.37 +time is spent only copying 10 bytes.1.841.871.822.902.33 std::string_view e = "Test text";template<typename T> void CreateShortLiteral(benchmark::State& state) { for (auto _: state) { @@ -605,14 +640,14 @@ void CreateShortLiteral(benchmark::State& state) { } >> И string_view, и ssa - по сути одно и то же: указатель на текст и его длина. Both string_view and ssa are essentially the same thing: -a pointer to text and its length.0.7500.7300.7281.851.29 +a pointer to text and its length.0.7390.8060.7692.051.24 ssa e = "Test text";template<typename T> void CreateShortLiteral(benchmark::State& state) { for (auto _: state) { T empty_string = TEST_TEXT; benchmark::DoNotOptimize(empty_string); } -}0.3810.7360.3701.831.01 +}0.3690.7500.3652.030.968 stringa e = "Test text";template<typename T> void CreateShortLiteral(benchmark::State& state) { for (auto _: state) { @@ -622,7 +657,7 @@ void CreateShortLiteral(benchmark::State& state) { } >> stringa при инициализации константным литералом так же сохраняет только указатель на текст и его длину. When initialized with a constant literal, stringa also stores -only a pointer to the text and its length.1.851.121.852.202.63 +only a pointer to the text and its length.1.151.121.082.872.16 lstringa<20> e = "Test text";template<typename T> void CreateShortLiteral(benchmark::State& state) { for (auto _: state) { @@ -632,21 +667,21 @@ void CreateShortLiteral(benchmark::State& state) { } >> Внутреннего буфера хватает для размещения символов, время уходит только на копирование байтов. The internal buffer is sufficient to accommodate characters; -time is spent only on copying bytes.1.871.871.892.592.77 +time is spent only on copying bytes.1.941.921.852.962.65 lstringa<40> e = "Test text";template<typename T> void CreateShortLiteral(benchmark::State& state) { for (auto _: state) { T empty_string = TEST_TEXT; benchmark::DoNotOptimize(empty_string); } -}1.851.891.912.582.78 +}1.881.881.872.952.61

    # Create Str from long literal (30 symbols)

    @@ -662,7 +697,7 @@ void CreateLongLiteral(benchmark::State& state) { Но как же отстает аллокация под Windows от Linux'а, 20 vs 70 ns... Here, the literal doesn't fit into the internal buffer, and 30 bytes are allocated and copied. -But how much slower is allocation under Windows than under Linux, 20 ns vs. 70 ns...18.819.374.977.516.5 +But how much slower is allocation under Windows than under Linux, 20 ns vs. 70 ns...19.619.572.196.316.0 std::string_view e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { @@ -672,14 +707,14 @@ void CreateLongLiteral(benchmark::State& state) { } >> string_view и ssa по прежнему ничего не делают, кроме запоминания указателя на текст и его размера. string_view and ssa still do nothing except -remember the pointer to the text and its size.0.7470.7440.7361.831.26 +remember the pointer to the text and its size.0.7710.7440.7342.061.28 ssa e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { T empty_string{LONG_TEXT}; benchmark::DoNotOptimize(empty_string); } -}0.3700.7350.3651.831.01 +}0.3820.7380.3602.060.971 stringa e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { @@ -687,7 +722,7 @@ void CreateLongLiteral(benchmark::State& state) { benchmark::DoNotOptimize(empty_string); } } >> stringa на константных литералах не отстает! -stringa doesn't lag behind on constant literals!1.881.121.852.242.67 +stringa doesn't lag behind on constant literals!1.131.111.083.002.18 lstringa<20> e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { @@ -696,7 +731,7 @@ void CreateLongLiteral(benchmark::State& state) { } } >> lstringa<20> может вместить в себя до 23 символов, Очевидно, что для 30-и символов уже нужна аллокация. -Obviously, 30 characters already require allocation.21.020.076.877.716.9 +Obviously, 30 characters already require allocation.24.323.074.597.116.5 lstringa<40> e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { @@ -706,14 +741,14 @@ void CreateLongLiteral(benchmark::State& state) { } >> А в lstringa<40> влезает до 47 символов, так что просто копируется 30 байтов. And lstringa<40> can hold up to 47 characters, so 30 -bytes are simply copied.2.551.842.533.423.01 +bytes are simply copied.2.601.962.523.653.00

    # Create copy of Str with 9 symbols

    @@ -727,7 +762,7 @@ void CopyShortString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> Строка в пределах SSO, так что просто копирует байты. -The string is within the SSO, so it just copies the bytes.4.834.801.875.432.27 +The string is within the SSO, so it just copies the bytes.5.674.971.845.612.21 std::string_view e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -736,7 +771,7 @@ void CopyShortString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}0.3770.3730.3682.941.26 +}0.3770.3990.3733.951.26 ssa e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -748,7 +783,7 @@ void CopyShortString(benchmark::State& state) { } >> ssa и string_view не владеют строкой, копируется только информация о строке. ssa and string_view don't own the string; only the -string information is copied.0.3680.3760.3752.921.27 +string information is copied.0.3870.3810.3633.921.24 stringa e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -760,7 +795,7 @@ void CopyShortString(benchmark::State& state) { } >> Копирование stringa происходит быстро, особенно если она инициализирована литералом. Copying a stringa is fast, -especially if it is initialized with a literal.1.111.371.324.132.64 +especially if it is initialized with a literal.1.141.151.284.442.55 lstringa<20> e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -770,7 +805,7 @@ void CopyShortString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> В обоих случаях хватает внутреннего буфера. -In both cases, the internal buffer is sufficient.4.184.435.307.7414.1 +In both cases, the internal buffer is sufficient.4.294.564.749.7215.2 lstringa<40> e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -780,14 +815,14 @@ void CopyShortString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> Только копируются байты. -Only bytes are copied.4.474.495.228.5614.2 +Only bytes are copied.4.204.614.709.6114.5

    # Create copy of Str with 30 symbols

    @@ -802,7 +837,7 @@ void CopyLongString(benchmark::State& state) { } >> Копирования длинной строки вызывает аллокацию, SSO уже не хватает. И снова как же отстаёт аллокация под Windows... Copying a long string causes allocations, -SSO is no longer sufficient. And again, how allocation lags under Windows...19.824.381.377.534.3 +SSO is no longer sufficient. And again, how allocation lags under Windows...21.225.376.694.633.3 std::string_view e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -810,7 +845,7 @@ void CopyLongString(benchmark::State& state) { T copy{x}; benchmark::DoNotOptimize(copy); } -}0.7520.7240.7411.881.25 +}0.7370.7310.7141.941.27 ssa e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -818,7 +853,7 @@ void CopyLongString(benchmark::State& state) { T copy{x}; benchmark::DoNotOptimize(copy); } -}0.3750.7520.3621.831.01 +}0.3790.7310.3621.970.981 stringa e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -829,7 +864,7 @@ void CopyLongString(benchmark::State& state) { } >> А вот у stringa копирование литерала не зависит от его длины, сравни с предыдущим бенчмарком. But with stringa, literal copying doesn't depend on its length, -compare with the previous benchmark.1.891.111.833.022.66 +compare with the previous benchmark.1.131.131.843.362.19 lstringa<20> e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -838,7 +873,7 @@ void CopyLongString(benchmark::State& state) { benchmark::DoNotOptimize(copy); } } >> Не влезает, аллокация. -Doesn't fit, allocation.21.020.176.179.317.2 +Doesn't fit, allocation.20.722.579.197.115.7 lstringa<40> e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -847,14 +882,14 @@ void CopyLongString(benchmark::State& state) { benchmark::DoNotOptimize(copy); } } >> Уложили во внутренний буфер. -Placed in the internal buffer.4.534.524.386.6313.9 +Placed in the internal buffer.4.484.614.468.1614.2

    # Find 9 symbols text in end of 99 symbols text

    @@ -876,7 +911,7 @@ void Find(benchmark::State& state) { } >> Здесь "победила дружба", у всех типов по колонке примерно одинаково. Однако, Windows и Linux явно в разных весовых категориях. Here, "friendship wins," with all types scoring roughly equally. -However, Windows and Linux are clearly in different weight classes.7.867.3338.340.754.3 +However, Windows and Linux are clearly in different weight classes.8.537.7438.246.354.4 std::string_view::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -891,7 +926,7 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}7.366.7838.140.853.4 +}7.926.6838.245.056.9 ssa::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -906,7 +941,7 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}7.036.3218.322.652.7 +}7.086.4517.825.556.5 stringa::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -921,7 +956,7 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}7.176.7719.828.453.8 +}7.656.7818.734.460.3 lstringa<20>::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -936,7 +971,7 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}6.436.3317.623.252.5 +}7.066.9519.634.152.4 lstringa<40>::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -951,14 +986,14 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}6.566.4317.821.352.6 +}6.796.8717.524.051.0

    # Copy not literal Str with N symbols

    @@ -971,7 +1006,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}5.695.201.865.2735.9 +}4.985.031.804.9134.4 std::string copy{str_with_len_N};/16template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -985,7 +1020,7 @@ void CopyDynString(benchmark::State& state) { SSO у std::string меньше, насколько я помню, 11 символов + 0. The jump where SSO ends and allocation begins is clearly visible. Note that WASM is 32-bit, and the size of the SSO for std::string is -smaller, as far as I remember: 11 characters + 0.23.623.680.483.435.4 +smaller, as far as I remember: 11 characters + 0.23.523.780.710734.6 std::string copy{str_with_len_N};/23template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -995,7 +1030,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> Дальше просто добавляется время на копирование байтов. -Then the time for copying bytes is simply added.24.023.078.082.936.3 +Then the time for copying bytes is simply added.23.123.281.510035.2 std::string copy{str_with_len_N};/24template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1004,7 +1039,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}23.323.180.283.835.6 +}23.123.279.110434.8 std::string copy{str_with_len_N};/32template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1013,7 +1048,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}23.223.482.788.039.4 +}25.325.681.010841.2 std::string copy{str_with_len_N};/64template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1022,7 +1057,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}23.324.082.084.339.6 +}22.724.782.111337.9 std::string copy{str_with_len_N};/128template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1031,7 +1066,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}25.224.589.887.841.3 +}25.825.984.910439.8 std::string copy{str_with_len_N};/256template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1040,7 +1075,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}25.425.191.488.558.6 +}24.625.584.911059.6 std::string copy{str_with_len_N};/512template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1049,7 +1084,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}29.929.089.291.653.9 +}28.629.895.711057.3 std::string copy{str_with_len_N};/1024template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1058,7 +1093,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}44.144.396.899.953.1 +}47.046.495.912559.5 std::string copy{str_with_len_N};/2048template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1067,7 +1102,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}13013013012977.9 +}12412413115082.2 std::string copy{str_with_len_N};/4096template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1077,7 +1112,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> Чем длиннее строка, тем дольше создаётся копия. -The longer the string, the longer it takes to create a copy.153157178177130 +The longer the string, the longer it takes to create a copy.168158175206111 stringa copy{str_with_len_N};/15template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1089,7 +1124,7 @@ void CopyDynString(benchmark::State& state) { } >> Здесь stringa инициализируется не литералом, а значит, должна сама хранить символы. Here, stringa is not initialized with a literal, -meaning it must store characters itself.1.101.141.284.052.64 +meaning it must store characters itself.1.101.121.314.442.54 stringa copy{str_with_len_N};/16template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1103,7 +1138,7 @@ void CopyDynString(benchmark::State& state) { инкремент заменён на обычный, судя по времени. Under WASM, stringa has a 15-character SSO. Furthermore, it was built without thread support, so the atomic -increment was replaced with a regular one, judging by the time.1.101.101.284.034.98 +increment was replaced with a regular one, judging by the time.1.111.131.294.434.81 stringa copy{str_with_len_N};/23template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1115,7 +1150,7 @@ void CopyDynString(benchmark::State& state) { } >> SSO в stringa до 23 символов, и даже 23 копируются быстрее, чем 15 в std::string. SSO in stringa is up to 23 characters, and even 23 -copies faster than 15 in std::string.1.101.111.284.105.00 +copies faster than 15 in std::string.1.121.131.294.454.84 stringa copy{str_with_len_N};/24template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1127,7 +1162,7 @@ void CopyDynString(benchmark::State& state) { } >> Всё, не влезаем в SSO, а значит, используем shared буфер. Добавляется время на атомарный инкремент счётчика. That's it, we're not using SSO, so we're using a shared buffer. -Time is added for the atomic counter increment.16.716.215.818.55.02 +Time is added for the atomic counter increment.16.116.115.819.14.89 stringa copy{str_with_len_N};/32template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1136,7 +1171,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.016.315.718.54.98 +}16.016.216.019.04.85 stringa copy{str_with_len_N};/64template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1145,7 +1180,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.016.515.818.64.94 +}16.116.615.719.04.83 stringa copy{str_with_len_N};/128template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1154,7 +1189,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.016.415.818.54.99 +}16.316.115.918.94.93 stringa copy{str_with_len_N};/256template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1163,7 +1198,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.016.215.718.54.90 +}16.116.116.019.24.97 stringa copy{str_with_len_N};/512template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1172,7 +1207,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.016.315.718.45.01 +}16.116.115.918.95.06 stringa copy{str_with_len_N};/1024template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1181,7 +1216,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.016.315.718.95.07 +}16.216.616.119.14.81 stringa copy{str_with_len_N};/2048template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1190,7 +1225,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.116.415.918.45.01 +}16.216.916.118.94.86 stringa copy{str_with_len_N};/4096template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1202,7 +1237,7 @@ void CopyDynString(benchmark::State& state) { } >> И как видно, кроме инкремента нет накладных расходов, время копирования не зависит от длины строки. And as you can see, there are no overhead costs other than the -increment; copying time does not depend on the string length.16.016.515.918.34.92 +increment; copying time does not depend on the string length.16.516.516.019.14.76 lstringa<16> copy{str_with_len_N};/15template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1214,7 +1249,7 @@ void CopyDynString(benchmark::State& state) { } >> lstringa<16> использует SSO до 23 символов. А в WASM 32-битная архитектура, SSO до 19 символов. lstringa<16> uses SSO up to 23 characters. -WASM has a 32-bit architecture, so SSO is up to 19 characters.4.124.514.887.8414.1 +WASM has a 32-bit architecture, so SSO is up to 19 characters.4.724.445.028.4914.1 lstringa<16> copy{str_with_len_N};/16template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1223,7 +1258,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.094.504.787.8914.6 +}4.564.464.968.6813.9 lstringa<16> copy{str_with_len_N};/23template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1232,7 +1267,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.044.564.807.7331.6 +}4.734.535.429.2228.7 lstringa<16> copy{str_with_len_N};/24template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1242,7 +1277,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> И после начинает вести себя при копировании, как std::string. -And then it starts to behave like std::string when copied.22.924.276.982.130.9 +And then it starts to behave like std::string when copied.25.626.978.195.629.4 lstringa<16> copy{str_with_len_N};/32template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1251,7 +1286,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}22.923.780.584.135.1 +}24.123.884.710331.9 lstringa<16> copy{str_with_len_N};/64template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1260,7 +1295,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}24.125.481.784.834.9 +}25.525.682.410432.0 lstringa<16> copy{str_with_len_N};/128template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1269,7 +1304,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}24.826.881.684.735.5 +}29.027.187.210932.6 lstringa<16> copy{str_with_len_N};/256template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1278,7 +1313,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}26.027.883.064954.3 +}27.230.693.770655.0 lstringa<16> copy{str_with_len_N};/512template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1287,7 +1322,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}28.531.987.091.648.8 +}30.430.093.010851.9 lstringa<16> copy{str_with_len_N};/1024template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1296,7 +1331,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}93.296.996.896.248.6 +}10598.899.612254.2 lstringa<16> copy{str_with_len_N};/2048template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1305,7 +1340,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}11311713312871.5 +}12011812714979.1 lstringa<16> copy{str_with_len_N};/4096template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1314,7 +1349,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}127130195185118 +}134135198211106 lstringa<512> copy{str_with_len_N};/15template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1323,7 +1358,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.485.235.128.5415.2 +}4.935.214.949.8315.4 lstringa<512> copy{str_with_len_N};/16template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1332,7 +1367,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.4911.55.098.6315.3 +}5.055.224.9310.215.5 lstringa<512> copy{str_with_len_N};/23template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1341,7 +1376,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.4311.75.258.5814.6 +}5.295.394.719.6915.2 lstringa<512> copy{str_with_len_N};/24template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1350,7 +1385,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.5511.65.158.5515.2 +}5.075.854.8710.215.0 lstringa<512> copy{str_with_len_N};/32template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1359,7 +1394,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.1220.07.9211.517.8 +}4.544.857.6914.118.3 lstringa<512> copy{str_with_len_N};/64template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1368,7 +1403,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}6.3020.87.9911.918.3 +}6.087.007.7913.717.7 lstringa<512> copy{str_with_len_N};/128template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1377,7 +1412,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}6.0723.48.4312.118.8 +}6.397.118.6814.118.1 lstringa<512> copy{str_with_len_N};/256template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1386,7 +1421,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}7.8718.19.4013.020.1 +}8.4216.49.4815.220.7 lstringa<512> copy{str_with_len_N};/512template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1398,7 +1433,7 @@ void CopyDynString(benchmark::State& state) { } >> Даже 512 символов копируются быстрее, чем одна аллокация или атомарный инкремент. Even 512 characters are copied faster than a single -allocation or atomic increment.10.220.612.314.326.9 +allocation or atomic increment.11.510.610.916.721.8 lstringa<512> copy{str_with_len_N};/1024template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1408,7 +1443,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> А дальше уже как у всех. -And then it's like everyone else.95.596.994.197.248.0 +And then it's like everyone else.94.198.498.511252.9 lstringa<512> copy{str_with_len_N};/2048template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1417,7 +1452,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}11611812812771.3 +}11211713215376.5 lstringa<512> copy{str_with_len_N};/4096template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1426,56 +1461,56 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}130134181186120 +}129137199208105

    # Convert to int '1234567'

    @@ -1499,7 +1534,7 @@ void CopyDynString(benchmark::State& state) { In simstr, a string fragment is sufficient for conversion to a number; there's no need for null termination. The closest analog to this behavior is "std::from_chars," but unfortunately, it is very limited in its capabilities. -Here, I attempted to run tests that are similar in logic to std::from_chars.27.527.430.832.269.5 +Here, I attempted to run tests that are similar in logic to std::from_chars.26.828.431.838.873.0 std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);void ToIntFromChars10(benchmark::State& state, const std::string_view& s, int c) { for (auto _: state) { int res = 0; @@ -1515,7 +1550,7 @@ Here, I attempted to run tests that are similar in logic to std::from_chars. >> from_chars требует точного указания основания счисления, не допускает знаков плюс, пробелов, префиксов 0x и т.п. from_chars requires an exact radix specification and does not allow plus -signs, spaces, 0x prefixes, etc.15.112.513.513.828.4 +signs, spaces, 0x prefixes, etc.15.012.514.116.227.8 stringa s = "123456789"; int res = s.to_int<int, true, 10, false>template<typename T> void ToIntSimStr10(benchmark::State& state, T t, int c) { for (auto _: state) { @@ -1532,7 +1567,7 @@ void ToIntSimStr10(benchmark::State& state, T t, int c) { } >> Здесь для to_int заданы такие же ограничения - проверять переполнение, десятичная система, без лидирующих пробелов и знака плюс Here, to_int has the same restrictions: check for overflow, -decimal system, no leading spaces, and no plus sign.12.48.2414.115.719.0 +decimal system, no leading spaces, and no plus sign.12.69.3314.417.319.0 ssa s = "123456789"; int res = s.to_int<int, true, 10, false>template<typename T> void ToIntSimStr10(benchmark::State& state, T t, int c) { for (auto _: state) { @@ -1546,7 +1581,7 @@ void ToIntSimStr10(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}12.27.9413.515.117.3 +}12.68.0613.817.517.0 lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>template<typename T> void ToIntSimStr10(benchmark::State& state, T t, int c) { for (auto _: state) { @@ -1560,13 +1595,13 @@ void ToIntSimStr10(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}12.48.3413.616.117.4 +}12.38.3113.817.417.0

    # Convert to unsigned 'abcDef'

    @@ -1583,7 +1618,7 @@ void ToIntSimStr10(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); } } >> Всё то же, только для 16ричной системы -Everything is the same, only for the hexadecimal system24.123.733.535.154.6 +Everything is the same, only for the hexadecimal system23.423.733.840.856.5 std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);void ToIntFromChars16(benchmark::State& state, const std::string_view& s, int c) { for (auto _: state) { int res = 0; @@ -1596,7 +1631,7 @@ Everything is the same, only for the hexadecimal system9.609.818.149.5630.6 +}9.809.698.3611.028.3 stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>template<typename T> void ToIntSimStr16(benchmark::State& state, T t, int c) { for (auto _: state) { @@ -1610,7 +1645,7 @@ void ToIntSimStr16(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}12.78.3013.913.517.9 +}12.58.6013.015.617.3 ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>template<typename T> void ToIntSimStr16(benchmark::State& state, T t, int c) { for (auto _: state) { @@ -1624,7 +1659,7 @@ void ToIntSimStr16(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}13.17.8612.613.016.8 +}12.68.2012.416.316.2 lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>template<typename T> void ToIntSimStr16(benchmark::State& state, T t, int c) { for (auto _: state) { @@ -1638,13 +1673,13 @@ void ToIntSimStr16(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}12.78.1111.813.316.8 +}13.08.1912.316.116.7

    # Convert to int ' 1234567'

    @@ -1661,7 +1696,7 @@ void ToIntSimStr16(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); } } >> А здесь уже парсинг произвольного числа. -And here we have parsing of an arbitrary number.28.929.343.645.374.6 +And here we have parsing of an arbitrary number.29.728.545.754.177.7 stringa s = " 123456789"; int res = s.to_int<int>; // Check overflowtemplate<typename T> void ToIntSimStr0(benchmark::State& state, T t, int c) { for (auto _: state) { @@ -1675,7 +1710,7 @@ void ToIntSimStr0(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}18.415.118.219.725.4 +}18.315.019.522.624.6 ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflowvoid ToIntNoOverflow(benchmark::State& state, ssa t, int c) { for (auto _: state) { int res = t.to_int<int, false>().value; @@ -1688,11 +1723,11 @@ void ToIntSimStr0(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}15.310.816.217.723.4 +}15.010.815.918.523.6

    # Convert to double '1234.567e10'

    @@ -1712,7 +1747,7 @@ void ToIntSimStr0(benchmark::State& state, T t, int c) { #endif benchmark::DoNotOptimize(res); } -}65.765.198.3102200 +}64.765.2104118196 std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);void ToDoubleFromChars(benchmark::State& state, const std::string_view& s, double c) { for (auto _: state) { double res = 0; @@ -1727,7 +1762,7 @@ void ToIntSimStr0(benchmark::State& state, T t, int c) { #endif benchmark::DoNotOptimize(res); } -}24.624.459.276.5111 +}27.525.662.195.8106 ssa s = "1234.567e10"; double res = *s.to_double()template<typename T> void ToDoubleSimStr(benchmark::State& state, T t, double c) { for (auto _: state) { @@ -1745,11 +1780,11 @@ void ToDoubleSimStr(benchmark::State& state, T t, double c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}26.124.735.136.643.1 +}26.124.835.841.043.1

    # Append const literal of 16 bytes 64 times, 1024 total length

    @@ -1771,7 +1806,7 @@ void ToDoubleSimStr(benchmark::State& state, T t, double c) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(str); } -}13541395466157054383 +}15871362544872624557 std::string str; ... str += "abbaabbaabbaabba";void AppendStdStringConstLiteral(benchmark::State& state) { for (auto _: state) { std::string result; @@ -1786,7 +1821,7 @@ void ToDoubleSimStr(benchmark::State& state, T t, double c) { #endif benchmark::DoNotOptimize(result); } -}37237710701288587 +}37836810581589598 lstringa<8> str; ... str += "abbaabbaabbaabba";template<unsigned N> void AppendLstringConstLiteral(benchmark::State& state) { for (auto _: state) { @@ -1802,7 +1837,7 @@ void AppendLstringConstLiteral(benchmark::State& state) { #endif benchmark::DoNotOptimize(result); } -}361407736923704 +}4023997841249705 lstringa<128> str; ... str += "abbaabbaabbaabba";template<unsigned N> void AppendLstringConstLiteral(benchmark::State& state) { for (auto _: state) { @@ -1821,7 +1856,7 @@ void AppendLstringConstLiteral(benchmark::State& state) { } >> Чем больше внутренний буфер, тем меньше раз требуется аллокация, тем быстрее результат. The larger the internal buffer, the fewer allocations are -required, and the faster the result.272267396531569 +required, and the faster the result.264274397639564 lstringa<512> str; ... str += "abbaabbaabbaabba";template<unsigned N> void AppendLstringConstLiteral(benchmark::State& state) { for (auto _: state) { @@ -1837,7 +1872,7 @@ void AppendLstringConstLiteral(benchmark::State& state) { #endif benchmark::DoNotOptimize(result); } -}228240234349516 +}257254241511472 lstringa<1024> str; ... str += "abbaabbaabbaabba";template<unsigned N> void AppendLstringConstLiteral(benchmark::State& state) { for (auto _: state) { @@ -1853,14 +1888,14 @@ void AppendLstringConstLiteral(benchmark::State& state) { #endif benchmark::DoNotOptimize(result); } -}136142155234403 +}157139152255396

    # Append string of 16 bytes and const literal of 16 bytes 32 times, 1024 total length

    @@ -1883,7 +1918,7 @@ void AppendLstringConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(s1); } -}13631404479356374402 +}14411381453468654433 std::string str; ... str += str_var + "abbaabbaabbaabba";void AppendStdStrStrConstLiteral(benchmark::State& state) { std::string p1 = TEXT_16; for (auto _: state) { @@ -1900,7 +1935,7 @@ void AppendLstringConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}12821265386138811940 +}12661279380345071926 lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";template<unsigned N> void AppendLstringStrConstLiteral(benchmark::State& state) { stringa p1 = TEXT_16; @@ -1918,7 +1953,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}445442726839834 +}4824756981082804 lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";template<unsigned N> void AppendLstringStrConstLiteral(benchmark::State& state) { stringa p1 = TEXT_16; @@ -1936,7 +1971,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}386376440533698 +}366413446664726 lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";template<unsigned N> void AppendLstringStrConstLiteral(benchmark::State& state) { stringa p1 = TEXT_16; @@ -1954,7 +1989,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}323316287387592 +}325323293538597 lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";template<unsigned N> void AppendLstringStrConstLiteral(benchmark::State& state) { stringa p1 = TEXT_16; @@ -1972,14 +2007,14 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}204247183285546 +}235243205319523

    # Append string of 16 bytes and const literal of 16 bytes 2048 times, 65536 total length

    @@ -2002,7 +2037,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(s1); } -}7654475371221750274181227747 +}7535975087226006323116218832 std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 timesvoid AppendStdStrStrConstLiteralBig(benchmark::State& state) { std::string p1 = TEXT_16; for (auto _: state) { @@ -2019,7 +2054,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}7245873091194313196295107590 +}7562074728202060236019104650 lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 timestemplate<unsigned N> void AppendLstringStrConstLiteralBig(benchmark::State& state) { stringa p1 = TEXT_16; @@ -2037,7 +2072,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}1968920644179652392639528 +}1877720069180252627739563 lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 timestemplate<unsigned N> void AppendLstringStrConstLiteralBig(benchmark::State& state) { stringa p1 = TEXT_16; @@ -2055,7 +2090,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}1595617277170212211338289 +}2018619059162172473738589 lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 timestemplate<unsigned N> void AppendLstringStrConstLiteralBig(benchmark::State& state) { stringa p1 = TEXT_16; @@ -2073,7 +2108,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}1583717504168932378439586 +}1602817233158262381037622 lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 timestemplate<unsigned N> void AppendLstringStrConstLiteralBig(benchmark::State& state) { stringa p1 = TEXT_16; @@ -2091,14 +2126,14 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}1781117482162572296338827 +}1579817586161772410338473

    # Append 2 string of 16 bytes 32 times, 1024 total length

    @@ -2123,7 +2158,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}13971414439953734714 +}14391393460462334648 std::string str; ... str += str_var1 + str_var2;void AppendStdStr2String(benchmark::State& state) { std::string s1 = TEXT_16; std::string s2 = TEXT_16; @@ -2143,7 +2178,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}13541409392039642421 +}13981436379744362346 lstringa<16> str; ... str += str_var1 + str_var2;template<unsigned N> void AppendLstring2String(benchmark::State& state) { stra s1 = TEXT_16; @@ -2163,7 +2198,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}5245448179321187 +}54056081311981150 lstringa<128> str; ... str += str_var1 + str_var2;template<unsigned N> void AppendLstring2String(benchmark::State& state) { stra s1 = TEXT_16; @@ -2183,7 +2218,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}4494335455971062 +}4654465276731100 lstringa<512> str; ... str += str_var1 + str_var2;template<unsigned N> void AppendLstring2String(benchmark::State& state) { stra s1 = TEXT_16; @@ -2203,7 +2238,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}385417381449907 +}398400381595934 lstringa<1024> str; ... str += str_var1 + str_var2;template<unsigned N> void AppendLstring2String(benchmark::State& state) { stra s1 = TEXT_16; @@ -2223,14 +2258,14 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}305316284353856 +}323307278399867

    # Append text, number, text

    @@ -2251,7 +2286,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(k); } } -}3102299811067112526369 +}3053307610665132406486 std::string str = "test = " + std::to_string(k) + " times";void AppendStdStringStrNumStr(benchmark::State& state) { for (auto _: state) { for (unsigned k = 1; k <= 1'000'000'000; k *= 10) { @@ -2266,7 +2301,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(k); } } -}471456107812221655 +}479470105214041576 char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;void AppendSprintfStrNumStr(benchmark::State& state) { for (auto _: state) { for (unsigned k = 1; k <= 1'000'000'000; k *= 10) { @@ -2283,7 +2318,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(k); } } -}13951527277628072916 +}14121714278932092894 std::string str = std::format("test = {} times", k);void AppendFormatStrNumStr(benchmark::State& state) { for (auto _: state) { for (unsigned k = 1; k <= 1'000'000'000; k *= 10) { @@ -2298,7 +2333,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(k); } } -}12051266200124212078 +}12081289190425392063 lstringa<8> str; str.format("test = {} times", k);template<typename T> void AppendSimStrStrNumStrF(benchmark::State& state) { for (auto _: state) { @@ -2317,7 +2352,7 @@ void AppendSimStrStrNumStrF(benchmark::State& state) { } } >> В simstr format с первого раза не помещается в такую строку без аллокации. In simstr format, the first time it doesn't fit into such a -string without allocation.13771633207626713396 +string without allocation.13791588216831933409 lstringa<32> str; str.format("test = {} times", k);template<typename T> void AppendSimStrStrNumStrF(benchmark::State& state) { for (auto _: state) { @@ -2335,7 +2370,7 @@ void AppendSimStrStrNumStrF(benchmark::State& state) { } } } >> А в такую помещается. Используйте сразу буфера подходящего размера. -And it fits in this one. Use buffers of the appropriate size right away.9791117100415312581 +And it fits in this one. Use buffers of the appropriate size right away.10791059102916592460 lstringa<8> str = "test = " + k + " times";template<typename T> void AppendSimStrStrNumStr(benchmark::State& state) { for (auto _: state) { @@ -2352,7 +2387,7 @@ void AppendSimStrStrNumStr(benchmark::State& state) { } } } >> Результат не помещается в SSO, возникает аллокация. -The result does not fit into SSO, an allocation occurs.295313778880610 +The result does not fit into SSO, an allocation occurs.313332807975611 lstringa<32> str = "test = " + k + " times";template<typename T> void AppendSimStrStrNumStr(benchmark::State& state) { for (auto _: state) { @@ -2371,7 +2406,7 @@ void AppendSimStrStrNumStr(benchmark::State& state) { } >> А здесь и ниже - результат укладывается в SSO. Ещё раз - используйте сразу буфера подходящего размера. And here and below, the result fits within SSO. -Once again, use appropriately sized buffers from the start.152153154187342 +Once again, use appropriately sized buffers from the start.154160155217345 stringa str = "test = " + k + " times";template<typename T> void AppendSimStrStrNumStr(benchmark::State& state) { for (auto _: state) { @@ -2390,17 +2425,17 @@ void AppendSimStrStrNumStr(benchmark::State& state) { } >> Под WASM размер SSO 15 символов, что явно не хватает для размещения результата, отсюда и такое время. Under WASM, the SSO size is 15 characters, which is clearly not -enough to accommodate the result, hence the long time.150162152236562 +enough to accommodate the result, hence the long time.145167151276541

    # Split text and convert to int

    @@ -2427,7 +2462,7 @@ enough to accommodate the result, hence the long time.270273546550651 +}283271539633609 ssa::splitter + ssa::as_intvoid SplitConvertIntSimStr(benchmark::State& state) { stra numbers = NUMBER_LIST; for (auto _: state) { @@ -2444,7 +2479,7 @@ enough to accommodate the result, hence the long time.154135170303279 +}159133173329269 ssa::splitf + functorvoid SplitConvertIntSplitf(benchmark::State& state) { stra numbers = NUMBER_LIST; for (auto _: state) { @@ -2459,11 +2494,11 @@ enough to accommodate the result, hence the long time.212131188217346 +}204131191240338

    # Replace symbols in text ~400 symbols

    @@ -2525,7 +2560,7 @@ enough to accommodate the result, hence the long time.'b' and 'b'->'a'. But if the substitutions don't conflict, -it works quickly.865852115312983588 +it works quickly.848845118514283726 replace symbols with std::string find_first_of + replacevoid ReplaceSymbolsStdStringNaiveRight(benchmark::State& state) { std::string_view source = "abcdefg124 < jhsfjsh sjdfsh jfhjd && jdjdj >" @@ -2580,7 +2615,7 @@ it works quickly.865 >> Дальше уже правильные реализации, не зависящие от конфликтующих замен. Further, there are correct implementations that do not depend on -conflicting replacements.24002378204722314762 +conflicting replacements.24322401216524435016 replace symbols with std::string_view find_first_of + copyvoid ReplaceSymbolsStdString(benchmark::State& state) { std::string_view source = "abcdefg124 < jhsfjsh sjdfsh jfhjd && jdjdj >" @@ -2632,7 +2667,7 @@ conflicting replacements.240011001037230025203410 +}10701157229829483479 replace runtime symbols with string expressions and without remembering all search resultstemplate<bool UseVector> void ReplaceSymbolsDynPatternSimStr(benchmark::State& state) { stra source = @@ -2678,7 +2713,7 @@ void ReplaceSymbolsDynPatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}12901465143415803466 +}13091495143918043472 replace runtime symbols with simstr and memorization of all search resultstemplate<bool UseVector> void ReplaceSymbolsDynPatternSimStr(benchmark::State& state) { stra source = @@ -2724,7 +2759,7 @@ void ReplaceSymbolsDynPatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}10391035134913893059 +}10661055127016123043 replace const symbols with string expressions and without remembering all search resultstemplate<bool UseVector> void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { stra source = @@ -2767,7 +2802,7 @@ void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}10341231114612832820 +}10301238113514412845 replace const symbols with string expressions and memorization of all search resultstemplate<bool UseVector> void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { stra source = @@ -2810,15 +2845,15 @@ void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}892919121312422715 +}898872121014382739

    # Replace symbols in text ~40 symbols

    @@ -2861,7 +2896,7 @@ void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}156159314339475 +}155175321384470 Short replace symbols with std::string find_first_of + replacevoid ShortReplaceSymbolsStdStringNaiveRight(benchmark::State& state) { std::string_view source = "abcdefg124 < jhsfjsh sjdfsh jfhjd && jdjdj >" @@ -2900,7 +2935,7 @@ void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}343319369431518 +}337319385475494 Short replace symbols with std::string_view find_first_of + copyvoid ShortReplaceSymbolsStdString(benchmark::State& state) { std::string_view source = "abcdefg124 < jhsfjsh sjdfsh jfhjd && jdjdj >" @@ -2938,7 +2973,7 @@ void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}167166322357391 +}164183330388413 Short replace runtime symbols with string expressions and without remembering all search resultstemplate<bool UseVector> void ShortReplaceSymbolsDynPatternSimStr(benchmark::State& state) { stra source = @@ -2970,7 +3005,7 @@ void ShortReplaceSymbolsDynPatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}191196258315397 +}193225269302380 Short replace runtime symbols with simstr and memorization of all search resultstemplate<bool UseVector> void ShortReplaceSymbolsDynPatternSimStr(benchmark::State& state) { stra source = @@ -3002,7 +3037,7 @@ void ShortReplaceSymbolsDynPatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}185211344393405 +}205206348434401 Short replace const symbols with string expressions and without remembering all search resultstemplate<bool UseVector> void ShortReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { stra source = @@ -3031,7 +3066,7 @@ void ShortReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}132153213253250 +}139162232260257 Short replace const symbols with string expressions and memorization of all search resultstemplate<bool UseVector> void ShortReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { stra source = @@ -3060,15 +3095,15 @@ void ShortReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}149146303359297 +}144156323345302

    # Replace All Str To Longer Size

    @@ -3105,7 +3140,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}161172227251382 +}160164232249371 replace bb to ---- in std::string|256template<size_t Long> void ReplaceAllLongerStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3138,7 +3173,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}5435107658251410 +}5684927578101351 replace bb to ---- in std::string|512template<size_t Long> void ReplaceAllLongerStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3171,7 +3206,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}1041989146515012725 +}11771119148215562646 replace bb to ---- in std::string|1024template<size_t Long> void ReplaceAllLongerStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3204,7 +3239,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}23292308319333195829 +}22942211315032295606 replace bb to ---- in std::string|2048template<size_t Long> void ReplaceAllLongerStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3237,7 +3272,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}581558247883839312920 +}590359598049817412254 replace bb to ---- in lstringa<8>|64template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3259,7 +3294,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}143161320330339 +}245148304312332 replace bb to ---- in lstringa<8>|256template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3281,7 +3316,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}4394626296921065 +}7774856066601116 replace bb to ---- in lstringa<8>|512template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3303,7 +3338,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}833882106511541968 +}1500893105411382117 replace bb to ---- in lstringa<8>|1024template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3325,7 +3360,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}16691827190721023761 +}29071845183920564092 replace bb to ---- in lstringa<8>|2048template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3347,7 +3382,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}31233363357939397335 +}59293614350339177783 replace bb to ---- by init stringa|64template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3368,7 +3403,7 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}98.9104172209220 +}129110183206212 replace bb to ---- by init stringa|256template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3389,7 +3424,7 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}300299377485738 +}356305374475725 replace bb to ---- by init stringa|512template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3410,7 +3445,7 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}70673381310861733 +}77475182410561687 replace bb to ---- by init stringa|1024template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3431,7 +3466,7 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}15111625163722323695 +}15831630168121523720 replace bb to ---- by init stringa|2048template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3452,23 +3487,23 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}30783339309046157436 +}33953440311143217469

    # Replace All Str To Same Size

    @@ -3504,7 +3539,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}121115190209270 +}119118196215259 replace bb to -- in std::string|256template<size_t Long> void ReplaceAllEqualStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3536,7 +3571,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}4113674685531011 +}451418487552941 replace bb to -- in std::string|512template<size_t Long> void ReplaceAllEqualStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3568,7 +3603,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}7597338429751878 +}7827738999691842 replace bb to -- in std::string|1024template<size_t Long> void ReplaceAllEqualStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3600,7 +3635,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}14601409161418263626 +}14921538168718203695 replace bb to -- in std::string|2048template<size_t Long> void ReplaceAllEqualStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3632,7 +3667,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}30522902315735477194 +}30102919314835936890 replace bb to -- in lstringa<8>|64template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3653,7 +3688,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}99.0103185189222 +}209100179193219 replace bb to -- in lstringa<8>|256template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3674,7 +3709,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}300299435470775 +}855298440465797 replace bb to -- in lstringa<8>|512template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3695,7 +3730,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}5525487638071461 +}18285517977881465 replace bb to -- in lstringa<8>|1024template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3716,7 +3751,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}11471133140415152776 +}36611105154214472845 replace bb to -- in lstringa<8>|2048template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3737,7 +3772,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}21832150274129675522 +}76702117292728575530 replace bb to -- by init stringa|64template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3762,7 +3797,7 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}82.493.9162179180 +}83.895.6156185178 replace bb to -- by init stringa|256template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3787,7 +3822,7 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}244275357392646 +}236270349387634 replace bb to -- by init stringa|512template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3812,7 +3847,7 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}4444985806421220 +}4855535836511214 replace bb to -- by init stringa|1024template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3837,7 +3872,7 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}8861033109111512371 +}8831031109911962270 replace bb to -- by init stringa|2048template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3862,23 +3897,23 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}17071981199822644604 +}17171966207324084529

    # Hash Map insert and find

    @@ -3908,7 +3943,7 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { } >> Вставляем в hashStrMapA 10000 stringa длиной от 30 до 50 символов, а потом ищем их в ней We insert 10,000 strings of length from 30 to 50 characters into -hashStrMapA, and then search for them in it.36252423750693369388342039833162304 +hashStrMapA, and then search for them in it.35955923722226379577342395543204846 std::unordered_map<std::string, size_t> emplace & find std::string;void HashMapStdStr(benchmark::State& state) { for (auto _: state) { std::unordered_map<std::string, size_t> store; @@ -3932,7 +3967,7 @@ hashStrMapA, and then search for them in it. >> То же самое c std::string и std::unordered_map -Same thing with std::string and std::unordered_map35177843625926525888153441213370915 +Same thing with std::string and std::unordered_map35992863711685581456358436693332883 hashStrMapA<size_t> emplace & find ssa;void HashMapSimSsa(benchmark::State& state) { for (auto _: state) { hashStrMapA<size_t> store; @@ -3957,7 +3992,7 @@ Same thing with std::string and std::unordered_map >> Теперь вставляем stringa, а ищем ssa -Now we insert stringa and search for ssa36187163687972341816640112483151333 +Now we insert stringa and search for ssa37410653706802350748039630343197797 std::unordered_map<std::string, size_t> emplace & find std::string_view;void HashMapStdStrView(benchmark::State& state) { for (auto _: state) { std::unordered_map<std::string, size_t> store; @@ -3982,12 +4017,12 @@ Now we insert stringa and search for ssa >> Вставляем std::string, а ищем std::string_view -We insert std::string and look for std::string_view41664573937773629501463044993797453 +We insert std::string and look for std::string_view41881764055890677439362800803669143

    # Build Full Func Name

    @@ -4029,7 +4064,7 @@ We insert std::string and look for std::string_view708966153316452652 +return values. The algorithm uses std::string.709943161117162854 Build func full name std::string 1;std::string build_full_name_std1() const { std::string str{has_ret_type_resolver ? "any"sv : type_names_sv[(unsigned)ret_type]}; str += " " + std_name + "("; @@ -4061,7 +4096,7 @@ return values. The algorithm uses std::string. >> Почти тот же алгоритм, но несколько последовательных += к строке заменены на одно += + + +. Almost the same algorithm, but several consecutive -+= to a string are replaced with a single += + + +.8461010160217112955 ++= to a string are replaced with a single += + + +.8291022168118022988 Build func full name std::stream;std::string build_full_name_stream() const { std::ostringstream str; if (has_ret_type_resolver) { @@ -4095,7 +4130,7 @@ Almost the same algorithm, but several consecutive str << ")"; return str.str(); } >> Строим имя функции через std::ostringstream и << -We construct the function name through std::ostringstream and <<257126138228101106584 +We construct the function name through std::ostringstream and <<255226718266100116634 Build func full name stringa;stringa build_full_name() const { lstringa<512> str = e_choice(has_ret_type_resolver, "any", type_names[(unsigned)ret_type]) + " " + name + "("; @@ -4113,7 +4148,7 @@ We construct the function name through std::ostringstream and << >> Реализация на simstr строках и строковых выражениях. Инфа о параметрах добавляется в текущую строку Implementation using simstr strings and string expressions. -Parameter information is appended to the current line.5084658189241274 +Parameter information is appended to the current line.50361282110611333 Build func full name stringa 1;stringa build_full_name1() const { lstringa<512> str = e_choice(has_ret_type_resolver, "any", type_names[(unsigned)ret_type]) + " " + name + "("; @@ -4131,11 +4166,11 @@ Parameter information is appended to the current line.64868295910201576 +to be written in a single string, but is slightly slower in execution time.67065796312451547
    \ No newline at end of file diff --git a/bench/results/000-Xeon E5-2682 v4, Ubuntu 22 (WSL), Clang-21.txt b/bench/results/000-Xeon E5-2682 v4, Ubuntu 22 (WSL), Clang-21.txt index 46f002f..b2d5673 100644 --- a/bench/results/000-Xeon E5-2682 v4, Ubuntu 22 (WSL), Clang-21.txt +++ b/bench/results/000-Xeon E5-2682 v4, Ubuntu 22 (WSL), Clang-21.txt @@ -1,4 +1,4 @@ -2026-01-21T07:43:36+03:00 +2026-01-29T21:42:24+03:00 Running ./benchStr Run on (32 X 2494.22 MHz CPU s) CPU Caches: @@ -6,873 +6,885 @@ CPU Caches: L1 Instruction 32 KiB (x16) L2 Unified 256 KiB (x16) L3 Unified 40960 KiB (x1) -Load Average: 0.00, 0.23, 0.51 +Load Average: 0.00, 0.00, 0.00 ***WARNING*** ASLR is enabled, the results may have unreproducible noise in them. -------------------------------------------------------------------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations -------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and number by std to std::string_mean 226 ns 226 ns 10 -Concat std::string and number by std to std::string_median 222 ns 222 ns 10 -Concat std::string and number by std to std::string_stddev 15.0 ns 15.0 ns 10 -Concat std::string and number by std to std::string_cv 6.64 % 6.64 % 10 -Concat std::string and number by StrExpr to std::string_mean 104 ns 104 ns 10 -Concat std::string and number by StrExpr to std::string_median 103 ns 103 ns 10 -Concat std::string and number by StrExpr to std::string_stddev 4.29 ns 4.29 ns 10 -Concat std::string and number by StrExpr to std::string_cv 4.10 % 4.10 % 10 -Concat stringa and number by StrExpr to simstr::stringa_mean 63.7 ns 63.7 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_median 62.8 ns 62.8 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_stddev 2.92 ns 2.92 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_cv 4.59 % 4.59 % 10 +Concat std::string and number by std to std::string_mean 219 ns 219 ns 10 +Concat std::string and number by std to std::string_median 219 ns 219 ns 10 +Concat std::string and number by std to std::string_stddev 7.64 ns 7.64 ns 10 +Concat std::string and number by std to std::string_cv 3.48 % 3.48 % 10 +Concat std::string and number by StrExpr to std::string_mean 105 ns 105 ns 10 +Concat std::string and number by StrExpr to std::string_median 106 ns 106 ns 10 +Concat std::string and number by StrExpr to std::string_stddev 3.39 ns 3.39 ns 10 +Concat std::string and number by StrExpr to std::string_cv 3.22 % 3.22 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 66.3 ns 66.3 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_median 65.7 ns 65.7 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_stddev 5.27 ns 5.27 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 7.95 % 7.95 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 68.8 ns 68.8 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 68.7 ns 68.7 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 2.59 ns 2.59 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 3.77 % 3.77 % 10 ----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and hex number by std to std::string_mean 681 ns 681 ns 10 -Concat std::string and hex number by std to std::string_median 673 ns 673 ns 10 -Concat std::string and hex number by std to std::string_stddev 19.0 ns 19.0 ns 10 -Concat std::string and hex number by std to std::string_cv 2.80 % 2.80 % 10 -Concat std::string and hex number by StrExpr to std::string_mean 71.7 ns 71.7 ns 10 -Concat std::string and hex number by StrExpr to std::string_median 71.6 ns 71.6 ns 10 -Concat std::string and hex number by StrExpr to std::string_stddev 1.90 ns 1.90 ns 10 -Concat std::string and hex number by StrExpr to std::string_cv 2.65 % 2.65 % 10 -Concat stringa and hex number by StrExpr to simstr::stringa_mean 67.9 ns 67.9 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_median 67.5 ns 67.5 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_stddev 1.41 ns 1.41 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_cv 2.08 % 2.08 % 10 +Concat std::string and hex number by std to std::string_mean 861 ns 861 ns 10 +Concat std::string and hex number by std to std::string_median 854 ns 854 ns 10 +Concat std::string and hex number by std to std::string_stddev 27.1 ns 27.1 ns 10 +Concat std::string and hex number by std to std::string_cv 3.14 % 3.14 % 10 +Concat std::string and hex number by StrExpr to std::string_mean 86.4 ns 86.4 ns 10 +Concat std::string and hex number by StrExpr to std::string_median 86.1 ns 86.1 ns 10 +Concat std::string and hex number by StrExpr to std::string_stddev 1.94 ns 1.94 ns 10 +Concat std::string and hex number by StrExpr to std::string_cv 2.25 % 2.25 % 10 +Concat stringa and hex number by StrExpr to simstr::stringa_mean 75.8 ns 75.8 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_median 73.7 ns 73.7 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_stddev 5.87 ns 5.87 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_cv 7.75 % 7.75 % 10 +Concat stringa and hex number by e_concat to simstr::stringa_mean 75.0 ns 75.0 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_median 74.7 ns 74.7 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_stddev 2.46 ns 2.46 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_cv 3.28 % 3.28 % 10 +Concat stringa and hex number by e_subst to simstr::stringa_mean 150 ns 150 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_median 149 ns 149 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_stddev 2.62 ns 2.62 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_cv 1.76 % 1.76 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string by std to std::string_mean 49.7 ns 49.7 ns 10 -Concat std::string by std to std::string_median 49.9 ns 49.9 ns 10 -Concat std::string by std to std::string_stddev 0.890 ns 0.890 ns 10 -Concat std::string by std to std::string_cv 1.79 % 1.79 % 10 -Concat std::string by StrExpr to std::string_mean 40.5 ns 40.5 ns 10 -Concat std::string by StrExpr to std::string_median 40.5 ns 40.5 ns 10 -Concat std::string by StrExpr to std::string_stddev 0.767 ns 0.767 ns 10 -Concat std::string by StrExpr to std::string_cv 1.89 % 1.89 % 10 -Concat stringa by StrExpr to stringa_mean 27.0 ns 27.0 ns 10 -Concat stringa by StrExpr to stringa_median 26.6 ns 26.6 ns 10 -Concat stringa by StrExpr to stringa_stddev 1.50 ns 1.50 ns 10 -Concat stringa by StrExpr to stringa_cv 5.54 % 5.54 % 10 +Concat std::string by std to std::string_mean 45.2 ns 45.2 ns 10 +Concat std::string by std to std::string_median 44.3 ns 44.3 ns 10 +Concat std::string by std to std::string_stddev 2.46 ns 2.46 ns 10 +Concat std::string by std to std::string_cv 5.44 % 5.44 % 10 +Concat std::string by StrExpr to std::string_mean 33.9 ns 33.9 ns 10 +Concat std::string by StrExpr to std::string_median 34.2 ns 34.2 ns 10 +Concat std::string by StrExpr to std::string_stddev 1.25 ns 1.25 ns 10 +Concat std::string by StrExpr to std::string_cv 3.70 % 3.70 % 10 +Concat stringa by StrExpr to stringa_mean 29.1 ns 29.1 ns 10 +Concat stringa by StrExpr to stringa_median 29.1 ns 29.1 ns 10 +Concat stringa by StrExpr to stringa_stddev 0.746 ns 0.746 ns 10 +Concat stringa by StrExpr to stringa_cv 2.57 % 2.57 % 10 ----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Find concat three std::string_mean 116 ns 116 ns 10 -Find concat three std::string_median 116 ns 116 ns 10 -Find concat three std::string_stddev 4.32 ns 4.32 ns 10 -Find concat three std::string_cv 3.72 % 3.72 % 10 -Find concat three strexpr_mean 51.1 ns 51.1 ns 10 -Find concat three strexpr_median 51.0 ns 51.0 ns 10 -Find concat three strexpr_stddev 2.58 ns 2.58 ns 10 -Find concat three strexpr_cv 5.05 % 5.05 % 10 -Find concat three simstr_mean 19.6 ns 19.6 ns 10 -Find concat three simstr_median 19.7 ns 19.7 ns 10 -Find concat three simstr_stddev 0.770 ns 0.770 ns 10 -Find concat three simstr_cv 3.93 % 3.93 % 10 +Find concat three std::string_mean 112 ns 112 ns 10 +Find concat three std::string_median 112 ns 112 ns 10 +Find concat three std::string_stddev 4.77 ns 4.77 ns 10 +Find concat three std::string_cv 4.27 % 4.27 % 10 +Find concat three strexpr_mean 50.6 ns 50.6 ns 10 +Find concat three strexpr_median 48.9 ns 48.9 ns 10 +Find concat three strexpr_stddev 4.38 ns 4.38 ns 10 +Find concat three strexpr_cv 8.65 % 8.65 % 10 +Find concat three simstr_mean 22.8 ns 22.8 ns 10 +Find concat three simstr_median 21.6 ns 21.6 ns 10 +Find concat three simstr_stddev 3.57 ns 3.57 ns 10 +Find concat three simstr_cv 15.69 % 15.69 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -BuildTypeNameStr 0/0_mean 7.64 ns 7.64 ns 10 -BuildTypeNameStr 0/0_median 7.63 ns 7.63 ns 10 -BuildTypeNameStr 0/0_stddev 0.241 ns 0.241 ns 10 -BuildTypeNameStr 0/0_cv 3.16 % 3.16 % 10 -BuildTypeNameExp 0/0_mean 6.52 ns 6.52 ns 10 -BuildTypeNameExp 0/0_median 6.54 ns 6.54 ns 10 -BuildTypeNameExp 0/0_stddev 0.149 ns 0.149 ns 10 -BuildTypeNameExp 0/0_cv 2.29 % 2.29 % 10 -BuildTypeNameSim 0/0_mean 4.99 ns 4.99 ns 10 -BuildTypeNameSim 0/0_median 4.92 ns 4.92 ns 10 -BuildTypeNameSim 0/0_stddev 0.280 ns 0.280 ns 10 -BuildTypeNameSim 0/0_cv 5.62 % 5.62 % 10 -BuildTypeNameStr 10/10_mean 56.8 ns 56.8 ns 10 -BuildTypeNameStr 10/10_median 57.0 ns 57.0 ns 10 -BuildTypeNameStr 10/10_stddev 1.62 ns 1.62 ns 10 -BuildTypeNameStr 10/10_cv 2.86 % 2.86 % 10 -BuildTypeNameExp 10/10_mean 30.5 ns 30.5 ns 10 -BuildTypeNameExp 10/10_median 30.3 ns 30.3 ns 10 -BuildTypeNameExp 10/10_stddev 0.808 ns 0.808 ns 10 -BuildTypeNameExp 10/10_cv 2.65 % 2.65 % 10 -BuildTypeNameSim 10/10_mean 22.7 ns 22.7 ns 10 -BuildTypeNameSim 10/10_median 22.6 ns 22.6 ns 10 -BuildTypeNameSim 10/10_stddev 0.330 ns 0.330 ns 10 -BuildTypeNameSim 10/10_cv 1.45 % 1.45 % 10 +BuildTypeNameStr 0/0_mean 7.17 ns 7.17 ns 10 +BuildTypeNameStr 0/0_median 7.16 ns 7.16 ns 10 +BuildTypeNameStr 0/0_stddev 0.171 ns 0.171 ns 10 +BuildTypeNameStr 0/0_cv 2.39 % 2.39 % 10 +BuildTypeNameExp 0/0_mean 6.73 ns 6.73 ns 10 +BuildTypeNameExp 0/0_median 6.73 ns 6.73 ns 10 +BuildTypeNameExp 0/0_stddev 0.126 ns 0.126 ns 10 +BuildTypeNameExp 0/0_cv 1.87 % 1.87 % 10 +BuildTypeNameSim 0/0_mean 5.57 ns 5.57 ns 10 +BuildTypeNameSim 0/0_median 5.56 ns 5.56 ns 10 +BuildTypeNameSim 0/0_stddev 0.263 ns 0.263 ns 10 +BuildTypeNameSim 0/0_cv 4.72 % 4.72 % 10 +BuildTypeNameStr 10/10_mean 57.2 ns 57.2 ns 10 +BuildTypeNameStr 10/10_median 56.1 ns 56.1 ns 10 +BuildTypeNameStr 10/10_stddev 2.44 ns 2.44 ns 10 +BuildTypeNameStr 10/10_cv 4.25 % 4.25 % 10 +BuildTypeNameExp 10/10_mean 31.1 ns 31.1 ns 10 +BuildTypeNameExp 10/10_median 31.2 ns 31.2 ns 10 +BuildTypeNameExp 10/10_stddev 0.983 ns 0.983 ns 10 +BuildTypeNameExp 10/10_cv 3.16 % 3.16 % 10 +BuildTypeNameSim 10/10_mean 24.7 ns 24.7 ns 10 +BuildTypeNameSim 10/10_median 23.6 ns 23.6 ns 10 +BuildTypeNameSim 10/10_stddev 2.07 ns 2.07 ns 10 +BuildTypeNameSim 10/10_cv 8.41 % 8.41 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat with replace str_mean 207 ns 207 ns 10 -Concat with replace str_median 203 ns 203 ns 10 -Concat with replace str_stddev 11.4 ns 11.4 ns 10 -Concat with replace str_cv 5.52 % 5.52 % 10 -Concat with replace exp_mean 149 ns 149 ns 10 -Concat with replace exp_median 148 ns 148 ns 10 -Concat with replace exp_stddev 4.78 ns 4.78 ns 10 -Concat with replace exp_cv 3.20 % 3.20 % 10 +Concat with replace str_mean 202 ns 202 ns 10 +Concat with replace str_median 199 ns 199 ns 10 +Concat with replace str_stddev 12.0 ns 12.0 ns 10 +Concat with replace str_cv 5.93 % 5.93 % 10 +Concat with replace exp_mean 151 ns 151 ns 10 +Concat with replace exp_median 150 ns 150 ns 10 +Concat with replace exp_stddev 13.4 ns 13.4 ns 10 +Concat with replace exp_cv 8.89 % 8.89 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e;_mean 1.12 ns 1.12 ns 10 -std::string e;_median 1.12 ns 1.12 ns 10 -std::string e;_stddev 0.022 ns 0.022 ns 10 -std::string e;_cv 1.96 % 1.96 % 10 -std::string_view e;_mean 0.373 ns 0.373 ns 10 -std::string_view e;_median 0.369 ns 0.369 ns 10 -std::string_view e;_stddev 0.012 ns 0.012 ns 10 -std::string_view e;_cv 3.14 % 3.14 % 10 -ssa e;_mean 0.367 ns 0.367 ns 10 -ssa e;_median 0.367 ns 0.367 ns 10 -ssa e;_stddev 0.006 ns 0.006 ns 10 -ssa e;_cv 1.54 % 1.54 % 10 -stringa e;_mean 0.753 ns 0.753 ns 10 -stringa e;_median 0.748 ns 0.748 ns 10 -stringa e;_stddev 0.024 ns 0.024 ns 10 -stringa e;_cv 3.14 % 3.14 % 10 -lstringa<20> e;_mean 1.13 ns 1.13 ns 10 -lstringa<20> e;_median 1.12 ns 1.12 ns 10 -lstringa<20> e;_stddev 0.027 ns 0.027 ns 10 -lstringa<20> e;_cv 2.42 % 2.42 % 10 -lstringa<40> e;_mean 1.13 ns 1.13 ns 10 +std::string e;_mean 1.16 ns 1.16 ns 10 +std::string e;_median 1.14 ns 1.14 ns 10 +std::string e;_stddev 0.069 ns 0.069 ns 10 +std::string e;_cv 5.95 % 5.95 % 10 +std::string_view e;_mean 0.384 ns 0.384 ns 10 +std::string_view e;_median 0.386 ns 0.386 ns 10 +std::string_view e;_stddev 0.017 ns 0.017 ns 10 +std::string_view e;_cv 4.36 % 4.36 % 10 +ssa e;_mean 0.378 ns 0.378 ns 10 +ssa e;_median 0.375 ns 0.375 ns 10 +ssa e;_stddev 0.016 ns 0.016 ns 10 +ssa e;_cv 4.10 % 4.10 % 10 +stringa e;_mean 0.762 ns 0.762 ns 10 +stringa e;_median 0.738 ns 0.738 ns 10 +stringa e;_stddev 0.049 ns 0.049 ns 10 +stringa e;_cv 6.40 % 6.40 % 10 +lstringa<20> e;_mean 1.14 ns 1.14 ns 10 +lstringa<20> e;_median 1.14 ns 1.14 ns 10 +lstringa<20> e;_stddev 0.037 ns 0.037 ns 10 +lstringa<20> e;_cv 3.27 % 3.27 % 10 +lstringa<40> e;_mean 1.12 ns 1.12 ns 10 lstringa<40> e;_median 1.12 ns 1.12 ns 10 -lstringa<40> e;_stddev 0.029 ns 0.029 ns 10 -lstringa<40> e;_cv 2.53 % 2.53 % 10 +lstringa<40> e;_stddev 0.036 ns 0.036 ns 10 +lstringa<40> e;_cv 3.24 % 3.24 % 10 ----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000 std::string e = "Test text";_mean 1.84 ns 1.84 ns 10 -std::string e = "Test text";_median 1.84 ns 1.84 ns 10 -std::string e = "Test text";_stddev 0.037 ns 0.037 ns 10 -std::string e = "Test text";_cv 2.03 % 2.03 % 10 -std::string_view e = "Test text";_mean 0.750 ns 0.750 ns 10 -std::string_view e = "Test text";_median 0.734 ns 0.734 ns 10 -std::string_view e = "Test text";_stddev 0.030 ns 0.030 ns 10 -std::string_view e = "Test text";_cv 3.99 % 3.99 % 10 -ssa e = "Test text";_mean 0.381 ns 0.381 ns 10 -ssa e = "Test text";_median 0.380 ns 0.380 ns 10 -ssa e = "Test text";_stddev 0.019 ns 0.019 ns 10 -ssa e = "Test text";_cv 5.10 % 5.10 % 10 -stringa e = "Test text";_mean 1.85 ns 1.85 ns 10 -stringa e = "Test text";_median 1.83 ns 1.83 ns 10 -stringa e = "Test text";_stddev 0.058 ns 0.058 ns 10 -stringa e = "Test text";_cv 3.16 % 3.16 % 10 -lstringa<20> e = "Test text";_mean 1.87 ns 1.87 ns 10 -lstringa<20> e = "Test text";_median 1.84 ns 1.84 ns 10 -lstringa<20> e = "Test text";_stddev 0.068 ns 0.068 ns 10 -lstringa<20> e = "Test text";_cv 3.63 % 3.63 % 10 -lstringa<40> e = "Test text";_mean 1.85 ns 1.85 ns 10 -lstringa<40> e = "Test text";_median 1.83 ns 1.83 ns 10 -lstringa<40> e = "Test text";_stddev 0.052 ns 0.052 ns 10 -lstringa<40> e = "Test text";_cv 2.81 % 2.81 % 10 +std::string e = "Test text";_median 1.83 ns 1.83 ns 10 +std::string e = "Test text";_stddev 0.049 ns 0.049 ns 10 +std::string e = "Test text";_cv 2.68 % 2.68 % 10 +std::string_view e = "Test text";_mean 0.739 ns 0.739 ns 10 +std::string_view e = "Test text";_median 0.729 ns 0.729 ns 10 +std::string_view e = "Test text";_stddev 0.020 ns 0.020 ns 10 +std::string_view e = "Test text";_cv 2.72 % 2.72 % 10 +ssa e = "Test text";_mean 0.369 ns 0.369 ns 10 +ssa e = "Test text";_median 0.366 ns 0.366 ns 10 +ssa e = "Test text";_stddev 0.013 ns 0.013 ns 10 +ssa e = "Test text";_cv 3.47 % 3.47 % 10 +stringa e = "Test text";_mean 1.15 ns 1.15 ns 10 +stringa e = "Test text";_median 1.16 ns 1.16 ns 10 +stringa e = "Test text";_stddev 0.053 ns 0.053 ns 10 +stringa e = "Test text";_cv 4.61 % 4.61 % 10 +lstringa<20> e = "Test text";_mean 1.94 ns 1.94 ns 10 +lstringa<20> e = "Test text";_median 1.92 ns 1.92 ns 10 +lstringa<20> e = "Test text";_stddev 0.064 ns 0.064 ns 10 +lstringa<20> e = "Test text";_cv 3.31 % 3.31 % 10 +lstringa<40> e = "Test text";_mean 1.88 ns 1.88 ns 10 +lstringa<40> e = "Test text";_median 1.87 ns 1.87 ns 10 +lstringa<40> e = "Test text";_stddev 0.055 ns 0.055 ns 10 +lstringa<40> e = "Test text";_cv 2.93 % 2.93 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890";_mean 18.8 ns 18.8 ns 10 -std::string e = "123456789012345678901234567890";_median 18.6 ns 18.6 ns 10 -std::string e = "123456789012345678901234567890";_stddev 0.658 ns 0.658 ns 10 -std::string e = "123456789012345678901234567890";_cv 3.50 % 3.50 % 10 -std::string_view e = "123456789012345678901234567890";_mean 0.747 ns 0.747 ns 10 -std::string_view e = "123456789012345678901234567890";_median 0.738 ns 0.738 ns 10 -std::string_view e = "123456789012345678901234567890";_stddev 0.027 ns 0.027 ns 10 -std::string_view e = "123456789012345678901234567890";_cv 3.58 % 3.58 % 10 -ssa e = "123456789012345678901234567890";_mean 0.370 ns 0.370 ns 10 -ssa e = "123456789012345678901234567890";_median 0.366 ns 0.366 ns 10 -ssa e = "123456789012345678901234567890";_stddev 0.010 ns 0.010 ns 10 -ssa e = "123456789012345678901234567890";_cv 2.71 % 2.71 % 10 -stringa e = "123456789012345678901234567890";_mean 1.88 ns 1.88 ns 10 -stringa e = "123456789012345678901234567890";_median 1.87 ns 1.87 ns 10 -stringa e = "123456789012345678901234567890";_stddev 0.057 ns 0.057 ns 10 -stringa e = "123456789012345678901234567890";_cv 3.02 % 3.02 % 10 -lstringa<20> e = "123456789012345678901234567890";_mean 21.0 ns 21.0 ns 10 -lstringa<20> e = "123456789012345678901234567890";_median 21.0 ns 21.0 ns 10 -lstringa<20> e = "123456789012345678901234567890";_stddev 0.876 ns 0.876 ns 10 -lstringa<20> e = "123456789012345678901234567890";_cv 4.17 % 4.17 % 10 -lstringa<40> e = "123456789012345678901234567890";_mean 2.55 ns 2.55 ns 10 -lstringa<40> e = "123456789012345678901234567890";_median 2.54 ns 2.54 ns 10 -lstringa<40> e = "123456789012345678901234567890";_stddev 0.042 ns 0.042 ns 10 -lstringa<40> e = "123456789012345678901234567890";_cv 1.63 % 1.63 % 10 +std::string e = "123456789012345678901234567890";_mean 19.6 ns 19.6 ns 10 +std::string e = "123456789012345678901234567890";_median 19.4 ns 19.4 ns 10 +std::string e = "123456789012345678901234567890";_stddev 0.396 ns 0.396 ns 10 +std::string e = "123456789012345678901234567890";_cv 2.02 % 2.02 % 10 +std::string_view e = "123456789012345678901234567890";_mean 0.771 ns 0.771 ns 10 +std::string_view e = "123456789012345678901234567890";_median 0.755 ns 0.755 ns 10 +std::string_view e = "123456789012345678901234567890";_stddev 0.049 ns 0.049 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 6.32 % 6.32 % 10 +ssa e = "123456789012345678901234567890";_mean 0.382 ns 0.382 ns 10 +ssa e = "123456789012345678901234567890";_median 0.377 ns 0.377 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.022 ns 0.022 ns 10 +ssa e = "123456789012345678901234567890";_cv 5.66 % 5.66 % 10 +stringa e = "123456789012345678901234567890";_mean 1.13 ns 1.13 ns 10 +stringa e = "123456789012345678901234567890";_median 1.12 ns 1.12 ns 10 +stringa e = "123456789012345678901234567890";_stddev 0.046 ns 0.046 ns 10 +stringa e = "123456789012345678901234567890";_cv 4.08 % 4.08 % 10 +lstringa<20> e = "123456789012345678901234567890";_mean 24.3 ns 24.3 ns 10 +lstringa<20> e = "123456789012345678901234567890";_median 23.9 ns 23.9 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 3.08 ns 3.08 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 12.68 % 12.68 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 2.60 ns 2.60 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 2.60 ns 2.60 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.067 ns 0.067 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 2.56 % 2.56 % 10 ----- Create copy of Str with 9 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "Test text"; auto c{e};_mean 4.83 ns 4.83 ns 10 -std::string e = "Test text"; auto c{e};_median 4.80 ns 4.80 ns 10 -std::string e = "Test text"; auto c{e};_stddev 0.091 ns 0.091 ns 10 -std::string e = "Test text"; auto c{e};_cv 1.89 % 1.89 % 10 +std::string e = "Test text"; auto c{e};_mean 5.67 ns 5.67 ns 10 +std::string e = "Test text"; auto c{e};_median 5.67 ns 5.67 ns 10 +std::string e = "Test text"; auto c{e};_stddev 0.159 ns 0.159 ns 10 +std::string e = "Test text"; auto c{e};_cv 2.80 % 2.80 % 10 std::string_view e = "Test text"; auto c{e};_mean 0.377 ns 0.377 ns 10 std::string_view e = "Test text"; auto c{e};_median 0.376 ns 0.376 ns 10 -std::string_view e = "Test text"; auto c{e};_stddev 0.010 ns 0.010 ns 10 -std::string_view e = "Test text"; auto c{e};_cv 2.62 % 2.62 % 10 -ssa e = "Test text"; auto c{e};_mean 0.368 ns 0.368 ns 10 -ssa e = "Test text"; auto c{e};_median 0.367 ns 0.367 ns 10 -ssa e = "Test text"; auto c{e};_stddev 0.007 ns 0.007 ns 10 -ssa e = "Test text"; auto c{e};_cv 1.99 % 1.99 % 10 -stringa e = "Test text"; auto c{e};_mean 1.11 ns 1.11 ns 10 -stringa e = "Test text"; auto c{e};_median 1.11 ns 1.11 ns 10 -stringa e = "Test text"; auto c{e};_stddev 0.025 ns 0.025 ns 10 -stringa e = "Test text"; auto c{e};_cv 2.29 % 2.29 % 10 -lstringa<20> e = "Test text"; auto c{e};_mean 4.18 ns 4.18 ns 10 -lstringa<20> e = "Test text"; auto c{e};_median 4.15 ns 4.15 ns 10 -lstringa<20> e = "Test text"; auto c{e};_stddev 0.134 ns 0.134 ns 10 -lstringa<20> e = "Test text"; auto c{e};_cv 3.20 % 3.20 % 10 -lstringa<40> e = "Test text"; auto c{e};_mean 4.47 ns 4.47 ns 10 -lstringa<40> e = "Test text"; auto c{e};_median 4.39 ns 4.39 ns 10 -lstringa<40> e = "Test text"; auto c{e};_stddev 0.381 ns 0.381 ns 10 -lstringa<40> e = "Test text"; auto c{e};_cv 8.52 % 8.52 % 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.008 ns 0.008 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 2.24 % 2.24 % 10 +ssa e = "Test text"; auto c{e};_mean 0.387 ns 0.387 ns 10 +ssa e = "Test text"; auto c{e};_median 0.387 ns 0.387 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.008 ns 0.008 ns 10 +ssa e = "Test text"; auto c{e};_cv 2.00 % 2.00 % 10 +stringa e = "Test text"; auto c{e};_mean 1.14 ns 1.14 ns 10 +stringa e = "Test text"; auto c{e};_median 1.14 ns 1.14 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.055 ns 0.055 ns 10 +stringa e = "Test text"; auto c{e};_cv 4.80 % 4.80 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 4.29 ns 4.29 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 4.26 ns 4.26 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.170 ns 0.170 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 3.97 % 3.97 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 4.20 ns 4.20 ns 10 +lstringa<40> e = "Test text"; auto c{e};_median 4.20 ns 4.20 ns 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 0.170 ns 0.170 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 4.05 % 4.05 % 10 ----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890"; auto c{e};_mean 19.8 ns 19.8 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_median 19.4 ns 19.4 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_stddev 0.903 ns 0.903 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_cv 4.56 % 4.56 % 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.752 ns 0.752 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.744 ns 0.744 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 21.2 ns 21.2 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 20.3 ns 20.3 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 2.42 ns 2.42 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 11.40 % 11.40 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.737 ns 0.737 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.728 ns 0.728 ns 10 std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.024 ns 0.024 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 3.23 % 3.23 % 10 -ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.375 ns 0.375 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_median 0.371 ns 0.371 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.010 ns 0.010 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_cv 2.67 % 2.67 % 10 -stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.89 ns 1.89 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_median 1.89 ns 1.89 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.049 ns 0.049 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_cv 2.60 % 2.60 % 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 21.0 ns 21.0 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 21.2 ns 21.2 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.965 ns 0.965 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 4.60 % 4.60 % 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.53 ns 4.53 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 4.49 ns 4.49 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.118 ns 0.118 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 2.60 % 2.60 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 3.24 % 3.24 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.379 ns 0.379 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 0.377 ns 0.377 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.016 ns 0.016 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 4.14 % 4.14 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.13 ns 1.13 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 1.13 ns 1.13 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.036 ns 0.036 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 3.20 % 3.20 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 20.7 ns 20.7 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 20.5 ns 20.5 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 1.08 ns 1.08 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 5.23 % 5.23 % 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.48 ns 4.48 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 4.43 ns 4.43 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.125 ns 0.125 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 2.79 % 2.79 % 10 ----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find;_mean 7.86 ns 7.86 ns 10 -std::string::find;_median 7.80 ns 7.80 ns 10 -std::string::find;_stddev 0.292 ns 0.292 ns 10 -std::string::find;_cv 3.72 % 3.72 % 10 -std::string_view::find;_mean 7.36 ns 7.36 ns 10 -std::string_view::find;_median 7.15 ns 7.15 ns 10 -std::string_view::find;_stddev 0.780 ns 0.780 ns 10 -std::string_view::find;_cv 10.60 % 10.60 % 10 -ssa::find;_mean 7.03 ns 7.03 ns 10 -ssa::find;_median 7.02 ns 7.02 ns 10 -ssa::find;_stddev 0.355 ns 0.355 ns 10 -ssa::find;_cv 5.06 % 5.06 % 10 -stringa::find;_mean 7.17 ns 7.17 ns 10 -stringa::find;_median 7.16 ns 7.16 ns 10 -stringa::find;_stddev 0.148 ns 0.148 ns 10 -stringa::find;_cv 2.06 % 2.06 % 10 -lstringa<20>::find;_mean 6.43 ns 6.43 ns 10 -lstringa<20>::find;_median 6.42 ns 6.42 ns 10 -lstringa<20>::find;_stddev 0.163 ns 0.163 ns 10 -lstringa<20>::find;_cv 2.53 % 2.53 % 10 -lstringa<40>::find;_mean 6.56 ns 6.56 ns 10 -lstringa<40>::find;_median 6.31 ns 6.31 ns 10 -lstringa<40>::find;_stddev 0.479 ns 0.479 ns 10 -lstringa<40>::find;_cv 7.30 % 7.30 % 10 +std::string::find;_mean 8.53 ns 8.53 ns 10 +std::string::find;_median 8.27 ns 8.27 ns 10 +std::string::find;_stddev 1.14 ns 1.14 ns 10 +std::string::find;_cv 13.40 % 13.40 % 10 +std::string_view::find;_mean 7.92 ns 7.92 ns 10 +std::string_view::find;_median 7.88 ns 7.88 ns 10 +std::string_view::find;_stddev 0.268 ns 0.268 ns 10 +std::string_view::find;_cv 3.38 % 3.38 % 10 +ssa::find;_mean 7.08 ns 7.08 ns 10 +ssa::find;_median 6.99 ns 6.99 ns 10 +ssa::find;_stddev 0.395 ns 0.395 ns 10 +ssa::find;_cv 5.57 % 5.57 % 10 +stringa::find;_mean 7.65 ns 7.65 ns 10 +stringa::find;_median 7.61 ns 7.61 ns 10 +stringa::find;_stddev 0.347 ns 0.347 ns 10 +stringa::find;_cv 4.54 % 4.54 % 10 +lstringa<20>::find;_mean 7.06 ns 7.06 ns 10 +lstringa<20>::find;_median 7.07 ns 7.07 ns 10 +lstringa<20>::find;_stddev 0.276 ns 0.276 ns 10 +lstringa<20>::find;_cv 3.90 % 3.90 % 10 +lstringa<40>::find;_mean 6.79 ns 6.79 ns 10 +lstringa<40>::find;_median 6.70 ns 6.70 ns 10 +lstringa<40>::find;_stddev 0.234 ns 0.234 ns 10 +lstringa<40>::find;_cv 3.45 % 3.45 % 10 ------- Copy not literal Str with N symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string copy{str_with_len_N};/15_mean 5.69 ns 5.69 ns 10 -std::string copy{str_with_len_N};/15_median 5.60 ns 5.60 ns 10 -std::string copy{str_with_len_N};/15_stddev 0.168 ns 0.168 ns 10 -std::string copy{str_with_len_N};/15_cv 2.95 % 2.95 % 10 -std::string copy{str_with_len_N};/16_mean 23.6 ns 23.6 ns 10 -std::string copy{str_with_len_N};/16_median 23.2 ns 23.2 ns 10 -std::string copy{str_with_len_N};/16_stddev 0.963 ns 0.963 ns 10 -std::string copy{str_with_len_N};/16_cv 4.08 % 4.08 % 10 -std::string copy{str_with_len_N};/23_mean 24.0 ns 24.0 ns 10 -std::string copy{str_with_len_N};/23_median 23.9 ns 23.9 ns 10 -std::string copy{str_with_len_N};/23_stddev 0.815 ns 0.815 ns 10 -std::string copy{str_with_len_N};/23_cv 3.40 % 3.40 % 10 -std::string copy{str_with_len_N};/24_mean 23.3 ns 23.3 ns 10 -std::string copy{str_with_len_N};/24_median 23.1 ns 23.1 ns 10 -std::string copy{str_with_len_N};/24_stddev 0.657 ns 0.657 ns 10 -std::string copy{str_with_len_N};/24_cv 2.83 % 2.83 % 10 -std::string copy{str_with_len_N};/32_mean 23.2 ns 23.2 ns 10 -std::string copy{str_with_len_N};/32_median 23.0 ns 23.0 ns 10 -std::string copy{str_with_len_N};/32_stddev 0.736 ns 0.736 ns 10 -std::string copy{str_with_len_N};/32_cv 3.17 % 3.17 % 10 -std::string copy{str_with_len_N};/64_mean 23.3 ns 23.3 ns 10 -std::string copy{str_with_len_N};/64_median 23.1 ns 23.1 ns 10 -std::string copy{str_with_len_N};/64_stddev 0.632 ns 0.632 ns 10 -std::string copy{str_with_len_N};/64_cv 2.71 % 2.71 % 10 -std::string copy{str_with_len_N};/128_mean 25.2 ns 25.2 ns 10 +std::string copy{str_with_len_N};/15_mean 4.98 ns 4.98 ns 10 +std::string copy{str_with_len_N};/15_median 4.86 ns 4.86 ns 10 +std::string copy{str_with_len_N};/15_stddev 0.463 ns 0.463 ns 10 +std::string copy{str_with_len_N};/15_cv 9.28 % 9.28 % 10 +std::string copy{str_with_len_N};/16_mean 23.5 ns 23.5 ns 10 +std::string copy{str_with_len_N};/16_median 23.1 ns 23.1 ns 10 +std::string copy{str_with_len_N};/16_stddev 1.60 ns 1.60 ns 10 +std::string copy{str_with_len_N};/16_cv 6.83 % 6.83 % 10 +std::string copy{str_with_len_N};/23_mean 23.1 ns 23.1 ns 10 +std::string copy{str_with_len_N};/23_median 22.8 ns 22.8 ns 10 +std::string copy{str_with_len_N};/23_stddev 1.17 ns 1.17 ns 10 +std::string copy{str_with_len_N};/23_cv 5.07 % 5.07 % 10 +std::string copy{str_with_len_N};/24_mean 23.1 ns 23.1 ns 10 +std::string copy{str_with_len_N};/24_median 22.7 ns 22.7 ns 10 +std::string copy{str_with_len_N};/24_stddev 1.30 ns 1.30 ns 10 +std::string copy{str_with_len_N};/24_cv 5.62 % 5.62 % 10 +std::string copy{str_with_len_N};/32_mean 25.3 ns 25.3 ns 10 +std::string copy{str_with_len_N};/32_median 24.8 ns 24.8 ns 10 +std::string copy{str_with_len_N};/32_stddev 2.23 ns 2.23 ns 10 +std::string copy{str_with_len_N};/32_cv 8.81 % 8.81 % 10 +std::string copy{str_with_len_N};/64_mean 22.7 ns 22.7 ns 10 +std::string copy{str_with_len_N};/64_median 22.4 ns 22.4 ns 10 +std::string copy{str_with_len_N};/64_stddev 0.714 ns 0.714 ns 10 +std::string copy{str_with_len_N};/64_cv 3.15 % 3.15 % 10 +std::string copy{str_with_len_N};/128_mean 25.8 ns 25.8 ns 10 std::string copy{str_with_len_N};/128_median 25.3 ns 25.3 ns 10 -std::string copy{str_with_len_N};/128_stddev 0.448 ns 0.448 ns 10 -std::string copy{str_with_len_N};/128_cv 1.78 % 1.78 % 10 -std::string copy{str_with_len_N};/256_mean 25.4 ns 25.4 ns 10 -std::string copy{str_with_len_N};/256_median 25.1 ns 25.1 ns 10 -std::string copy{str_with_len_N};/256_stddev 0.854 ns 0.854 ns 10 -std::string copy{str_with_len_N};/256_cv 3.36 % 3.36 % 10 -std::string copy{str_with_len_N};/512_mean 29.9 ns 29.9 ns 10 -std::string copy{str_with_len_N};/512_median 29.5 ns 29.5 ns 10 -std::string copy{str_with_len_N};/512_stddev 1.73 ns 1.73 ns 10 -std::string copy{str_with_len_N};/512_cv 5.79 % 5.79 % 10 -std::string copy{str_with_len_N};/1024_mean 44.1 ns 44.1 ns 10 -std::string copy{str_with_len_N};/1024_median 44.1 ns 44.1 ns 10 -std::string copy{str_with_len_N};/1024_stddev 0.355 ns 0.355 ns 10 -std::string copy{str_with_len_N};/1024_cv 0.81 % 0.81 % 10 -std::string copy{str_with_len_N};/2048_mean 130 ns 130 ns 10 -std::string copy{str_with_len_N};/2048_median 132 ns 132 ns 10 -std::string copy{str_with_len_N};/2048_stddev 8.33 ns 8.33 ns 10 -std::string copy{str_with_len_N};/2048_cv 6.39 % 6.39 % 10 -std::string copy{str_with_len_N};/4096_mean 153 ns 153 ns 10 -std::string copy{str_with_len_N};/4096_median 154 ns 154 ns 10 -std::string copy{str_with_len_N};/4096_stddev 9.49 ns 9.49 ns 10 -std::string copy{str_with_len_N};/4096_cv 6.19 % 6.19 % 10 +std::string copy{str_with_len_N};/128_stddev 1.81 ns 1.81 ns 10 +std::string copy{str_with_len_N};/128_cv 7.01 % 7.01 % 10 +std::string copy{str_with_len_N};/256_mean 24.6 ns 24.6 ns 10 +std::string copy{str_with_len_N};/256_median 24.4 ns 24.4 ns 10 +std::string copy{str_with_len_N};/256_stddev 0.598 ns 0.598 ns 10 +std::string copy{str_with_len_N};/256_cv 2.43 % 2.43 % 10 +std::string copy{str_with_len_N};/512_mean 28.6 ns 28.6 ns 10 +std::string copy{str_with_len_N};/512_median 28.3 ns 28.3 ns 10 +std::string copy{str_with_len_N};/512_stddev 0.884 ns 0.884 ns 10 +std::string copy{str_with_len_N};/512_cv 3.09 % 3.09 % 10 +std::string copy{str_with_len_N};/1024_mean 47.0 ns 47.0 ns 10 +std::string copy{str_with_len_N};/1024_median 46.2 ns 46.2 ns 10 +std::string copy{str_with_len_N};/1024_stddev 1.46 ns 1.46 ns 10 +std::string copy{str_with_len_N};/1024_cv 3.11 % 3.11 % 10 +std::string copy{str_with_len_N};/2048_mean 124 ns 124 ns 10 +std::string copy{str_with_len_N};/2048_median 124 ns 124 ns 10 +std::string copy{str_with_len_N};/2048_stddev 8.58 ns 8.58 ns 10 +std::string copy{str_with_len_N};/2048_cv 6.94 % 6.94 % 10 +std::string copy{str_with_len_N};/4096_mean 168 ns 168 ns 10 +std::string copy{str_with_len_N};/4096_median 164 ns 164 ns 10 +std::string copy{str_with_len_N};/4096_stddev 11.7 ns 11.7 ns 10 +std::string copy{str_with_len_N};/4096_cv 7.01 % 7.01 % 10 stringa copy{str_with_len_N};/15_mean 1.10 ns 1.10 ns 10 -stringa copy{str_with_len_N};/15_median 1.09 ns 1.09 ns 10 +stringa copy{str_with_len_N};/15_median 1.10 ns 1.10 ns 10 stringa copy{str_with_len_N};/15_stddev 0.023 ns 0.023 ns 10 -stringa copy{str_with_len_N};/15_cv 2.13 % 2.13 % 10 -stringa copy{str_with_len_N};/16_mean 1.10 ns 1.10 ns 10 -stringa copy{str_with_len_N};/16_median 1.10 ns 1.10 ns 10 -stringa copy{str_with_len_N};/16_stddev 0.021 ns 0.021 ns 10 -stringa copy{str_with_len_N};/16_cv 1.87 % 1.87 % 10 -stringa copy{str_with_len_N};/23_mean 1.10 ns 1.10 ns 10 -stringa copy{str_with_len_N};/23_median 1.10 ns 1.10 ns 10 -stringa copy{str_with_len_N};/23_stddev 0.020 ns 0.020 ns 10 -stringa copy{str_with_len_N};/23_cv 1.77 % 1.77 % 10 -stringa copy{str_with_len_N};/24_mean 16.7 ns 16.7 ns 10 -stringa copy{str_with_len_N};/24_median 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/24_stddev 2.22 ns 2.22 ns 10 -stringa copy{str_with_len_N};/24_cv 13.29 % 13.29 % 10 +stringa copy{str_with_len_N};/15_cv 2.06 % 2.06 % 10 +stringa copy{str_with_len_N};/16_mean 1.11 ns 1.11 ns 10 +stringa copy{str_with_len_N};/16_median 1.12 ns 1.12 ns 10 +stringa copy{str_with_len_N};/16_stddev 0.020 ns 0.020 ns 10 +stringa copy{str_with_len_N};/16_cv 1.82 % 1.82 % 10 +stringa copy{str_with_len_N};/23_mean 1.12 ns 1.12 ns 10 +stringa copy{str_with_len_N};/23_median 1.11 ns 1.11 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.053 ns 0.053 ns 10 +stringa copy{str_with_len_N};/23_cv 4.72 % 4.72 % 10 +stringa copy{str_with_len_N};/24_mean 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/24_median 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/24_stddev 0.228 ns 0.228 ns 10 +stringa copy{str_with_len_N};/24_cv 1.41 % 1.41 % 10 stringa copy{str_with_len_N};/32_mean 16.0 ns 16.0 ns 10 stringa copy{str_with_len_N};/32_median 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/32_stddev 0.274 ns 0.274 ns 10 -stringa copy{str_with_len_N};/32_cv 1.71 % 1.71 % 10 -stringa copy{str_with_len_N};/64_mean 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/64_median 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/64_stddev 0.140 ns 0.140 ns 10 -stringa copy{str_with_len_N};/64_cv 0.87 % 0.87 % 10 -stringa copy{str_with_len_N};/128_mean 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/128_median 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/128_stddev 0.101 ns 0.101 ns 10 -stringa copy{str_with_len_N};/128_cv 0.63 % 0.63 % 10 -stringa copy{str_with_len_N};/256_mean 16.0 ns 16.0 ns 10 +stringa copy{str_with_len_N};/32_stddev 0.161 ns 0.161 ns 10 +stringa copy{str_with_len_N};/32_cv 1.00 % 1.00 % 10 +stringa copy{str_with_len_N};/64_mean 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/64_median 15.9 ns 15.9 ns 10 +stringa copy{str_with_len_N};/64_stddev 0.400 ns 0.400 ns 10 +stringa copy{str_with_len_N};/64_cv 2.48 % 2.48 % 10 +stringa copy{str_with_len_N};/128_mean 16.3 ns 16.3 ns 10 +stringa copy{str_with_len_N};/128_median 16.3 ns 16.3 ns 10 +stringa copy{str_with_len_N};/128_stddev 0.312 ns 0.312 ns 10 +stringa copy{str_with_len_N};/128_cv 1.91 % 1.91 % 10 +stringa copy{str_with_len_N};/256_mean 16.1 ns 16.1 ns 10 stringa copy{str_with_len_N};/256_median 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/256_stddev 0.199 ns 0.199 ns 10 -stringa copy{str_with_len_N};/256_cv 1.24 % 1.24 % 10 -stringa copy{str_with_len_N};/512_mean 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/512_median 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/512_stddev 0.116 ns 0.116 ns 10 -stringa copy{str_with_len_N};/512_cv 0.72 % 0.72 % 10 -stringa copy{str_with_len_N};/1024_mean 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/1024_median 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/1024_stddev 0.086 ns 0.086 ns 10 -stringa copy{str_with_len_N};/1024_cv 0.54 % 0.54 % 10 -stringa copy{str_with_len_N};/2048_mean 16.1 ns 16.1 ns 10 -stringa copy{str_with_len_N};/2048_median 16.1 ns 16.1 ns 10 -stringa copy{str_with_len_N};/2048_stddev 0.231 ns 0.231 ns 10 +stringa copy{str_with_len_N};/256_stddev 0.202 ns 0.202 ns 10 +stringa copy{str_with_len_N};/256_cv 1.26 % 1.26 % 10 +stringa copy{str_with_len_N};/512_mean 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/512_median 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/512_stddev 0.129 ns 0.129 ns 10 +stringa copy{str_with_len_N};/512_cv 0.80 % 0.80 % 10 +stringa copy{str_with_len_N};/1024_mean 16.2 ns 16.2 ns 10 +stringa copy{str_with_len_N};/1024_median 16.2 ns 16.2 ns 10 +stringa copy{str_with_len_N};/1024_stddev 0.215 ns 0.215 ns 10 +stringa copy{str_with_len_N};/1024_cv 1.33 % 1.33 % 10 +stringa copy{str_with_len_N};/2048_mean 16.2 ns 16.2 ns 10 +stringa copy{str_with_len_N};/2048_median 16.2 ns 16.2 ns 10 +stringa copy{str_with_len_N};/2048_stddev 0.230 ns 0.230 ns 10 stringa copy{str_with_len_N};/2048_cv 1.43 % 1.43 % 10 -stringa copy{str_with_len_N};/4096_mean 16.0 ns 16.0 ns 10 -stringa copy{str_with_len_N};/4096_median 15.9 ns 15.9 ns 10 -stringa copy{str_with_len_N};/4096_stddev 0.137 ns 0.137 ns 10 -stringa copy{str_with_len_N};/4096_cv 0.86 % 0.86 % 10 -lstringa<16> copy{str_with_len_N};/15_mean 4.12 ns 4.12 ns 10 -lstringa<16> copy{str_with_len_N};/15_median 4.06 ns 4.06 ns 10 -lstringa<16> copy{str_with_len_N};/15_stddev 0.151 ns 0.151 ns 10 -lstringa<16> copy{str_with_len_N};/15_cv 3.68 % 3.68 % 10 -lstringa<16> copy{str_with_len_N};/16_mean 4.09 ns 4.09 ns 10 -lstringa<16> copy{str_with_len_N};/16_median 4.04 ns 4.04 ns 10 -lstringa<16> copy{str_with_len_N};/16_stddev 0.099 ns 0.099 ns 10 -lstringa<16> copy{str_with_len_N};/16_cv 2.42 % 2.42 % 10 -lstringa<16> copy{str_with_len_N};/23_mean 4.04 ns 4.04 ns 10 -lstringa<16> copy{str_with_len_N};/23_median 4.02 ns 4.02 ns 10 -lstringa<16> copy{str_with_len_N};/23_stddev 0.087 ns 0.087 ns 10 -lstringa<16> copy{str_with_len_N};/23_cv 2.16 % 2.16 % 10 -lstringa<16> copy{str_with_len_N};/24_mean 22.9 ns 22.9 ns 10 -lstringa<16> copy{str_with_len_N};/24_median 22.9 ns 22.9 ns 10 -lstringa<16> copy{str_with_len_N};/24_stddev 0.276 ns 0.276 ns 10 -lstringa<16> copy{str_with_len_N};/24_cv 1.20 % 1.20 % 10 -lstringa<16> copy{str_with_len_N};/32_mean 22.9 ns 22.9 ns 10 -lstringa<16> copy{str_with_len_N};/32_median 23.0 ns 23.0 ns 10 -lstringa<16> copy{str_with_len_N};/32_stddev 0.429 ns 0.429 ns 10 -lstringa<16> copy{str_with_len_N};/32_cv 1.87 % 1.87 % 10 -lstringa<16> copy{str_with_len_N};/64_mean 24.1 ns 24.1 ns 10 -lstringa<16> copy{str_with_len_N};/64_median 23.8 ns 23.8 ns 10 -lstringa<16> copy{str_with_len_N};/64_stddev 0.966 ns 0.966 ns 10 -lstringa<16> copy{str_with_len_N};/64_cv 4.01 % 4.01 % 10 -lstringa<16> copy{str_with_len_N};/128_mean 24.8 ns 24.8 ns 10 -lstringa<16> copy{str_with_len_N};/128_median 24.8 ns 24.8 ns 10 -lstringa<16> copy{str_with_len_N};/128_stddev 0.671 ns 0.671 ns 10 -lstringa<16> copy{str_with_len_N};/128_cv 2.70 % 2.70 % 10 -lstringa<16> copy{str_with_len_N};/256_mean 26.0 ns 26.0 ns 10 -lstringa<16> copy{str_with_len_N};/256_median 25.8 ns 25.8 ns 10 -lstringa<16> copy{str_with_len_N};/256_stddev 0.889 ns 0.889 ns 10 -lstringa<16> copy{str_with_len_N};/256_cv 3.42 % 3.42 % 10 -lstringa<16> copy{str_with_len_N};/512_mean 28.5 ns 28.5 ns 10 -lstringa<16> copy{str_with_len_N};/512_median 28.4 ns 28.4 ns 10 -lstringa<16> copy{str_with_len_N};/512_stddev 0.294 ns 0.294 ns 10 -lstringa<16> copy{str_with_len_N};/512_cv 1.03 % 1.03 % 10 -lstringa<16> copy{str_with_len_N};/1024_mean 93.2 ns 93.2 ns 10 -lstringa<16> copy{str_with_len_N};/1024_median 96.2 ns 96.2 ns 10 -lstringa<16> copy{str_with_len_N};/1024_stddev 10.7 ns 10.7 ns 10 -lstringa<16> copy{str_with_len_N};/1024_cv 11.44 % 11.44 % 10 -lstringa<16> copy{str_with_len_N};/2048_mean 113 ns 113 ns 10 -lstringa<16> copy{str_with_len_N};/2048_median 114 ns 114 ns 10 -lstringa<16> copy{str_with_len_N};/2048_stddev 12.1 ns 12.1 ns 10 -lstringa<16> copy{str_with_len_N};/2048_cv 10.70 % 10.70 % 10 -lstringa<16> copy{str_with_len_N};/4096_mean 127 ns 127 ns 10 -lstringa<16> copy{str_with_len_N};/4096_median 126 ns 126 ns 10 -lstringa<16> copy{str_with_len_N};/4096_stddev 8.40 ns 8.40 ns 10 -lstringa<16> copy{str_with_len_N};/4096_cv 6.63 % 6.63 % 10 -lstringa<512> copy{str_with_len_N};/15_mean 4.48 ns 4.48 ns 10 -lstringa<512> copy{str_with_len_N};/15_median 4.38 ns 4.38 ns 10 -lstringa<512> copy{str_with_len_N};/15_stddev 0.311 ns 0.311 ns 10 -lstringa<512> copy{str_with_len_N};/15_cv 6.94 % 6.94 % 10 -lstringa<512> copy{str_with_len_N};/16_mean 4.49 ns 4.49 ns 10 -lstringa<512> copy{str_with_len_N};/16_median 4.48 ns 4.48 ns 10 -lstringa<512> copy{str_with_len_N};/16_stddev 0.123 ns 0.123 ns 10 -lstringa<512> copy{str_with_len_N};/16_cv 2.75 % 2.75 % 10 -lstringa<512> copy{str_with_len_N};/23_mean 4.43 ns 4.43 ns 10 -lstringa<512> copy{str_with_len_N};/23_median 4.40 ns 4.40 ns 10 -lstringa<512> copy{str_with_len_N};/23_stddev 0.107 ns 0.107 ns 10 -lstringa<512> copy{str_with_len_N};/23_cv 2.42 % 2.42 % 10 -lstringa<512> copy{str_with_len_N};/24_mean 4.55 ns 4.55 ns 10 -lstringa<512> copy{str_with_len_N};/24_median 4.53 ns 4.53 ns 10 -lstringa<512> copy{str_with_len_N};/24_stddev 0.112 ns 0.112 ns 10 -lstringa<512> copy{str_with_len_N};/24_cv 2.47 % 2.47 % 10 -lstringa<512> copy{str_with_len_N};/32_mean 4.12 ns 4.12 ns 10 -lstringa<512> copy{str_with_len_N};/32_median 4.09 ns 4.09 ns 10 -lstringa<512> copy{str_with_len_N};/32_stddev 0.123 ns 0.123 ns 10 -lstringa<512> copy{str_with_len_N};/32_cv 3.00 % 3.00 % 10 -lstringa<512> copy{str_with_len_N};/64_mean 6.30 ns 6.30 ns 10 -lstringa<512> copy{str_with_len_N};/64_median 6.16 ns 6.16 ns 10 -lstringa<512> copy{str_with_len_N};/64_stddev 0.337 ns 0.337 ns 10 -lstringa<512> copy{str_with_len_N};/64_cv 5.35 % 5.35 % 10 -lstringa<512> copy{str_with_len_N};/128_mean 6.07 ns 6.07 ns 10 -lstringa<512> copy{str_with_len_N};/128_median 6.00 ns 6.00 ns 10 -lstringa<512> copy{str_with_len_N};/128_stddev 0.226 ns 0.226 ns 10 -lstringa<512> copy{str_with_len_N};/128_cv 3.73 % 3.73 % 10 -lstringa<512> copy{str_with_len_N};/256_mean 7.87 ns 7.87 ns 10 -lstringa<512> copy{str_with_len_N};/256_median 7.88 ns 7.88 ns 10 -lstringa<512> copy{str_with_len_N};/256_stddev 0.159 ns 0.159 ns 10 -lstringa<512> copy{str_with_len_N};/256_cv 2.02 % 2.02 % 10 -lstringa<512> copy{str_with_len_N};/512_mean 10.2 ns 10.2 ns 10 -lstringa<512> copy{str_with_len_N};/512_median 10.1 ns 10.1 ns 10 -lstringa<512> copy{str_with_len_N};/512_stddev 0.401 ns 0.401 ns 10 -lstringa<512> copy{str_with_len_N};/512_cv 3.95 % 3.95 % 10 -lstringa<512> copy{str_with_len_N};/1024_mean 95.5 ns 95.5 ns 10 -lstringa<512> copy{str_with_len_N};/1024_median 95.8 ns 95.8 ns 10 -lstringa<512> copy{str_with_len_N};/1024_stddev 10.0 ns 10.0 ns 10 -lstringa<512> copy{str_with_len_N};/1024_cv 10.48 % 10.48 % 10 -lstringa<512> copy{str_with_len_N};/2048_mean 116 ns 116 ns 10 -lstringa<512> copy{str_with_len_N};/2048_median 119 ns 119 ns 10 -lstringa<512> copy{str_with_len_N};/2048_stddev 12.9 ns 12.9 ns 10 -lstringa<512> copy{str_with_len_N};/2048_cv 11.09 % 11.09 % 10 -lstringa<512> copy{str_with_len_N};/4096_mean 130 ns 130 ns 10 -lstringa<512> copy{str_with_len_N};/4096_median 126 ns 126 ns 10 -lstringa<512> copy{str_with_len_N};/4096_stddev 13.5 ns 13.5 ns 10 -lstringa<512> copy{str_with_len_N};/4096_cv 10.37 % 10.37 % 10 +stringa copy{str_with_len_N};/4096_mean 16.5 ns 16.5 ns 10 +stringa copy{str_with_len_N};/4096_median 16.4 ns 16.4 ns 10 +stringa copy{str_with_len_N};/4096_stddev 0.442 ns 0.442 ns 10 +stringa copy{str_with_len_N};/4096_cv 2.68 % 2.68 % 10 +lstringa<16> copy{str_with_len_N};/15_mean 4.72 ns 4.72 ns 10 +lstringa<16> copy{str_with_len_N};/15_median 4.58 ns 4.58 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.484 ns 0.484 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 10.25 % 10.25 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 4.56 ns 4.56 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 4.59 ns 4.59 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 0.086 ns 0.086 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 1.88 % 1.88 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 4.73 ns 4.73 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 4.59 ns 4.59 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 0.475 ns 0.475 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 10.05 % 10.05 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 25.6 ns 25.6 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 24.9 ns 24.9 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 1.86 ns 1.86 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 7.29 % 7.29 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 24.1 ns 24.1 ns 10 +lstringa<16> copy{str_with_len_N};/32_median 24.0 ns 24.0 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 0.967 ns 0.967 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 4.01 % 4.01 % 10 +lstringa<16> copy{str_with_len_N};/64_mean 25.5 ns 25.5 ns 10 +lstringa<16> copy{str_with_len_N};/64_median 25.2 ns 25.2 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 0.977 ns 0.977 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 3.82 % 3.82 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 29.0 ns 29.0 ns 10 +lstringa<16> copy{str_with_len_N};/128_median 29.0 ns 29.0 ns 10 +lstringa<16> copy{str_with_len_N};/128_stddev 3.03 ns 3.03 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 10.44 % 10.44 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 27.2 ns 27.2 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 27.0 ns 27.0 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 0.851 ns 0.851 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 3.13 % 3.13 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 30.4 ns 30.4 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 29.7 ns 29.7 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 2.05 ns 2.05 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 6.75 % 6.75 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 105 ns 105 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 105 ns 105 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 17.4 ns 17.4 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 16.65 % 16.65 % 10 +lstringa<16> copy{str_with_len_N};/2048_mean 120 ns 120 ns 10 +lstringa<16> copy{str_with_len_N};/2048_median 124 ns 124 ns 10 +lstringa<16> copy{str_with_len_N};/2048_stddev 13.8 ns 13.8 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 11.51 % 11.51 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 134 ns 134 ns 10 +lstringa<16> copy{str_with_len_N};/4096_median 132 ns 132 ns 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 11.0 ns 11.0 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 8.20 % 8.20 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 4.93 ns 4.93 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 4.90 ns 4.90 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 0.296 ns 0.296 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 6.01 % 6.01 % 10 +lstringa<512> copy{str_with_len_N};/16_mean 5.05 ns 5.05 ns 10 +lstringa<512> copy{str_with_len_N};/16_median 4.97 ns 4.97 ns 10 +lstringa<512> copy{str_with_len_N};/16_stddev 0.334 ns 0.334 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 6.61 % 6.61 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 5.29 ns 5.29 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 5.18 ns 5.18 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 0.438 ns 0.438 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 8.27 % 8.27 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 5.07 ns 5.07 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 4.89 ns 4.89 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.533 ns 0.533 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 10.51 % 10.51 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 4.54 ns 4.54 ns 10 +lstringa<512> copy{str_with_len_N};/32_median 4.48 ns 4.48 ns 10 +lstringa<512> copy{str_with_len_N};/32_stddev 0.147 ns 0.147 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 3.25 % 3.25 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 6.08 ns 6.08 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 5.99 ns 5.99 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.258 ns 0.258 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 4.25 % 4.25 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 6.39 ns 6.39 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 6.41 ns 6.41 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 0.132 ns 0.132 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 2.07 % 2.07 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 8.42 ns 8.42 ns 10 +lstringa<512> copy{str_with_len_N};/256_median 8.12 ns 8.12 ns 10 +lstringa<512> copy{str_with_len_N};/256_stddev 0.746 ns 0.746 ns 10 +lstringa<512> copy{str_with_len_N};/256_cv 8.85 % 8.85 % 10 +lstringa<512> copy{str_with_len_N};/512_mean 11.5 ns 11.5 ns 10 +lstringa<512> copy{str_with_len_N};/512_median 11.4 ns 11.4 ns 10 +lstringa<512> copy{str_with_len_N};/512_stddev 0.398 ns 0.398 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 3.46 % 3.46 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 94.1 ns 94.1 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 99.1 ns 99.1 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 10.4 ns 10.4 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 11.10 % 11.10 % 10 +lstringa<512> copy{str_with_len_N};/2048_mean 112 ns 112 ns 10 +lstringa<512> copy{str_with_len_N};/2048_median 115 ns 115 ns 10 +lstringa<512> copy{str_with_len_N};/2048_stddev 11.1 ns 11.1 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 9.89 % 9.89 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 129 ns 129 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 128 ns 128 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 9.90 ns 9.90 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 7.69 % 7.69 % 10 ----- Convert to int '1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 27.5 ns 27.5 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 27.7 ns 27.7 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 1.02 ns 1.02 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 3.69 % 3.69 % 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 15.1 ns 15.1 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 15.1 ns 15.1 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.395 ns 0.395 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 2.62 % 2.62 % 10 -stringa s = "123456789"; int res = s.to_int_mean 12.4 ns 12.4 ns 10 -stringa s = "123456789"; int res = s.to_int_median 12.4 ns 12.4 ns 10 -stringa s = "123456789"; int res = s.to_int_stddev 0.134 ns 0.134 ns 10 -stringa s = "123456789"; int res = s.to_int_cv 1.08 % 1.08 % 10 -ssa s = "123456789"; int res = s.to_int_mean 12.2 ns 12.2 ns 10 -ssa s = "123456789"; int res = s.to_int_median 12.2 ns 12.2 ns 10 -ssa s = "123456789"; int res = s.to_int_stddev 0.135 ns 0.135 ns 10 -ssa s = "123456789"; int res = s.to_int_cv 1.11 % 1.11 % 10 -lstringa<20> s = "123456789"; int res = s.to_int_mean 12.4 ns 12.4 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_median 12.4 ns 12.4 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.212 ns 0.212 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_cv 1.71 % 1.71 % 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 26.8 ns 26.8 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 26.8 ns 26.8 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.657 ns 0.657 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 2.45 % 2.45 % 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 15.0 ns 15.0 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 15.0 ns 15.0 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.419 ns 0.419 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 2.79 % 2.79 % 10 +stringa s = "123456789"; int res = s.to_int_mean 12.6 ns 12.6 ns 10 +stringa s = "123456789"; int res = s.to_int_median 12.5 ns 12.5 ns 10 +stringa s = "123456789"; int res = s.to_int_stddev 0.332 ns 0.332 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 2.63 % 2.63 % 10 +ssa s = "123456789"; int res = s.to_int_mean 12.6 ns 12.6 ns 10 +ssa s = "123456789"; int res = s.to_int_median 12.4 ns 12.4 ns 10 +ssa s = "123456789"; int res = s.to_int_stddev 0.694 ns 0.694 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 5.52 % 5.52 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 12.3 ns 12.3 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 12.2 ns 12.2 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.340 ns 0.340 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 2.78 % 2.78 % 10 ----- Convert to unsigned 'abcDef' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 24.1 ns 24.1 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 23.9 ns 23.9 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.739 ns 0.739 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 3.07 % 3.07 % 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.60 ns 9.60 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.56 ns 9.56 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.196 ns 0.196 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 2.05 % 2.05 % 10 -stringa s = "abcDef"; int res = s.to_int_mean 12.7 ns 12.7 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 23.4 ns 23.4 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 23.2 ns 23.2 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.586 ns 0.586 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 2.50 % 2.50 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.80 ns 9.80 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.53 ns 9.53 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.691 ns 0.691 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 7.05 % 7.05 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 12.5 ns 12.5 ns 10 stringa s = "abcDef"; int res = s.to_int_median 12.5 ns 12.5 ns 10 -stringa s = "abcDef"; int res = s.to_int_stddev 0.388 ns 0.388 ns 10 -stringa s = "abcDef"; int res = s.to_int_cv 3.05 % 3.05 % 10 -ssa s = "abcDef"; int res = s.to_int_mean 13.1 ns 13.1 ns 10 -ssa s = "abcDef"; int res = s.to_int_median 13.0 ns 13.0 ns 10 -ssa s = "abcDef"; int res = s.to_int_stddev 0.717 ns 0.717 ns 10 -ssa s = "abcDef"; int res = s.to_int_cv 5.46 % 5.46 % 10 -lstringa<20> s = "abcDef"; int res = s.to_int_mean 12.7 ns 12.7 ns 10 +stringa s = "abcDef"; int res = s.to_int_stddev 0.229 ns 0.229 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 1.83 % 1.83 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 12.6 ns 12.6 ns 10 +ssa s = "abcDef"; int res = s.to_int_median 12.5 ns 12.5 ns 10 +ssa s = "abcDef"; int res = s.to_int_stddev 0.354 ns 0.354 ns 10 +ssa s = "abcDef"; int res = s.to_int_cv 2.81 % 2.81 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_mean 13.0 ns 13.0 ns 10 lstringa<20> s = "abcDef"; int res = s.to_int_median 12.6 ns 12.6 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.416 ns 0.416 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_cv 3.26 % 3.26 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.789 ns 0.789 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 6.06 % 6.06 % 10 ----- Convert to int ' 1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 28.9 ns 28.9 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 28.7 ns 28.7 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 0.802 ns 0.802 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 2.77 % 2.77 % 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 18.4 ns 18.4 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 18.4 ns 18.4 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.236 ns 0.236 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 1.28 % 1.28 % 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 15.3 ns 15.3 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 15.2 ns 15.2 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.387 ns 0.387 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 2.54 % 2.54 % 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 29.7 ns 29.7 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 29.0 ns 29.0 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 2.44 ns 2.44 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 8.22 % 8.22 % 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 18.3 ns 18.3 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 18.3 ns 18.3 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.336 ns 0.336 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 1.83 % 1.83 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 15.0 ns 15.0 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 15.0 ns 15.0 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.355 ns 0.355 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 2.36 % 2.36 % 10 ----- Convert to double '1234.567e10' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 65.7 ns 65.7 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 64.6 ns 64.6 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 2.02 ns 2.02 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 3.08 % 3.08 % 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 24.6 ns 24.6 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 24.4 ns 24.4 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 0.496 ns 0.496 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 2.02 % 2.02 % 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 64.7 ns 64.7 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 63.7 ns 63.7 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 2.43 ns 2.43 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 3.75 % 3.75 % 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 27.5 ns 27.5 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 26.0 ns 26.0 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 3.09 ns 3.09 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 11.25 % 11.25 % 10 ssa s = "1234.567e10"; double res = *s.to_double()_mean 26.1 ns 26.1 ns 10 ssa s = "1234.567e10"; double res = *s.to_double()_median 25.7 ns 25.7 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.780 ns 0.780 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_cv 2.99 % 2.99 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.987 ns 0.987 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 3.79 % 3.79 % 10 -- Append const literal of 16 bytes 64 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << "abbaabbaabbaabba";_mean 1354 ns 1354 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_median 1341 ns 1341 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 34.1 ns 34.1 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_cv 2.52 % 2.52 % 10 -std::string str; ... str += "abbaabbaabbaabba";_mean 372 ns 372 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_median 375 ns 375 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_stddev 16.4 ns 16.4 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_cv 4.42 % 4.42 % 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 361 ns 361 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_median 364 ns 364 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 14.5 ns 14.5 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 4.02 % 4.02 % 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 272 ns 272 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_median 267 ns 267 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 13.2 ns 13.2 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 4.83 % 4.83 % 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 228 ns 228 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_median 221 ns 221 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 16.3 ns 16.3 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 7.16 % 7.16 % 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 136 ns 136 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 135 ns 135 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 2.82 ns 2.82 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 2.07 % 2.07 % 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 1587 ns 1587 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 1593 ns 1593 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 94.3 ns 94.3 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 5.94 % 5.94 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 378 ns 378 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 371 ns 371 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 19.9 ns 19.9 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 5.26 % 5.26 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 402 ns 402 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 400 ns 400 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 23.5 ns 23.5 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 5.86 % 5.86 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 264 ns 264 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 262 ns 262 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 11.1 ns 11.1 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 4.22 % 4.22 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 257 ns 257 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 257 ns 257 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 15.2 ns 15.2 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 5.90 % 5.90 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 157 ns 157 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 154 ns 154 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 7.74 ns 7.74 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 4.93 % 4.93 % 10 -- Append string of 16 bytes and const literal of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 1363 ns 1363 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1349 ns 1349 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 40.2 ns 40.2 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 2.95 % 2.95 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1282 ns 1282 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1276 ns 1276 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 31.1 ns 31.1 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 2.43 % 2.43 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 445 ns 445 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 447 ns 447 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 15.1 ns 15.1 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.41 % 3.41 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 386 ns 386 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 380 ns 380 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 21.8 ns 21.8 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.66 % 5.66 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 323 ns 323 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 311 ns 311 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 23.3 ns 23.3 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 7.22 % 7.22 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 204 ns 204 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 202 ns 202 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 4.94 ns 4.94 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.42 % 2.42 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 1441 ns 1441 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1425 ns 1425 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 40.6 ns 40.6 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 2.81 % 2.81 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1266 ns 1266 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1233 ns 1233 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 98.9 ns 98.9 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 7.81 % 7.81 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 482 ns 482 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 470 ns 470 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 30.8 ns 30.8 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 6.38 % 6.38 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 366 ns 366 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 349 ns 349 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 38.6 ns 38.6 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 10.54 % 10.54 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 325 ns 325 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 320 ns 320 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 19.7 ns 19.7 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 6.05 % 6.05 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 235 ns 235 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 233 ns 233 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 3.61 ns 3.61 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.54 % 1.54 % 10 -- Append string of 16 bytes and const literal of 16 bytes 2048 times, 65536 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 76544 ns 76545 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 75664 ns 75664 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 2769 ns 2769 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 3.62 % 3.62 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 72458 ns 72459 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 72032 ns 72033 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2580 ns 2580 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.56 % 3.56 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 19689 ns 19689 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 19666 ns 19666 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 596 ns 596 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.03 % 3.03 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 15956 ns 15956 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 15932 ns 15933 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 321 ns 321 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.01 % 2.01 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 15837 ns 15837 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 15670 ns 15670 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 366 ns 366 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.31 % 2.31 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17811 ns 17812 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17760 ns 17760 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 344 ns 344 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.93 % 1.93 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 75359 ns 75359 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 75326 ns 75326 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 2344 ns 2344 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 3.11 % 3.11 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 75620 ns 75620 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 75688 ns 75688 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1479 ns 1479 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.96 % 1.96 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 18777 ns 18777 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 18725 ns 18725 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 512 ns 512 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.73 % 2.73 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 20186 ns 20186 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 20050 ns 20050 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2408 ns 2408 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 11.93 % 11.93 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16028 ns 16028 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 15991 ns 15991 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 363 ns 363 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.26 % 2.26 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 15798 ns 15798 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 15807 ns 15807 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 472 ns 472 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.99 % 2.99 % 10 -- Append 2 string of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var1 << str_var2;_mean 1397 ns 1397 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_median 1390 ns 1390 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_stddev 58.0 ns 58.0 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_cv 4.15 % 4.15 % 10 -std::string str; ... str += str_var1 + str_var2;_mean 1354 ns 1354 ns 10 -std::string str; ... str += str_var1 + str_var2;_median 1353 ns 1353 ns 10 -std::string str; ... str += str_var1 + str_var2;_stddev 19.0 ns 19.0 ns 10 -std::string str; ... str += str_var1 + str_var2;_cv 1.41 % 1.41 % 10 -lstringa<16> str; ... str += str_var1 + str_var2;_mean 524 ns 524 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_median 522 ns 522 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_stddev 37.6 ns 37.6 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_cv 7.18 % 7.18 % 10 -lstringa<128> str; ... str += str_var1 + str_var2;_mean 449 ns 449 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_median 445 ns 445 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_stddev 20.3 ns 20.3 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_cv 4.52 % 4.52 % 10 -lstringa<512> str; ... str += str_var1 + str_var2;_mean 385 ns 385 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_median 387 ns 387 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_stddev 15.8 ns 15.8 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_cv 4.11 % 4.11 % 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_mean 305 ns 305 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_median 303 ns 303 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 7.25 ns 7.25 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_cv 2.38 % 2.38 % 10 +std::stringstream str; ... str << str_var1 << str_var2;_mean 1439 ns 1439 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 1434 ns 1434 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 41.3 ns 41.3 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 2.87 % 2.87 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 1398 ns 1398 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 1402 ns 1402 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 49.6 ns 49.6 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 3.55 % 3.55 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 540 ns 540 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_median 525 ns 525 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_stddev 44.6 ns 44.6 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 8.26 % 8.26 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 465 ns 465 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 466 ns 466 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 14.6 ns 14.6 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 3.14 % 3.14 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 398 ns 398 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 397 ns 397 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 19.7 ns 19.7 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 4.94 % 4.94 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 323 ns 323 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 308 ns 308 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 34.8 ns 34.8 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 10.77 % 10.77 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; str << "test = " << k << " times";_mean 3102 ns 3102 ns 10 -std::stringstream str; str << "test = " << k << " times";_median 3021 ns 3021 ns 10 -std::stringstream str; str << "test = " << k << " times";_stddev 206 ns 206 ns 10 -std::stringstream str; str << "test = " << k << " times";_cv 6.65 % 6.65 % 10 -std::string str = "test = " + std::to_string(k) + " times";_mean 471 ns 471 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_median 468 ns 468 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_stddev 14.6 ns 14.6 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_cv 3.10 % 3.10 % 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1395 ns 1395 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1384 ns 1384 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 43.0 ns 43.0 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 3.08 % 3.08 % 10 -std::string str = std::format("test = {} times", k);_mean 1205 ns 1205 ns 10 +std::stringstream str; str << "test = " << k << " times";_mean 3053 ns 3053 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 3054 ns 3054 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 76.1 ns 76.1 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 2.49 % 2.49 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 479 ns 479 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 472 ns 472 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 21.1 ns 21.1 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 4.39 % 4.39 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1412 ns 1412 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1394 ns 1394 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 60.3 ns 60.3 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 4.27 % 4.27 % 10 +std::string str = std::format("test = {} times", k);_mean 1208 ns 1208 ns 10 std::string str = std::format("test = {} times", k);_median 1179 ns 1179 ns 10 -std::string str = std::format("test = {} times", k);_stddev 86.3 ns 86.3 ns 10 -std::string str = std::format("test = {} times", k);_cv 7.16 % 7.16 % 10 -lstringa<8> str; str.format("test = {} times", k);_mean 1377 ns 1377 ns 10 -lstringa<8> str; str.format("test = {} times", k);_median 1348 ns 1348 ns 10 -lstringa<8> str; str.format("test = {} times", k);_stddev 75.8 ns 75.8 ns 10 -lstringa<8> str; str.format("test = {} times", k);_cv 5.51 % 5.51 % 10 -lstringa<32> str; str.format("test = {} times", k);_mean 979 ns 979 ns 10 -lstringa<32> str; str.format("test = {} times", k);_median 969 ns 969 ns 10 -lstringa<32> str; str.format("test = {} times", k);_stddev 25.7 ns 25.7 ns 10 -lstringa<32> str; str.format("test = {} times", k);_cv 2.62 % 2.62 % 10 -lstringa<8> str = "test = " + k + " times";_mean 295 ns 295 ns 10 -lstringa<8> str = "test = " + k + " times";_median 292 ns 292 ns 10 -lstringa<8> str = "test = " + k + " times";_stddev 9.63 ns 9.63 ns 10 -lstringa<8> str = "test = " + k + " times";_cv 3.26 % 3.26 % 10 -lstringa<32> str = "test = " + k + " times";_mean 152 ns 152 ns 10 -lstringa<32> str = "test = " + k + " times";_median 152 ns 152 ns 10 -lstringa<32> str = "test = " + k + " times";_stddev 3.23 ns 3.23 ns 10 -lstringa<32> str = "test = " + k + " times";_cv 2.12 % 2.12 % 10 -stringa str = "test = " + k + " times";_mean 150 ns 150 ns 10 -stringa str = "test = " + k + " times";_median 149 ns 149 ns 10 -stringa str = "test = " + k + " times";_stddev 3.69 ns 3.69 ns 10 -stringa str = "test = " + k + " times";_cv 2.46 % 2.46 % 10 +std::string str = std::format("test = {} times", k);_stddev 67.9 ns 67.9 ns 10 +std::string str = std::format("test = {} times", k);_cv 5.62 % 5.62 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 1379 ns 1379 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 1399 ns 1399 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 53.1 ns 53.1 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 3.85 % 3.85 % 10 +lstringa<32> str; str.format("test = {} times", k);_mean 1079 ns 1079 ns 10 +lstringa<32> str; str.format("test = {} times", k);_median 1081 ns 1081 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 42.4 ns 42.4 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 3.93 % 3.93 % 10 +lstringa<8> str = "test = " + k + " times";_mean 313 ns 313 ns 10 +lstringa<8> str = "test = " + k + " times";_median 311 ns 311 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 34.1 ns 34.1 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 10.90 % 10.90 % 10 +lstringa<32> str = "test = " + k + " times";_mean 154 ns 154 ns 10 +lstringa<32> str = "test = " + k + " times";_median 155 ns 155 ns 10 +lstringa<32> str = "test = " + k + " times";_stddev 3.82 ns 3.82 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 2.48 % 2.48 % 10 +stringa str = "test = " + k + " times";_mean 145 ns 145 ns 10 +stringa str = "test = " + k + " times";_median 143 ns 143 ns 10 +stringa str = "test = " + k + " times";_stddev 4.31 ns 4.31 ns 10 +stringa str = "test = " + k + " times";_cv 2.97 % 2.97 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find + substr + std::strtol_mean 270 ns 270 ns 10 -std::string::find + substr + std::strtol_median 268 ns 268 ns 10 -std::string::find + substr + std::strtol_stddev 7.74 ns 7.74 ns 10 -std::string::find + substr + std::strtol_cv 2.86 % 2.86 % 10 -ssa::splitter + ssa::as_int_mean 154 ns 154 ns 10 -ssa::splitter + ssa::as_int_median 153 ns 153 ns 10 -ssa::splitter + ssa::as_int_stddev 4.53 ns 4.53 ns 10 -ssa::splitter + ssa::as_int_cv 2.94 % 2.94 % 10 -ssa::splitf + functor_mean 212 ns 212 ns 10 -ssa::splitf + functor_median 212 ns 212 ns 10 -ssa::splitf + functor_stddev 6.59 ns 6.59 ns 10 -ssa::splitf + functor_cv 3.11 % 3.11 % 10 +std::string::find + substr + std::strtol_mean 283 ns 283 ns 10 +std::string::find + substr + std::strtol_median 275 ns 275 ns 10 +std::string::find + substr + std::strtol_stddev 28.4 ns 28.4 ns 10 +std::string::find + substr + std::strtol_cv 10.03 % 10.03 % 10 +ssa::splitter + ssa::as_int_mean 159 ns 159 ns 10 +ssa::splitter + ssa::as_int_median 159 ns 159 ns 10 +ssa::splitter + ssa::as_int_stddev 6.77 ns 6.77 ns 10 +ssa::splitter + ssa::as_int_cv 4.26 % 4.26 % 10 +ssa::splitf + functor_mean 204 ns 204 ns 10 +ssa::splitf + functor_median 203 ns 203 ns 10 +ssa::splitf + functor_stddev 5.90 ns 5.90 ns 10 +ssa::splitf + functor_cv 2.89 % 2.89 % 10 -- Replace symbols in text ~400 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Naive (and wrong) replace symbols with std::string find + replace_mean 865 ns 865 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_median 867 ns 867 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_stddev 28.3 ns 28.3 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_cv 3.27 % 3.27 % 10 -replace symbols with std::string find_first_of + replace_mean 2400 ns 2400 ns 10 -replace symbols with std::string find_first_of + replace_median 2390 ns 2390 ns 10 -replace symbols with std::string find_first_of + replace_stddev 57.5 ns 57.5 ns 10 -replace symbols with std::string find_first_of + replace_cv 2.39 % 2.39 % 10 -replace symbols with std::string_view find_first_of + copy_mean 1100 ns 1100 ns 10 -replace symbols with std::string_view find_first_of + copy_median 1099 ns 1099 ns 10 -replace symbols with std::string_view find_first_of + copy_stddev 22.3 ns 22.3 ns 10 -replace symbols with std::string_view find_first_of + copy_cv 2.03 % 2.03 % 10 -replace runtime symbols with string expressions and without remembering all search results_mean 1290 ns 1290 ns 10 -replace runtime symbols with string expressions and without remembering all search results_median 1279 ns 1279 ns 10 -replace runtime symbols with string expressions and without remembering all search results_stddev 41.5 ns 41.5 ns 10 -replace runtime symbols with string expressions and without remembering all search results_cv 3.22 % 3.22 % 10 -replace runtime symbols with simstr and memorization of all search results_mean 1039 ns 1039 ns 10 -replace runtime symbols with simstr and memorization of all search results_median 1037 ns 1037 ns 10 -replace runtime symbols with simstr and memorization of all search results_stddev 18.2 ns 18.2 ns 10 -replace runtime symbols with simstr and memorization of all search results_cv 1.75 % 1.75 % 10 -replace const symbols with string expressions and without remembering all search results_mean 1034 ns 1034 ns 10 -replace const symbols with string expressions and without remembering all search results_median 1019 ns 1019 ns 10 -replace const symbols with string expressions and without remembering all search results_stddev 35.2 ns 35.2 ns 10 -replace const symbols with string expressions and without remembering all search results_cv 3.40 % 3.40 % 10 -replace const symbols with string expressions and memorization of all search results_mean 892 ns 892 ns 10 -replace const symbols with string expressions and memorization of all search results_median 878 ns 878 ns 10 -replace const symbols with string expressions and memorization of all search results_stddev 24.3 ns 24.3 ns 10 -replace const symbols with string expressions and memorization of all search results_cv 2.72 % 2.72 % 10 +Naive (and wrong) replace symbols with std::string find + replace_mean 848 ns 848 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 834 ns 834 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 41.8 ns 41.8 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 4.93 % 4.93 % 10 +replace symbols with std::string find_first_of + replace_mean 2432 ns 2432 ns 10 +replace symbols with std::string find_first_of + replace_median 2400 ns 2400 ns 10 +replace symbols with std::string find_first_of + replace_stddev 135 ns 135 ns 10 +replace symbols with std::string find_first_of + replace_cv 5.53 % 5.53 % 10 +replace symbols with std::string_view find_first_of + copy_mean 1070 ns 1070 ns 10 +replace symbols with std::string_view find_first_of + copy_median 1059 ns 1059 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 37.2 ns 37.2 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 3.47 % 3.47 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 1309 ns 1309 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 1313 ns 1313 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 35.5 ns 35.5 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 2.71 % 2.71 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 1066 ns 1066 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 1067 ns 1067 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 61.5 ns 61.5 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 5.77 % 5.77 % 10 +replace const symbols with string expressions and without remembering all search results_mean 1030 ns 1030 ns 10 +replace const symbols with string expressions and without remembering all search results_median 1005 ns 1005 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 57.4 ns 57.4 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 5.58 % 5.58 % 10 +replace const symbols with string expressions and memorization of all search results_mean 898 ns 898 ns 10 +replace const symbols with string expressions and memorization of all search results_median 892 ns 892 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 21.7 ns 21.7 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 2.42 % 2.42 % 10 -- Replace symbols in text ~40 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Short Naive (and wrong) replace symbols with std::string find + replace_mean 156 ns 156 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_median 157 ns 157 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_stddev 3.45 ns 3.45 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_cv 2.21 % 2.21 % 10 -Short replace symbols with std::string find_first_of + replace_mean 343 ns 343 ns 10 -Short replace symbols with std::string find_first_of + replace_median 348 ns 348 ns 10 -Short replace symbols with std::string find_first_of + replace_stddev 23.7 ns 23.7 ns 10 -Short replace symbols with std::string find_first_of + replace_cv 6.91 % 6.91 % 10 -Short replace symbols with std::string_view find_first_of + copy_mean 167 ns 167 ns 10 -Short replace symbols with std::string_view find_first_of + copy_median 165 ns 165 ns 10 -Short replace symbols with std::string_view find_first_of + copy_stddev 6.66 ns 6.66 ns 10 -Short replace symbols with std::string_view find_first_of + copy_cv 3.98 % 3.98 % 10 -Short replace runtime symbols with string expressions and without remembering all search results_mean 191 ns 191 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_median 189 ns 189 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_stddev 7.06 ns 7.06 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_cv 3.70 % 3.70 % 10 -Short replace runtime symbols with simstr and memorization of all search results_mean 185 ns 185 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_median 183 ns 183 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_stddev 5.32 ns 5.32 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_cv 2.88 % 2.88 % 10 -Short replace const symbols with string expressions and without remembering all search results_mean 132 ns 132 ns 10 -Short replace const symbols with string expressions and without remembering all search results_median 130 ns 130 ns 10 -Short replace const symbols with string expressions and without remembering all search results_stddev 4.94 ns 4.94 ns 10 -Short replace const symbols with string expressions and without remembering all search results_cv 3.73 % 3.73 % 10 -Short replace const symbols with string expressions and memorization of all search results_mean 149 ns 149 ns 10 -Short replace const symbols with string expressions and memorization of all search results_median 148 ns 148 ns 10 -Short replace const symbols with string expressions and memorization of all search results_stddev 3.65 ns 3.65 ns 10 -Short replace const symbols with string expressions and memorization of all search results_cv 2.46 % 2.46 % 10 +Short Naive (and wrong) replace symbols with std::string find + replace_mean 155 ns 155 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 154 ns 154 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 3.88 ns 3.88 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 2.50 % 2.50 % 10 +Short replace symbols with std::string find_first_of + replace_mean 337 ns 337 ns 10 +Short replace symbols with std::string find_first_of + replace_median 322 ns 322 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 36.8 ns 36.8 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 10.90 % 10.90 % 10 +Short replace symbols with std::string_view find_first_of + copy_mean 164 ns 164 ns 10 +Short replace symbols with std::string_view find_first_of + copy_median 164 ns 164 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 4.23 ns 4.23 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 2.59 % 2.59 % 10 +Short replace runtime symbols with string expressions and without remembering all search results_mean 193 ns 193 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_median 187 ns 187 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 15.2 ns 15.2 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 7.85 % 7.85 % 10 +Short replace runtime symbols with simstr and memorization of all search results_mean 205 ns 205 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_median 196 ns 196 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 21.5 ns 21.5 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 10.51 % 10.51 % 10 +Short replace const symbols with string expressions and without remembering all search results_mean 139 ns 139 ns 10 +Short replace const symbols with string expressions and without remembering all search results_median 139 ns 139 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 3.57 ns 3.57 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 2.57 % 2.57 % 10 +Short replace const symbols with string expressions and memorization of all search results_mean 144 ns 144 ns 10 +Short replace const symbols with string expressions and memorization of all search results_median 144 ns 144 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 5.29 ns 5.29 ns 10 +Short replace const symbols with string expressions and memorization of all search results_cv 3.66 % 3.66 % 10 ----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to ---- in std::string|64_mean 161 ns 161 ns 10 -replace bb to ---- in std::string|64_median 160 ns 160 ns 10 -replace bb to ---- in std::string|64_stddev 5.40 ns 5.40 ns 10 -replace bb to ---- in std::string|64_cv 3.36 % 3.36 % 10 -replace bb to ---- in std::string|256_mean 543 ns 543 ns 10 -replace bb to ---- in std::string|256_median 529 ns 529 ns 10 -replace bb to ---- in std::string|256_stddev 35.9 ns 35.9 ns 10 -replace bb to ---- in std::string|256_cv 6.61 % 6.61 % 10 -replace bb to ---- in std::string|512_mean 1041 ns 1041 ns 10 -replace bb to ---- in std::string|512_median 1042 ns 1042 ns 10 -replace bb to ---- in std::string|512_stddev 16.1 ns 16.1 ns 10 -replace bb to ---- in std::string|512_cv 1.55 % 1.55 % 10 -replace bb to ---- in std::string|1024_mean 2329 ns 2329 ns 10 -replace bb to ---- in std::string|1024_median 2239 ns 2239 ns 10 -replace bb to ---- in std::string|1024_stddev 205 ns 205 ns 10 -replace bb to ---- in std::string|1024_cv 8.81 % 8.81 % 10 -replace bb to ---- in std::string|2048_mean 5815 ns 5815 ns 10 -replace bb to ---- in std::string|2048_median 5657 ns 5657 ns 10 -replace bb to ---- in std::string|2048_stddev 338 ns 338 ns 10 -replace bb to ---- in std::string|2048_cv 5.82 % 5.82 % 10 -replace bb to ---- in lstringa<8>|64_mean 143 ns 143 ns 10 -replace bb to ---- in lstringa<8>|64_median 142 ns 142 ns 10 -replace bb to ---- in lstringa<8>|64_stddev 3.02 ns 3.02 ns 10 -replace bb to ---- in lstringa<8>|64_cv 2.12 % 2.12 % 10 -replace bb to ---- in lstringa<8>|256_mean 439 ns 439 ns 10 -replace bb to ---- in lstringa<8>|256_median 437 ns 437 ns 10 -replace bb to ---- in lstringa<8>|256_stddev 9.49 ns 9.49 ns 10 -replace bb to ---- in lstringa<8>|256_cv 2.16 % 2.16 % 10 -replace bb to ---- in lstringa<8>|512_mean 833 ns 833 ns 10 -replace bb to ---- in lstringa<8>|512_median 839 ns 839 ns 10 -replace bb to ---- in lstringa<8>|512_stddev 25.8 ns 25.8 ns 10 -replace bb to ---- in lstringa<8>|512_cv 3.10 % 3.10 % 10 -replace bb to ---- in lstringa<8>|1024_mean 1669 ns 1669 ns 10 -replace bb to ---- in lstringa<8>|1024_median 1646 ns 1646 ns 10 -replace bb to ---- in lstringa<8>|1024_stddev 54.6 ns 54.6 ns 10 -replace bb to ---- in lstringa<8>|1024_cv 3.27 % 3.27 % 10 -replace bb to ---- in lstringa<8>|2048_mean 3123 ns 3123 ns 10 -replace bb to ---- in lstringa<8>|2048_median 3111 ns 3111 ns 10 -replace bb to ---- in lstringa<8>|2048_stddev 54.4 ns 54.4 ns 10 -replace bb to ---- in lstringa<8>|2048_cv 1.74 % 1.74 % 10 -replace bb to ---- by init stringa|64_mean 98.9 ns 98.9 ns 10 -replace bb to ---- by init stringa|64_median 98.0 ns 98.0 ns 10 -replace bb to ---- by init stringa|64_stddev 3.52 ns 3.52 ns 10 -replace bb to ---- by init stringa|64_cv 3.56 % 3.56 % 10 -replace bb to ---- by init stringa|256_mean 300 ns 300 ns 10 -replace bb to ---- by init stringa|256_median 298 ns 298 ns 10 -replace bb to ---- by init stringa|256_stddev 6.55 ns 6.55 ns 10 -replace bb to ---- by init stringa|256_cv 2.18 % 2.18 % 10 -replace bb to ---- by init stringa|512_mean 706 ns 706 ns 10 -replace bb to ---- by init stringa|512_median 701 ns 701 ns 10 -replace bb to ---- by init stringa|512_stddev 17.5 ns 17.5 ns 10 -replace bb to ---- by init stringa|512_cv 2.47 % 2.47 % 10 -replace bb to ---- by init stringa|1024_mean 1511 ns 1512 ns 10 -replace bb to ---- by init stringa|1024_median 1510 ns 1510 ns 10 -replace bb to ---- by init stringa|1024_stddev 22.4 ns 22.4 ns 10 -replace bb to ---- by init stringa|1024_cv 1.48 % 1.48 % 10 -replace bb to ---- by init stringa|2048_mean 3078 ns 3078 ns 10 -replace bb to ---- by init stringa|2048_median 3038 ns 3038 ns 10 -replace bb to ---- by init stringa|2048_stddev 113 ns 113 ns 10 -replace bb to ---- by init stringa|2048_cv 3.68 % 3.68 % 10 +replace bb to ---- in std::string|64_mean 160 ns 160 ns 10 +replace bb to ---- in std::string|64_median 155 ns 155 ns 10 +replace bb to ---- in std::string|64_stddev 9.70 ns 9.70 ns 10 +replace bb to ---- in std::string|64_cv 6.08 % 6.08 % 10 +replace bb to ---- in std::string|256_mean 568 ns 568 ns 10 +replace bb to ---- in std::string|256_median 559 ns 559 ns 10 +replace bb to ---- in std::string|256_stddev 31.3 ns 31.3 ns 10 +replace bb to ---- in std::string|256_cv 5.51 % 5.51 % 10 +replace bb to ---- in std::string|512_mean 1177 ns 1177 ns 10 +replace bb to ---- in std::string|512_median 1137 ns 1137 ns 10 +replace bb to ---- in std::string|512_stddev 108 ns 108 ns 10 +replace bb to ---- in std::string|512_cv 9.19 % 9.19 % 10 +replace bb to ---- in std::string|1024_mean 2294 ns 2294 ns 10 +replace bb to ---- in std::string|1024_median 2265 ns 2265 ns 10 +replace bb to ---- in std::string|1024_stddev 125 ns 125 ns 10 +replace bb to ---- in std::string|1024_cv 5.45 % 5.45 % 10 +replace bb to ---- in std::string|2048_mean 5903 ns 5903 ns 10 +replace bb to ---- in std::string|2048_median 5701 ns 5701 ns 10 +replace bb to ---- in std::string|2048_stddev 509 ns 509 ns 10 +replace bb to ---- in std::string|2048_cv 8.62 % 8.62 % 10 +replace bb to ---- in lstringa<8>|64_mean 245 ns 245 ns 10 +replace bb to ---- in lstringa<8>|64_median 245 ns 245 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 5.86 ns 5.86 ns 10 +replace bb to ---- in lstringa<8>|64_cv 2.39 % 2.39 % 10 +replace bb to ---- in lstringa<8>|256_mean 777 ns 777 ns 10 +replace bb to ---- in lstringa<8>|256_median 779 ns 779 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 18.7 ns 18.7 ns 10 +replace bb to ---- in lstringa<8>|256_cv 2.41 % 2.41 % 10 +replace bb to ---- in lstringa<8>|512_mean 1500 ns 1500 ns 10 +replace bb to ---- in lstringa<8>|512_median 1488 ns 1488 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 58.7 ns 58.7 ns 10 +replace bb to ---- in lstringa<8>|512_cv 3.92 % 3.92 % 10 +replace bb to ---- in lstringa<8>|1024_mean 2907 ns 2907 ns 10 +replace bb to ---- in lstringa<8>|1024_median 2913 ns 2913 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 61.2 ns 61.2 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 2.11 % 2.11 % 10 +replace bb to ---- in lstringa<8>|2048_mean 5929 ns 5930 ns 10 +replace bb to ---- in lstringa<8>|2048_median 5754 ns 5754 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 544 ns 544 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 9.18 % 9.18 % 10 +replace bb to ---- by init stringa|64_mean 129 ns 129 ns 10 +replace bb to ---- by init stringa|64_median 128 ns 128 ns 10 +replace bb to ---- by init stringa|64_stddev 4.89 ns 4.89 ns 10 +replace bb to ---- by init stringa|64_cv 3.80 % 3.80 % 10 +replace bb to ---- by init stringa|256_mean 356 ns 356 ns 10 +replace bb to ---- by init stringa|256_median 354 ns 354 ns 10 +replace bb to ---- by init stringa|256_stddev 13.9 ns 13.9 ns 10 +replace bb to ---- by init stringa|256_cv 3.90 % 3.90 % 10 +replace bb to ---- by init stringa|512_mean 774 ns 774 ns 10 +replace bb to ---- by init stringa|512_median 767 ns 767 ns 10 +replace bb to ---- by init stringa|512_stddev 19.5 ns 19.5 ns 10 +replace bb to ---- by init stringa|512_cv 2.52 % 2.52 % 10 +replace bb to ---- by init stringa|1024_mean 1583 ns 1583 ns 10 +replace bb to ---- by init stringa|1024_median 1569 ns 1569 ns 10 +replace bb to ---- by init stringa|1024_stddev 59.1 ns 59.1 ns 10 +replace bb to ---- by init stringa|1024_cv 3.74 % 3.74 % 10 +replace bb to ---- by init stringa|2048_mean 3395 ns 3395 ns 10 +replace bb to ---- by init stringa|2048_median 3386 ns 3386 ns 10 +replace bb to ---- by init stringa|2048_stddev 258 ns 258 ns 10 +replace bb to ---- by init stringa|2048_cv 7.59 % 7.59 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to -- in std::string|64_mean 121 ns 121 ns 10 +replace bb to -- in std::string|64_mean 119 ns 119 ns 10 replace bb to -- in std::string|64_median 119 ns 119 ns 10 -replace bb to -- in std::string|64_stddev 4.36 ns 4.36 ns 10 -replace bb to -- in std::string|64_cv 3.62 % 3.62 % 10 -replace bb to -- in std::string|256_mean 411 ns 411 ns 10 -replace bb to -- in std::string|256_median 411 ns 411 ns 10 -replace bb to -- in std::string|256_stddev 23.4 ns 23.4 ns 10 -replace bb to -- in std::string|256_cv 5.69 % 5.69 % 10 -replace bb to -- in std::string|512_mean 759 ns 759 ns 10 -replace bb to -- in std::string|512_median 760 ns 760 ns 10 -replace bb to -- in std::string|512_stddev 19.8 ns 19.8 ns 10 -replace bb to -- in std::string|512_cv 2.60 % 2.60 % 10 -replace bb to -- in std::string|1024_mean 1460 ns 1460 ns 10 -replace bb to -- in std::string|1024_median 1449 ns 1449 ns 10 -replace bb to -- in std::string|1024_stddev 54.1 ns 54.1 ns 10 -replace bb to -- in std::string|1024_cv 3.70 % 3.70 % 10 -replace bb to -- in std::string|2048_mean 3052 ns 3052 ns 10 -replace bb to -- in std::string|2048_median 3033 ns 3033 ns 10 -replace bb to -- in std::string|2048_stddev 74.6 ns 74.6 ns 10 -replace bb to -- in std::string|2048_cv 2.44 % 2.44 % 10 -replace bb to -- in lstringa<8>|64_mean 99.0 ns 99.0 ns 10 -replace bb to -- in lstringa<8>|64_median 98.1 ns 98.1 ns 10 -replace bb to -- in lstringa<8>|64_stddev 2.91 ns 2.91 ns 10 -replace bb to -- in lstringa<8>|64_cv 2.94 % 2.94 % 10 -replace bb to -- in lstringa<8>|256_mean 300 ns 300 ns 10 -replace bb to -- in lstringa<8>|256_median 299 ns 299 ns 10 -replace bb to -- in lstringa<8>|256_stddev 13.2 ns 13.2 ns 10 -replace bb to -- in lstringa<8>|256_cv 4.39 % 4.39 % 10 -replace bb to -- in lstringa<8>|512_mean 552 ns 552 ns 10 -replace bb to -- in lstringa<8>|512_median 551 ns 551 ns 10 -replace bb to -- in lstringa<8>|512_stddev 12.0 ns 12.0 ns 10 -replace bb to -- in lstringa<8>|512_cv 2.17 % 2.17 % 10 -replace bb to -- in lstringa<8>|1024_mean 1147 ns 1147 ns 10 -replace bb to -- in lstringa<8>|1024_median 1154 ns 1154 ns 10 -replace bb to -- in lstringa<8>|1024_stddev 30.5 ns 30.5 ns 10 -replace bb to -- in lstringa<8>|1024_cv 2.66 % 2.66 % 10 -replace bb to -- in lstringa<8>|2048_mean 2183 ns 2183 ns 10 -replace bb to -- in lstringa<8>|2048_median 2167 ns 2167 ns 10 -replace bb to -- in lstringa<8>|2048_stddev 65.9 ns 65.9 ns 10 -replace bb to -- in lstringa<8>|2048_cv 3.02 % 3.02 % 10 -replace bb to -- by init stringa|64_mean 82.4 ns 82.4 ns 10 -replace bb to -- by init stringa|64_median 81.8 ns 81.8 ns 10 -replace bb to -- by init stringa|64_stddev 2.20 ns 2.20 ns 10 -replace bb to -- by init stringa|64_cv 2.67 % 2.67 % 10 -replace bb to -- by init stringa|256_mean 244 ns 244 ns 10 -replace bb to -- by init stringa|256_median 240 ns 240 ns 10 -replace bb to -- by init stringa|256_stddev 11.1 ns 11.1 ns 10 -replace bb to -- by init stringa|256_cv 4.53 % 4.53 % 10 -replace bb to -- by init stringa|512_mean 444 ns 444 ns 10 -replace bb to -- by init stringa|512_median 444 ns 444 ns 10 -replace bb to -- by init stringa|512_stddev 18.2 ns 18.2 ns 10 -replace bb to -- by init stringa|512_cv 4.11 % 4.11 % 10 -replace bb to -- by init stringa|1024_mean 886 ns 886 ns 10 -replace bb to -- by init stringa|1024_median 868 ns 868 ns 10 -replace bb to -- by init stringa|1024_stddev 32.1 ns 32.1 ns 10 -replace bb to -- by init stringa|1024_cv 3.62 % 3.62 % 10 -replace bb to -- by init stringa|2048_mean 1707 ns 1707 ns 10 -replace bb to -- by init stringa|2048_median 1696 ns 1696 ns 10 -replace bb to -- by init stringa|2048_stddev 55.5 ns 55.5 ns 10 -replace bb to -- by init stringa|2048_cv 3.25 % 3.25 % 10 +replace bb to -- in std::string|64_stddev 3.85 ns 3.85 ns 10 +replace bb to -- in std::string|64_cv 3.24 % 3.24 % 10 +replace bb to -- in std::string|256_mean 451 ns 451 ns 10 +replace bb to -- in std::string|256_median 439 ns 439 ns 10 +replace bb to -- in std::string|256_stddev 55.9 ns 55.9 ns 10 +replace bb to -- in std::string|256_cv 12.40 % 12.40 % 10 +replace bb to -- in std::string|512_mean 782 ns 782 ns 10 +replace bb to -- in std::string|512_median 776 ns 776 ns 10 +replace bb to -- in std::string|512_stddev 22.5 ns 22.5 ns 10 +replace bb to -- in std::string|512_cv 2.88 % 2.88 % 10 +replace bb to -- in std::string|1024_mean 1492 ns 1492 ns 10 +replace bb to -- in std::string|1024_median 1468 ns 1468 ns 10 +replace bb to -- in std::string|1024_stddev 71.8 ns 71.8 ns 10 +replace bb to -- in std::string|1024_cv 4.81 % 4.81 % 10 +replace bb to -- in std::string|2048_mean 3010 ns 3010 ns 10 +replace bb to -- in std::string|2048_median 2960 ns 2960 ns 10 +replace bb to -- in std::string|2048_stddev 131 ns 131 ns 10 +replace bb to -- in std::string|2048_cv 4.35 % 4.35 % 10 +replace bb to -- in lstringa<8>|64_mean 209 ns 209 ns 10 +replace bb to -- in lstringa<8>|64_median 210 ns 210 ns 10 +replace bb to -- in lstringa<8>|64_stddev 7.59 ns 7.59 ns 10 +replace bb to -- in lstringa<8>|64_cv 3.62 % 3.62 % 10 +replace bb to -- in lstringa<8>|256_mean 855 ns 855 ns 10 +replace bb to -- in lstringa<8>|256_median 847 ns 847 ns 10 +replace bb to -- in lstringa<8>|256_stddev 27.5 ns 27.5 ns 10 +replace bb to -- in lstringa<8>|256_cv 3.22 % 3.22 % 10 +replace bb to -- in lstringa<8>|512_mean 1828 ns 1828 ns 10 +replace bb to -- in lstringa<8>|512_median 1820 ns 1820 ns 10 +replace bb to -- in lstringa<8>|512_stddev 41.2 ns 41.2 ns 10 +replace bb to -- in lstringa<8>|512_cv 2.25 % 2.25 % 10 +replace bb to -- in lstringa<8>|1024_mean 3661 ns 3661 ns 10 +replace bb to -- in lstringa<8>|1024_median 3653 ns 3653 ns 10 +replace bb to -- in lstringa<8>|1024_stddev 55.7 ns 55.7 ns 10 +replace bb to -- in lstringa<8>|1024_cv 1.52 % 1.52 % 10 +replace bb to -- in lstringa<8>|2048_mean 7670 ns 7670 ns 10 +replace bb to -- in lstringa<8>|2048_median 7481 ns 7481 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 531 ns 531 ns 10 +replace bb to -- in lstringa<8>|2048_cv 6.92 % 6.92 % 10 +replace bb to -- by init stringa|64_mean 83.8 ns 83.8 ns 10 +replace bb to -- by init stringa|64_median 80.2 ns 80.2 ns 10 +replace bb to -- by init stringa|64_stddev 7.49 ns 7.49 ns 10 +replace bb to -- by init stringa|64_cv 8.94 % 8.94 % 10 +replace bb to -- by init stringa|256_mean 236 ns 236 ns 10 +replace bb to -- by init stringa|256_median 234 ns 234 ns 10 +replace bb to -- by init stringa|256_stddev 5.30 ns 5.30 ns 10 +replace bb to -- by init stringa|256_cv 2.24 % 2.24 % 10 +replace bb to -- by init stringa|512_mean 485 ns 485 ns 10 +replace bb to -- by init stringa|512_median 479 ns 479 ns 10 +replace bb to -- by init stringa|512_stddev 55.3 ns 55.3 ns 10 +replace bb to -- by init stringa|512_cv 11.40 % 11.40 % 10 +replace bb to -- by init stringa|1024_mean 883 ns 883 ns 10 +replace bb to -- by init stringa|1024_median 879 ns 879 ns 10 +replace bb to -- by init stringa|1024_stddev 28.6 ns 28.6 ns 10 +replace bb to -- by init stringa|1024_cv 3.25 % 3.24 % 10 +replace bb to -- by init stringa|2048_mean 1717 ns 1717 ns 10 +replace bb to -- by init stringa|2048_median 1739 ns 1739 ns 10 +replace bb to -- by init stringa|2048_stddev 63.3 ns 63.3 ns 10 +replace bb to -- by init stringa|2048_cv 3.69 % 3.69 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -hashStrMapA emplace & find stringa;_mean 3625242 ns 3625255 ns 10 -hashStrMapA emplace & find stringa;_median 3613086 ns 3613099 ns 10 -hashStrMapA emplace & find stringa;_stddev 56566 ns 56566 ns 10 -hashStrMapA emplace & find stringa;_cv 1.56 % 1.56 % 10 -std::unordered_map emplace & find std::string;_mean 3517784 ns 3517795 ns 10 -std::unordered_map emplace & find std::string;_median 3487503 ns 3487513 ns 10 -std::unordered_map emplace & find std::string;_stddev 77853 ns 77854 ns 10 -std::unordered_map emplace & find std::string;_cv 2.21 % 2.21 % 10 -hashStrMapA emplace & find ssa;_mean 3618716 ns 3618730 ns 10 -hashStrMapA emplace & find ssa;_median 3594424 ns 3594438 ns 10 -hashStrMapA emplace & find ssa;_stddev 62317 ns 62318 ns 10 -hashStrMapA emplace & find ssa;_cv 1.72 % 1.72 % 10 -std::unordered_map emplace & find std::string_view;_mean 4166457 ns 4166472 ns 10 -std::unordered_map emplace & find std::string_view;_median 4166618 ns 4166634 ns 10 -std::unordered_map emplace & find std::string_view;_stddev 80853 ns 80854 ns 10 -std::unordered_map emplace & find std::string_view;_cv 1.94 % 1.94 % 10 +hashStrMapA emplace & find stringa;_mean 3595592 ns 3595607 ns 10 +hashStrMapA emplace & find stringa;_median 3572533 ns 3572549 ns 10 +hashStrMapA emplace & find stringa;_stddev 57151 ns 57153 ns 10 +hashStrMapA emplace & find stringa;_cv 1.59 % 1.59 % 10 +std::unordered_map emplace & find std::string;_mean 3599286 ns 3599290 ns 10 +std::unordered_map emplace & find std::string;_median 3580740 ns 3580719 ns 10 +std::unordered_map emplace & find std::string;_stddev 155107 ns 155106 ns 10 +std::unordered_map emplace & find std::string;_cv 4.31 % 4.31 % 10 +hashStrMapA emplace & find ssa;_mean 3741065 ns 3741070 ns 10 +hashStrMapA emplace & find ssa;_median 3672854 ns 3672865 ns 10 +hashStrMapA emplace & find ssa;_stddev 202922 ns 202917 ns 10 +hashStrMapA emplace & find ssa;_cv 5.42 % 5.42 % 10 +std::unordered_map emplace & find std::string_view;_mean 4188176 ns 4188182 ns 10 +std::unordered_map emplace & find std::string_view;_median 4154276 ns 4154293 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 229445 ns 229453 ns 10 +std::unordered_map emplace & find std::string_view;_cv 5.48 % 5.48 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Build func full name std::string;_mean 708 ns 708 ns 10 -Build func full name std::string;_median 710 ns 710 ns 10 -Build func full name std::string;_stddev 23.6 ns 23.6 ns 10 -Build func full name std::string;_cv 3.33 % 3.33 % 10 -Build func full name std::string 1;_mean 846 ns 846 ns 10 -Build func full name std::string 1;_median 834 ns 834 ns 10 -Build func full name std::string 1;_stddev 26.7 ns 26.7 ns 10 -Build func full name std::string 1;_cv 3.15 % 3.15 % 10 -Build func full name std::stream;_mean 2571 ns 2571 ns 10 -Build func full name std::stream;_median 2542 ns 2542 ns 10 -Build func full name std::stream;_stddev 73.7 ns 73.7 ns 10 -Build func full name std::stream;_cv 2.87 % 2.87 % 10 -Build func full name stringa;_mean 508 ns 508 ns 10 -Build func full name stringa;_median 504 ns 504 ns 10 -Build func full name stringa;_stddev 22.6 ns 22.6 ns 10 -Build func full name stringa;_cv 4.45 % 4.45 % 10 -Build func full name stringa 1;_mean 648 ns 648 ns 10 -Build func full name stringa 1;_median 642 ns 642 ns 10 -Build func full name stringa 1;_stddev 15.7 ns 15.7 ns 10 -Build func full name stringa 1;_cv 2.43 % 2.43 % 10 +Build func full name std::string;_mean 709 ns 709 ns 10 +Build func full name std::string;_median 696 ns 696 ns 10 +Build func full name std::string;_stddev 42.5 ns 42.5 ns 10 +Build func full name std::string;_cv 5.99 % 5.99 % 10 +Build func full name std::string 1;_mean 829 ns 829 ns 10 +Build func full name std::string 1;_median 813 ns 813 ns 10 +Build func full name std::string 1;_stddev 38.0 ns 38.0 ns 10 +Build func full name std::string 1;_cv 4.59 % 4.59 % 10 +Build func full name std::stream;_mean 2552 ns 2552 ns 10 +Build func full name std::stream;_median 2527 ns 2527 ns 10 +Build func full name std::stream;_stddev 73.8 ns 73.8 ns 10 +Build func full name std::stream;_cv 2.89 % 2.89 % 10 +Build func full name stringa;_mean 503 ns 503 ns 10 +Build func full name stringa;_median 505 ns 505 ns 10 +Build func full name stringa;_stddev 17.5 ns 17.5 ns 10 +Build func full name stringa;_cv 3.47 % 3.47 % 10 +Build func full name stringa 1;_mean 670 ns 670 ns 10 +Build func full name stringa 1;_median 655 ns 655 ns 10 +Build func full name stringa 1;_stddev 37.3 ns 37.3 ns 10 +Build func full name stringa 1;_cv 5.57 % 5.57 % 10 diff --git a/bench/results/001-Xeon E5-2682 v4, Ubuntu 22 (WSL), GCC-13.txt b/bench/results/001-Xeon E5-2682 v4, Ubuntu 22 (WSL), GCC-13.txt index a769187..5b0e733 100644 --- a/bench/results/001-Xeon E5-2682 v4, Ubuntu 22 (WSL), GCC-13.txt +++ b/bench/results/001-Xeon E5-2682 v4, Ubuntu 22 (WSL), GCC-13.txt @@ -1,4 +1,4 @@ -2026-01-21T07:11:34+03:00 +2026-01-29T20:00:21+03:00 Running ./benchStr Run on (32 X 2494.22 MHz CPU s) CPU Caches: @@ -12,867 +12,879 @@ Load Average: 0.00, 0.00, 0.00 Benchmark Time CPU Iterations -------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and number by std to std::string_mean 207 ns 207 ns 10 -Concat std::string and number by std to std::string_median 205 ns 205 ns 10 -Concat std::string and number by std to std::string_stddev 7.79 ns 7.79 ns 10 -Concat std::string and number by std to std::string_cv 3.77 % 3.77 % 10 -Concat std::string and number by StrExpr to std::string_mean 102 ns 102 ns 10 -Concat std::string and number by StrExpr to std::string_median 101 ns 101 ns 10 -Concat std::string and number by StrExpr to std::string_stddev 2.95 ns 2.95 ns 10 -Concat std::string and number by StrExpr to std::string_cv 2.90 % 2.90 % 10 -Concat stringa and number by StrExpr to simstr::stringa_mean 70.4 ns 70.4 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_median 69.3 ns 69.3 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_stddev 3.12 ns 3.12 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_cv 4.43 % 4.43 % 10 +Concat std::string and number by std to std::string_mean 209 ns 209 ns 10 +Concat std::string and number by std to std::string_median 209 ns 209 ns 10 +Concat std::string and number by std to std::string_stddev 5.32 ns 5.32 ns 10 +Concat std::string and number by std to std::string_cv 2.54 % 2.54 % 10 +Concat std::string and number by StrExpr to std::string_mean 104 ns 104 ns 10 +Concat std::string and number by StrExpr to std::string_median 103 ns 103 ns 10 +Concat std::string and number by StrExpr to std::string_stddev 4.35 ns 4.35 ns 10 +Concat std::string and number by StrExpr to std::string_cv 4.18 % 4.18 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 81.5 ns 81.5 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_median 74.4 ns 74.4 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_stddev 14.0 ns 14.0 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 17.20 % 17.20 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 80.2 ns 80.2 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 78.0 ns 78.0 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 6.12 ns 6.12 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 7.63 % 7.63 % 10 ----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and hex number by std to std::string_mean 668 ns 668 ns 10 -Concat std::string and hex number by std to std::string_median 665 ns 665 ns 10 -Concat std::string and hex number by std to std::string_stddev 21.8 ns 21.8 ns 10 -Concat std::string and hex number by std to std::string_cv 3.27 % 3.27 % 10 -Concat std::string and hex number by StrExpr to std::string_mean 65.9 ns 65.9 ns 10 -Concat std::string and hex number by StrExpr to std::string_median 65.3 ns 65.3 ns 10 +Concat std::string and hex number by std to std::string_mean 935 ns 935 ns 10 +Concat std::string and hex number by std to std::string_median 939 ns 939 ns 10 +Concat std::string and hex number by std to std::string_stddev 24.7 ns 24.7 ns 10 +Concat std::string and hex number by std to std::string_cv 2.65 % 2.65 % 10 +Concat std::string and hex number by StrExpr to std::string_mean 69.6 ns 69.6 ns 10 +Concat std::string and hex number by StrExpr to std::string_median 69.1 ns 69.1 ns 10 Concat std::string and hex number by StrExpr to std::string_stddev 2.24 ns 2.24 ns 10 -Concat std::string and hex number by StrExpr to std::string_cv 3.39 % 3.39 % 10 -Concat stringa and hex number by StrExpr to simstr::stringa_mean 68.2 ns 68.2 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_median 67.9 ns 67.9 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_stddev 1.59 ns 1.59 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_cv 2.33 % 2.33 % 10 +Concat std::string and hex number by StrExpr to std::string_cv 3.22 % 3.22 % 10 +Concat stringa and hex number by StrExpr to simstr::stringa_mean 70.4 ns 70.4 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_median 70.5 ns 70.5 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_stddev 2.74 ns 2.74 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_cv 3.90 % 3.90 % 10 +Concat stringa and hex number by e_concat to simstr::stringa_mean 78.9 ns 78.9 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_median 78.4 ns 78.4 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_stddev 2.99 ns 2.99 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_cv 3.78 % 3.78 % 10 +Concat stringa and hex number by e_subst to simstr::stringa_mean 157 ns 157 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_median 148 ns 148 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_stddev 19.8 ns 19.8 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_cv 12.66 % 12.66 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string by std to std::string_mean 44.7 ns 44.7 ns 10 -Concat std::string by std to std::string_median 43.5 ns 43.5 ns 10 -Concat std::string by std to std::string_stddev 2.51 ns 2.51 ns 10 -Concat std::string by std to std::string_cv 5.61 % 5.61 % 10 -Concat std::string by StrExpr to std::string_mean 35.9 ns 35.9 ns 10 -Concat std::string by StrExpr to std::string_median 35.8 ns 35.8 ns 10 -Concat std::string by StrExpr to std::string_stddev 1.12 ns 1.12 ns 10 -Concat std::string by StrExpr to std::string_cv 3.12 % 3.12 % 10 -Concat stringa by StrExpr to stringa_mean 25.9 ns 25.9 ns 10 -Concat stringa by StrExpr to stringa_median 25.7 ns 25.7 ns 10 -Concat stringa by StrExpr to stringa_stddev 0.700 ns 0.700 ns 10 -Concat stringa by StrExpr to stringa_cv 2.71 % 2.71 % 10 +Concat std::string by std to std::string_mean 45.5 ns 45.5 ns 10 +Concat std::string by std to std::string_median 45.4 ns 45.4 ns 10 +Concat std::string by std to std::string_stddev 2.31 ns 2.30 ns 10 +Concat std::string by std to std::string_cv 5.07 % 5.07 % 10 +Concat std::string by StrExpr to std::string_mean 36.8 ns 36.8 ns 10 +Concat std::string by StrExpr to std::string_median 36.3 ns 36.3 ns 10 +Concat std::string by StrExpr to std::string_stddev 2.47 ns 2.47 ns 10 +Concat std::string by StrExpr to std::string_cv 6.72 % 6.72 % 10 +Concat stringa by StrExpr to stringa_mean 27.2 ns 27.2 ns 10 +Concat stringa by StrExpr to stringa_median 27.2 ns 27.2 ns 10 +Concat stringa by StrExpr to stringa_stddev 0.735 ns 0.735 ns 10 +Concat stringa by StrExpr to stringa_cv 2.70 % 2.70 % 10 ----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Find concat three std::string_mean 130 ns 130 ns 10 -Find concat three std::string_median 128 ns 128 ns 10 -Find concat three std::string_stddev 4.71 ns 4.71 ns 10 -Find concat three std::string_cv 3.62 % 3.62 % 10 -Find concat three strexpr_mean 39.8 ns 39.8 ns 10 -Find concat three strexpr_median 39.1 ns 39.1 ns 10 -Find concat three strexpr_stddev 2.02 ns 2.02 ns 10 -Find concat three strexpr_cv 5.08 % 5.08 % 10 -Find concat three simstr_mean 20.2 ns 20.2 ns 10 -Find concat three simstr_median 20.2 ns 20.2 ns 10 -Find concat three simstr_stddev 0.739 ns 0.739 ns 10 -Find concat three simstr_cv 3.66 % 3.66 % 10 +Find concat three std::string_mean 135 ns 135 ns 10 +Find concat three std::string_median 131 ns 131 ns 10 +Find concat three std::string_stddev 10.3 ns 10.3 ns 10 +Find concat three std::string_cv 7.63 % 7.63 % 10 +Find concat three strexpr_mean 44.3 ns 44.3 ns 10 +Find concat three strexpr_median 41.9 ns 41.9 ns 10 +Find concat three strexpr_stddev 5.46 ns 5.46 ns 10 +Find concat three strexpr_cv 12.33 % 12.33 % 10 +Find concat three simstr_mean 53.4 ns 53.4 ns 10 +Find concat three simstr_median 52.9 ns 52.9 ns 10 +Find concat three simstr_stddev 0.832 ns 0.832 ns 10 +Find concat three simstr_cv 1.56 % 1.56 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -BuildTypeNameStr 0/0_mean 10.7 ns 10.7 ns 10 -BuildTypeNameStr 0/0_median 10.6 ns 10.6 ns 10 -BuildTypeNameStr 0/0_stddev 0.506 ns 0.506 ns 10 -BuildTypeNameStr 0/0_cv 4.74 % 4.74 % 10 -BuildTypeNameExp 0/0_mean 6.63 ns 6.63 ns 10 -BuildTypeNameExp 0/0_median 6.61 ns 6.61 ns 10 -BuildTypeNameExp 0/0_stddev 0.061 ns 0.061 ns 10 -BuildTypeNameExp 0/0_cv 0.92 % 0.92 % 10 -BuildTypeNameSim 0/0_mean 5.23 ns 5.23 ns 10 -BuildTypeNameSim 0/0_median 5.16 ns 5.16 ns 10 -BuildTypeNameSim 0/0_stddev 0.156 ns 0.156 ns 10 -BuildTypeNameSim 0/0_cv 2.98 % 2.98 % 10 -BuildTypeNameStr 10/10_mean 91.9 ns 91.9 ns 10 -BuildTypeNameStr 10/10_median 91.8 ns 91.8 ns 10 -BuildTypeNameStr 10/10_stddev 7.70 ns 7.70 ns 10 -BuildTypeNameStr 10/10_cv 8.38 % 8.38 % 10 -BuildTypeNameExp 10/10_mean 25.3 ns 25.3 ns 10 +BuildTypeNameStr 0/0_mean 10.1 ns 10.1 ns 10 +BuildTypeNameStr 0/0_median 10.1 ns 10.1 ns 10 +BuildTypeNameStr 0/0_stddev 0.296 ns 0.296 ns 10 +BuildTypeNameStr 0/0_cv 2.93 % 2.93 % 10 +BuildTypeNameExp 0/0_mean 7.22 ns 7.22 ns 10 +BuildTypeNameExp 0/0_median 7.20 ns 7.20 ns 10 +BuildTypeNameExp 0/0_stddev 0.085 ns 0.085 ns 10 +BuildTypeNameExp 0/0_cv 1.18 % 1.18 % 10 +BuildTypeNameSim 0/0_mean 5.45 ns 5.45 ns 10 +BuildTypeNameSim 0/0_median 5.42 ns 5.42 ns 10 +BuildTypeNameSim 0/0_stddev 0.684 ns 0.684 ns 10 +BuildTypeNameSim 0/0_cv 12.55 % 12.55 % 10 +BuildTypeNameStr 10/10_mean 86.4 ns 86.4 ns 10 +BuildTypeNameStr 10/10_median 86.5 ns 86.5 ns 10 +BuildTypeNameStr 10/10_stddev 3.23 ns 3.23 ns 10 +BuildTypeNameStr 10/10_cv 3.73 % 3.73 % 10 +BuildTypeNameExp 10/10_mean 24.9 ns 24.9 ns 10 BuildTypeNameExp 10/10_median 24.6 ns 24.6 ns 10 -BuildTypeNameExp 10/10_stddev 1.31 ns 1.31 ns 10 -BuildTypeNameExp 10/10_cv 5.17 % 5.17 % 10 -BuildTypeNameSim 10/10_mean 22.7 ns 22.7 ns 10 -BuildTypeNameSim 10/10_median 22.5 ns 22.5 ns 10 -BuildTypeNameSim 10/10_stddev 0.865 ns 0.865 ns 10 -BuildTypeNameSim 10/10_cv 3.81 % 3.81 % 10 +BuildTypeNameExp 10/10_stddev 0.624 ns 0.624 ns 10 +BuildTypeNameExp 10/10_cv 2.51 % 2.51 % 10 +BuildTypeNameSim 10/10_mean 22.2 ns 22.2 ns 10 +BuildTypeNameSim 10/10_median 22.2 ns 22.2 ns 10 +BuildTypeNameSim 10/10_stddev 0.518 ns 0.518 ns 10 +BuildTypeNameSim 10/10_cv 2.33 % 2.33 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat with replace str_mean 242 ns 242 ns 10 -Concat with replace str_median 240 ns 240 ns 10 -Concat with replace str_stddev 10.6 ns 10.6 ns 10 -Concat with replace str_cv 4.39 % 4.39 % 10 -Concat with replace exp_mean 135 ns 135 ns 10 -Concat with replace exp_median 132 ns 132 ns 10 -Concat with replace exp_stddev 8.05 ns 8.05 ns 10 -Concat with replace exp_cv 5.95 % 5.95 % 10 +Concat with replace str_mean 231 ns 231 ns 10 +Concat with replace str_median 230 ns 230 ns 10 +Concat with replace str_stddev 9.78 ns 9.78 ns 10 +Concat with replace str_cv 4.23 % 4.23 % 10 +Concat with replace exp_mean 139 ns 139 ns 10 +Concat with replace exp_median 132 ns 132 ns 10 +Concat with replace exp_stddev 17.4 ns 17.4 ns 10 +Concat with replace exp_cv 12.55 % 12.55 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e;_mean 1.12 ns 1.12 ns 10 -std::string e;_median 1.12 ns 1.12 ns 10 -std::string e;_stddev 0.032 ns 0.032 ns 10 -std::string e;_cv 2.87 % 2.87 % 10 -std::string_view e;_mean 0.737 ns 0.737 ns 10 -std::string_view e;_median 0.735 ns 0.735 ns 10 -std::string_view e;_stddev 0.012 ns 0.012 ns 10 -std::string_view e;_cv 1.59 % 1.59 % 10 -ssa e;_mean 0.182 ns 0.182 ns 10 -ssa e;_median 0.182 ns 0.182 ns 10 -ssa e;_stddev 0.002 ns 0.002 ns 10 -ssa e;_cv 1.19 % 1.19 % 10 -stringa e;_mean 0.751 ns 0.751 ns 10 -stringa e;_median 0.735 ns 0.735 ns 10 -stringa e;_stddev 0.030 ns 0.030 ns 10 -stringa e;_cv 3.95 % 3.95 % 10 -lstringa<20> e;_mean 1.12 ns 1.12 ns 10 -lstringa<20> e;_median 1.12 ns 1.12 ns 10 -lstringa<20> e;_stddev 0.023 ns 0.023 ns 10 -lstringa<20> e;_cv 2.10 % 2.10 % 10 -lstringa<40> e;_mean 1.11 ns 1.11 ns 10 -lstringa<40> e;_median 1.10 ns 1.10 ns 10 -lstringa<40> e;_stddev 0.011 ns 0.011 ns 10 -lstringa<40> e;_cv 1.01 % 1.01 % 10 +std::string e;_mean 1.15 ns 1.15 ns 10 +std::string e;_median 1.14 ns 1.14 ns 10 +std::string e;_stddev 0.052 ns 0.052 ns 10 +std::string e;_cv 4.56 % 4.56 % 10 +std::string_view e;_mean 0.772 ns 0.772 ns 10 +std::string_view e;_median 0.764 ns 0.764 ns 10 +std::string_view e;_stddev 0.034 ns 0.034 ns 10 +std::string_view e;_cv 4.41 % 4.41 % 10 +ssa e;_mean 0.190 ns 0.190 ns 10 +ssa e;_median 0.188 ns 0.188 ns 10 +ssa e;_stddev 0.009 ns 0.009 ns 10 +ssa e;_cv 4.74 % 4.74 % 10 +stringa e;_mean 0.750 ns 0.750 ns 10 +stringa e;_median 0.754 ns 0.754 ns 10 +stringa e;_stddev 0.020 ns 0.020 ns 10 +stringa e;_cv 2.60 % 2.60 % 10 +lstringa<20> e;_mean 1.11 ns 1.11 ns 10 +lstringa<20> e;_median 1.11 ns 1.11 ns 10 +lstringa<20> e;_stddev 0.019 ns 0.019 ns 10 +lstringa<20> e;_cv 1.67 % 1.67 % 10 +lstringa<40> e;_mean 1.12 ns 1.12 ns 10 +lstringa<40> e;_median 1.11 ns 1.11 ns 10 +lstringa<40> e;_stddev 0.039 ns 0.039 ns 10 +lstringa<40> e;_cv 3.51 % 3.51 % 10 ----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000 std::string e = "Test text";_mean 1.87 ns 1.87 ns 10 -std::string e = "Test text";_median 1.83 ns 1.83 ns 10 -std::string e = "Test text";_stddev 0.097 ns 0.097 ns 10 -std::string e = "Test text";_cv 5.21 % 5.21 % 10 -std::string_view e = "Test text";_mean 0.730 ns 0.730 ns 10 -std::string_view e = "Test text";_median 0.729 ns 0.729 ns 10 -std::string_view e = "Test text";_stddev 0.006 ns 0.006 ns 10 -std::string_view e = "Test text";_cv 0.89 % 0.89 % 10 -ssa e = "Test text";_mean 0.736 ns 0.736 ns 10 -ssa e = "Test text";_median 0.733 ns 0.733 ns 10 -ssa e = "Test text";_stddev 0.016 ns 0.016 ns 10 -ssa e = "Test text";_cv 2.14 % 2.14 % 10 +std::string e = "Test text";_median 1.87 ns 1.87 ns 10 +std::string e = "Test text";_stddev 0.037 ns 0.037 ns 10 +std::string e = "Test text";_cv 1.97 % 1.97 % 10 +std::string_view e = "Test text";_mean 0.806 ns 0.806 ns 10 +std::string_view e = "Test text";_median 0.803 ns 0.803 ns 10 +std::string_view e = "Test text";_stddev 0.064 ns 0.064 ns 10 +std::string_view e = "Test text";_cv 7.94 % 7.94 % 10 +ssa e = "Test text";_mean 0.750 ns 0.750 ns 10 +ssa e = "Test text";_median 0.737 ns 0.737 ns 10 +ssa e = "Test text";_stddev 0.037 ns 0.037 ns 10 +ssa e = "Test text";_cv 4.90 % 4.90 % 10 stringa e = "Test text";_mean 1.12 ns 1.12 ns 10 -stringa e = "Test text";_median 1.11 ns 1.11 ns 10 -stringa e = "Test text";_stddev 0.028 ns 0.028 ns 10 -stringa e = "Test text";_cv 2.53 % 2.53 % 10 -lstringa<20> e = "Test text";_mean 1.87 ns 1.87 ns 10 -lstringa<20> e = "Test text";_median 1.85 ns 1.85 ns 10 -lstringa<20> e = "Test text";_stddev 0.074 ns 0.074 ns 10 -lstringa<20> e = "Test text";_cv 3.93 % 3.93 % 10 -lstringa<40> e = "Test text";_mean 1.89 ns 1.89 ns 10 -lstringa<40> e = "Test text";_median 1.89 ns 1.89 ns 10 -lstringa<40> e = "Test text";_stddev 0.056 ns 0.056 ns 10 -lstringa<40> e = "Test text";_cv 2.95 % 2.95 % 10 +stringa e = "Test text";_median 1.13 ns 1.13 ns 10 +stringa e = "Test text";_stddev 0.031 ns 0.031 ns 10 +stringa e = "Test text";_cv 2.73 % 2.73 % 10 +lstringa<20> e = "Test text";_mean 1.92 ns 1.92 ns 10 +lstringa<20> e = "Test text";_median 1.88 ns 1.88 ns 10 +lstringa<20> e = "Test text";_stddev 0.116 ns 0.116 ns 10 +lstringa<20> e = "Test text";_cv 6.06 % 6.06 % 10 +lstringa<40> e = "Test text";_mean 1.88 ns 1.88 ns 10 +lstringa<40> e = "Test text";_median 1.88 ns 1.88 ns 10 +lstringa<40> e = "Test text";_stddev 0.039 ns 0.039 ns 10 +lstringa<40> e = "Test text";_cv 2.09 % 2.09 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890";_mean 19.3 ns 19.3 ns 10 -std::string e = "123456789012345678901234567890";_median 19.1 ns 19.1 ns 10 -std::string e = "123456789012345678901234567890";_stddev 0.662 ns 0.662 ns 10 -std::string e = "123456789012345678901234567890";_cv 3.44 % 3.44 % 10 +std::string e = "123456789012345678901234567890";_mean 19.5 ns 19.5 ns 10 +std::string e = "123456789012345678901234567890";_median 19.4 ns 19.4 ns 10 +std::string e = "123456789012345678901234567890";_stddev 0.902 ns 0.902 ns 10 +std::string e = "123456789012345678901234567890";_cv 4.63 % 4.63 % 10 std::string_view e = "123456789012345678901234567890";_mean 0.744 ns 0.744 ns 10 -std::string_view e = "123456789012345678901234567890";_median 0.737 ns 0.737 ns 10 -std::string_view e = "123456789012345678901234567890";_stddev 0.021 ns 0.021 ns 10 -std::string_view e = "123456789012345678901234567890";_cv 2.80 % 2.80 % 10 -ssa e = "123456789012345678901234567890";_mean 0.735 ns 0.735 ns 10 -ssa e = "123456789012345678901234567890";_median 0.734 ns 0.734 ns 10 -ssa e = "123456789012345678901234567890";_stddev 0.011 ns 0.011 ns 10 -ssa e = "123456789012345678901234567890";_cv 1.50 % 1.50 % 10 -stringa e = "123456789012345678901234567890";_mean 1.12 ns 1.12 ns 10 -stringa e = "123456789012345678901234567890";_median 1.09 ns 1.09 ns 10 -stringa e = "123456789012345678901234567890";_stddev 0.042 ns 0.042 ns 10 -stringa e = "123456789012345678901234567890";_cv 3.73 % 3.73 % 10 -lstringa<20> e = "123456789012345678901234567890";_mean 20.0 ns 20.0 ns 10 -lstringa<20> e = "123456789012345678901234567890";_median 20.1 ns 20.1 ns 10 -lstringa<20> e = "123456789012345678901234567890";_stddev 0.301 ns 0.301 ns 10 -lstringa<20> e = "123456789012345678901234567890";_cv 1.50 % 1.50 % 10 -lstringa<40> e = "123456789012345678901234567890";_mean 1.84 ns 1.84 ns 10 -lstringa<40> e = "123456789012345678901234567890";_median 1.83 ns 1.83 ns 10 -lstringa<40> e = "123456789012345678901234567890";_stddev 0.034 ns 0.034 ns 10 -lstringa<40> e = "123456789012345678901234567890";_cv 1.83 % 1.83 % 10 +std::string_view e = "123456789012345678901234567890";_median 0.750 ns 0.750 ns 10 +std::string_view e = "123456789012345678901234567890";_stddev 0.016 ns 0.016 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 2.12 % 2.12 % 10 +ssa e = "123456789012345678901234567890";_mean 0.738 ns 0.738 ns 10 +ssa e = "123456789012345678901234567890";_median 0.735 ns 0.735 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.015 ns 0.015 ns 10 +ssa e = "123456789012345678901234567890";_cv 2.06 % 2.06 % 10 +stringa e = "123456789012345678901234567890";_mean 1.11 ns 1.11 ns 10 +stringa e = "123456789012345678901234567890";_median 1.11 ns 1.11 ns 10 +stringa e = "123456789012345678901234567890";_stddev 0.019 ns 0.019 ns 10 +stringa e = "123456789012345678901234567890";_cv 1.68 % 1.68 % 10 +lstringa<20> e = "123456789012345678901234567890";_mean 23.0 ns 23.0 ns 10 +lstringa<20> e = "123456789012345678901234567890";_median 22.2 ns 22.2 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 2.69 ns 2.69 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 11.68 % 11.68 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 1.96 ns 1.96 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 1.97 ns 1.97 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.095 ns 0.095 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 4.82 % 4.82 % 10 ----- Create copy of Str with 9 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "Test text"; auto c{e};_mean 4.80 ns 4.80 ns 10 -std::string e = "Test text"; auto c{e};_median 4.79 ns 4.79 ns 10 -std::string e = "Test text"; auto c{e};_stddev 0.056 ns 0.056 ns 10 -std::string e = "Test text"; auto c{e};_cv 1.16 % 1.16 % 10 -std::string_view e = "Test text"; auto c{e};_mean 0.373 ns 0.373 ns 10 -std::string_view e = "Test text"; auto c{e};_median 0.373 ns 0.373 ns 10 -std::string_view e = "Test text"; auto c{e};_stddev 0.004 ns 0.004 ns 10 -std::string_view e = "Test text"; auto c{e};_cv 1.21 % 1.21 % 10 -ssa e = "Test text"; auto c{e};_mean 0.376 ns 0.376 ns 10 -ssa e = "Test text"; auto c{e};_median 0.371 ns 0.371 ns 10 -ssa e = "Test text"; auto c{e};_stddev 0.021 ns 0.021 ns 10 -ssa e = "Test text"; auto c{e};_cv 5.50 % 5.50 % 10 -stringa e = "Test text"; auto c{e};_mean 1.37 ns 1.37 ns 10 -stringa e = "Test text"; auto c{e};_median 1.31 ns 1.31 ns 10 -stringa e = "Test text"; auto c{e};_stddev 0.102 ns 0.102 ns 10 -stringa e = "Test text"; auto c{e};_cv 7.45 % 7.45 % 10 -lstringa<20> e = "Test text"; auto c{e};_mean 4.43 ns 4.43 ns 10 -lstringa<20> e = "Test text"; auto c{e};_median 4.40 ns 4.40 ns 10 -lstringa<20> e = "Test text"; auto c{e};_stddev 0.101 ns 0.101 ns 10 -lstringa<20> e = "Test text"; auto c{e};_cv 2.27 % 2.27 % 10 -lstringa<40> e = "Test text"; auto c{e};_mean 4.49 ns 4.49 ns 10 -lstringa<40> e = "Test text"; auto c{e};_median 4.48 ns 4.48 ns 10 -lstringa<40> e = "Test text"; auto c{e};_stddev 0.127 ns 0.127 ns 10 -lstringa<40> e = "Test text"; auto c{e};_cv 2.84 % 2.84 % 10 +std::string e = "Test text"; auto c{e};_mean 4.97 ns 4.97 ns 10 +std::string e = "Test text"; auto c{e};_median 4.90 ns 4.90 ns 10 +std::string e = "Test text"; auto c{e};_stddev 0.289 ns 0.289 ns 10 +std::string e = "Test text"; auto c{e};_cv 5.82 % 5.82 % 10 +std::string_view e = "Test text"; auto c{e};_mean 0.399 ns 0.399 ns 10 +std::string_view e = "Test text"; auto c{e};_median 0.400 ns 0.400 ns 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.026 ns 0.026 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 6.44 % 6.44 % 10 +ssa e = "Test text"; auto c{e};_mean 0.381 ns 0.381 ns 10 +ssa e = "Test text"; auto c{e};_median 0.372 ns 0.372 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.020 ns 0.020 ns 10 +ssa e = "Test text"; auto c{e};_cv 5.23 % 5.23 % 10 +stringa e = "Test text"; auto c{e};_mean 1.15 ns 1.15 ns 10 +stringa e = "Test text"; auto c{e};_median 1.14 ns 1.14 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.077 ns 0.077 ns 10 +stringa e = "Test text"; auto c{e};_cv 6.65 % 6.65 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 4.56 ns 4.56 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 4.55 ns 4.55 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.166 ns 0.166 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 3.64 % 3.64 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 4.61 ns 4.61 ns 10 +lstringa<40> e = "Test text"; auto c{e};_median 4.49 ns 4.49 ns 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 0.316 ns 0.316 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 6.85 % 6.85 % 10 ----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890"; auto c{e};_mean 24.3 ns 24.3 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_median 24.1 ns 24.1 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_stddev 0.599 ns 0.599 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_cv 2.46 % 2.46 % 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.724 ns 0.724 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.724 ns 0.724 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.007 ns 0.007 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 0.91 % 0.91 % 10 -ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.752 ns 0.752 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_median 0.751 ns 0.751 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.024 ns 0.024 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_cv 3.21 % 3.21 % 10 -stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.11 ns 1.11 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_median 1.11 ns 1.11 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.028 ns 0.028 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_cv 2.48 % 2.48 % 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 20.1 ns 20.1 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 20.0 ns 20.0 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.428 ns 0.428 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 2.13 % 2.13 % 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.52 ns 4.52 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 4.49 ns 4.49 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.115 ns 0.115 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 2.54 % 2.54 % 10 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 25.3 ns 25.3 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 24.7 ns 24.7 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 2.69 ns 2.69 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 10.65 % 10.65 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.731 ns 0.731 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.728 ns 0.728 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.011 ns 0.011 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.57 % 1.57 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.731 ns 0.731 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 0.729 ns 0.729 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.011 ns 0.011 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 1.52 % 1.52 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.13 ns 1.13 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 1.13 ns 1.13 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.035 ns 0.035 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 3.09 % 3.09 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 22.5 ns 22.5 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 21.2 ns 21.2 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 3.29 ns 3.29 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 14.58 % 14.58 % 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.61 ns 4.61 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 4.46 ns 4.46 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.347 ns 0.347 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 7.53 % 7.53 % 10 ----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find;_mean 7.33 ns 7.33 ns 10 -std::string::find;_median 7.15 ns 7.15 ns 10 -std::string::find;_stddev 0.514 ns 0.513 ns 10 -std::string::find;_cv 7.00 % 7.00 % 10 -std::string_view::find;_mean 6.78 ns 6.78 ns 10 -std::string_view::find;_median 6.74 ns 6.74 ns 10 -std::string_view::find;_stddev 0.241 ns 0.241 ns 10 -std::string_view::find;_cv 3.56 % 3.56 % 10 -ssa::find;_mean 6.32 ns 6.32 ns 10 -ssa::find;_median 6.27 ns 6.27 ns 10 -ssa::find;_stddev 0.136 ns 0.136 ns 10 -ssa::find;_cv 2.16 % 2.16 % 10 -stringa::find;_mean 6.77 ns 6.77 ns 10 -stringa::find;_median 6.75 ns 6.75 ns 10 -stringa::find;_stddev 0.152 ns 0.152 ns 10 -stringa::find;_cv 2.25 % 2.25 % 10 -lstringa<20>::find;_mean 6.33 ns 6.33 ns 10 -lstringa<20>::find;_median 6.26 ns 6.26 ns 10 -lstringa<20>::find;_stddev 0.205 ns 0.205 ns 10 -lstringa<20>::find;_cv 3.24 % 3.24 % 10 -lstringa<40>::find;_mean 6.43 ns 6.43 ns 10 -lstringa<40>::find;_median 6.36 ns 6.36 ns 10 -lstringa<40>::find;_stddev 0.307 ns 0.307 ns 10 -lstringa<40>::find;_cv 4.77 % 4.77 % 10 +std::string::find;_mean 7.74 ns 7.74 ns 10 +std::string::find;_median 7.49 ns 7.49 ns 10 +std::string::find;_stddev 0.713 ns 0.713 ns 10 +std::string::find;_cv 9.21 % 9.21 % 10 +std::string_view::find;_mean 6.68 ns 6.68 ns 10 +std::string_view::find;_median 6.60 ns 6.60 ns 10 +std::string_view::find;_stddev 0.215 ns 0.215 ns 10 +std::string_view::find;_cv 3.22 % 3.22 % 10 +ssa::find;_mean 6.45 ns 6.45 ns 10 +ssa::find;_median 6.26 ns 6.26 ns 10 +ssa::find;_stddev 0.315 ns 0.315 ns 10 +ssa::find;_cv 4.88 % 4.88 % 10 +stringa::find;_mean 6.78 ns 6.78 ns 10 +stringa::find;_median 6.65 ns 6.65 ns 10 +stringa::find;_stddev 0.345 ns 0.345 ns 10 +stringa::find;_cv 5.08 % 5.08 % 10 +lstringa<20>::find;_mean 6.95 ns 6.95 ns 10 +lstringa<20>::find;_median 6.84 ns 6.84 ns 10 +lstringa<20>::find;_stddev 0.485 ns 0.485 ns 10 +lstringa<20>::find;_cv 6.97 % 6.97 % 10 +lstringa<40>::find;_mean 6.87 ns 6.87 ns 10 +lstringa<40>::find;_median 6.84 ns 6.84 ns 10 +lstringa<40>::find;_stddev 0.358 ns 0.358 ns 10 +lstringa<40>::find;_cv 5.21 % 5.21 % 10 ------- Copy not literal Str with N symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string copy{str_with_len_N};/15_mean 5.20 ns 5.20 ns 10 -std::string copy{str_with_len_N};/15_median 5.18 ns 5.18 ns 10 -std::string copy{str_with_len_N};/15_stddev 0.124 ns 0.124 ns 10 -std::string copy{str_with_len_N};/15_cv 2.39 % 2.39 % 10 -std::string copy{str_with_len_N};/16_mean 23.6 ns 23.6 ns 10 -std::string copy{str_with_len_N};/16_median 23.7 ns 23.7 ns 10 -std::string copy{str_with_len_N};/16_stddev 0.628 ns 0.628 ns 10 -std::string copy{str_with_len_N};/16_cv 2.66 % 2.66 % 10 -std::string copy{str_with_len_N};/23_mean 23.0 ns 23.0 ns 10 -std::string copy{str_with_len_N};/23_median 23.0 ns 23.0 ns 10 -std::string copy{str_with_len_N};/23_stddev 0.156 ns 0.156 ns 10 -std::string copy{str_with_len_N};/23_cv 0.68 % 0.68 % 10 -std::string copy{str_with_len_N};/24_mean 23.1 ns 23.1 ns 10 -std::string copy{str_with_len_N};/24_median 23.1 ns 23.1 ns 10 -std::string copy{str_with_len_N};/24_stddev 0.362 ns 0.362 ns 10 -std::string copy{str_with_len_N};/24_cv 1.57 % 1.57 % 10 -std::string copy{str_with_len_N};/32_mean 23.4 ns 23.4 ns 10 -std::string copy{str_with_len_N};/32_median 23.3 ns 23.3 ns 10 -std::string copy{str_with_len_N};/32_stddev 0.533 ns 0.533 ns 10 -std::string copy{str_with_len_N};/32_cv 2.28 % 2.28 % 10 -std::string copy{str_with_len_N};/64_mean 24.0 ns 24.0 ns 10 -std::string copy{str_with_len_N};/64_median 23.9 ns 23.9 ns 10 -std::string copy{str_with_len_N};/64_stddev 1.21 ns 1.21 ns 10 -std::string copy{str_with_len_N};/64_cv 5.03 % 5.03 % 10 -std::string copy{str_with_len_N};/128_mean 24.5 ns 24.5 ns 10 -std::string copy{str_with_len_N};/128_median 24.4 ns 24.4 ns 10 -std::string copy{str_with_len_N};/128_stddev 0.331 ns 0.331 ns 10 -std::string copy{str_with_len_N};/128_cv 1.35 % 1.35 % 10 -std::string copy{str_with_len_N};/256_mean 25.1 ns 25.1 ns 10 -std::string copy{str_with_len_N};/256_median 24.8 ns 24.8 ns 10 -std::string copy{str_with_len_N};/256_stddev 0.922 ns 0.922 ns 10 -std::string copy{str_with_len_N};/256_cv 3.67 % 3.67 % 10 -std::string copy{str_with_len_N};/512_mean 29.0 ns 29.0 ns 10 -std::string copy{str_with_len_N};/512_median 29.0 ns 29.0 ns 10 -std::string copy{str_with_len_N};/512_stddev 0.576 ns 0.576 ns 10 -std::string copy{str_with_len_N};/512_cv 1.99 % 1.99 % 10 -std::string copy{str_with_len_N};/1024_mean 44.3 ns 44.3 ns 10 -std::string copy{str_with_len_N};/1024_median 44.1 ns 44.1 ns 10 -std::string copy{str_with_len_N};/1024_stddev 0.821 ns 0.821 ns 10 -std::string copy{str_with_len_N};/1024_cv 1.86 % 1.86 % 10 -std::string copy{str_with_len_N};/2048_mean 130 ns 130 ns 10 -std::string copy{str_with_len_N};/2048_median 131 ns 131 ns 10 -std::string copy{str_with_len_N};/2048_stddev 8.66 ns 8.66 ns 10 -std::string copy{str_with_len_N};/2048_cv 6.66 % 6.66 % 10 -std::string copy{str_with_len_N};/4096_mean 157 ns 157 ns 10 -std::string copy{str_with_len_N};/4096_median 158 ns 158 ns 10 -std::string copy{str_with_len_N};/4096_stddev 10.6 ns 10.6 ns 10 -std::string copy{str_with_len_N};/4096_cv 6.77 % 6.77 % 10 -stringa copy{str_with_len_N};/15_mean 1.14 ns 1.14 ns 10 -stringa copy{str_with_len_N};/15_median 1.13 ns 1.13 ns 10 -stringa copy{str_with_len_N};/15_stddev 0.042 ns 0.042 ns 10 -stringa copy{str_with_len_N};/15_cv 3.67 % 3.67 % 10 -stringa copy{str_with_len_N};/16_mean 1.10 ns 1.10 ns 10 -stringa copy{str_with_len_N};/16_median 1.10 ns 1.10 ns 10 -stringa copy{str_with_len_N};/16_stddev 0.017 ns 0.017 ns 10 -stringa copy{str_with_len_N};/16_cv 1.50 % 1.50 % 10 -stringa copy{str_with_len_N};/23_mean 1.11 ns 1.11 ns 10 -stringa copy{str_with_len_N};/23_median 1.11 ns 1.11 ns 10 -stringa copy{str_with_len_N};/23_stddev 0.016 ns 0.016 ns 10 -stringa copy{str_with_len_N};/23_cv 1.44 % 1.44 % 10 -stringa copy{str_with_len_N};/24_mean 16.2 ns 16.2 ns 10 -stringa copy{str_with_len_N};/24_median 16.2 ns 16.2 ns 10 -stringa copy{str_with_len_N};/24_stddev 0.215 ns 0.215 ns 10 -stringa copy{str_with_len_N};/24_cv 1.33 % 1.33 % 10 -stringa copy{str_with_len_N};/32_mean 16.3 ns 16.3 ns 10 -stringa copy{str_with_len_N};/32_median 16.2 ns 16.2 ns 10 -stringa copy{str_with_len_N};/32_stddev 0.264 ns 0.264 ns 10 -stringa copy{str_with_len_N};/32_cv 1.62 % 1.62 % 10 -stringa copy{str_with_len_N};/64_mean 16.5 ns 16.5 ns 10 -stringa copy{str_with_len_N};/64_median 16.5 ns 16.5 ns 10 -stringa copy{str_with_len_N};/64_stddev 0.299 ns 0.299 ns 10 -stringa copy{str_with_len_N};/64_cv 1.81 % 1.81 % 10 -stringa copy{str_with_len_N};/128_mean 16.4 ns 16.4 ns 10 -stringa copy{str_with_len_N};/128_median 16.5 ns 16.5 ns 10 -stringa copy{str_with_len_N};/128_stddev 0.327 ns 0.327 ns 10 -stringa copy{str_with_len_N};/128_cv 1.99 % 1.99 % 10 -stringa copy{str_with_len_N};/256_mean 16.2 ns 16.2 ns 10 -stringa copy{str_with_len_N};/256_median 16.1 ns 16.1 ns 10 -stringa copy{str_with_len_N};/256_stddev 0.261 ns 0.261 ns 10 -stringa copy{str_with_len_N};/256_cv 1.61 % 1.61 % 10 -stringa copy{str_with_len_N};/512_mean 16.3 ns 16.3 ns 10 -stringa copy{str_with_len_N};/512_median 16.2 ns 16.2 ns 10 -stringa copy{str_with_len_N};/512_stddev 0.272 ns 0.272 ns 10 -stringa copy{str_with_len_N};/512_cv 1.67 % 1.67 % 10 -stringa copy{str_with_len_N};/1024_mean 16.3 ns 16.3 ns 10 -stringa copy{str_with_len_N};/1024_median 16.1 ns 16.1 ns 10 -stringa copy{str_with_len_N};/1024_stddev 0.357 ns 0.357 ns 10 -stringa copy{str_with_len_N};/1024_cv 2.19 % 2.19 % 10 -stringa copy{str_with_len_N};/2048_mean 16.4 ns 16.4 ns 10 -stringa copy{str_with_len_N};/2048_median 16.2 ns 16.2 ns 10 -stringa copy{str_with_len_N};/2048_stddev 0.371 ns 0.371 ns 10 -stringa copy{str_with_len_N};/2048_cv 2.26 % 2.26 % 10 +std::string copy{str_with_len_N};/15_mean 5.03 ns 5.03 ns 10 +std::string copy{str_with_len_N};/15_median 4.93 ns 4.93 ns 10 +std::string copy{str_with_len_N};/15_stddev 0.269 ns 0.269 ns 10 +std::string copy{str_with_len_N};/15_cv 5.34 % 5.34 % 10 +std::string copy{str_with_len_N};/16_mean 23.7 ns 23.7 ns 10 +std::string copy{str_with_len_N};/16_median 23.6 ns 23.6 ns 10 +std::string copy{str_with_len_N};/16_stddev 0.910 ns 0.910 ns 10 +std::string copy{str_with_len_N};/16_cv 3.84 % 3.84 % 10 +std::string copy{str_with_len_N};/23_mean 23.2 ns 23.2 ns 10 +std::string copy{str_with_len_N};/23_median 23.1 ns 23.1 ns 10 +std::string copy{str_with_len_N};/23_stddev 0.611 ns 0.611 ns 10 +std::string copy{str_with_len_N};/23_cv 2.64 % 2.64 % 10 +std::string copy{str_with_len_N};/24_mean 23.2 ns 23.2 ns 10 +std::string copy{str_with_len_N};/24_median 23.0 ns 23.0 ns 10 +std::string copy{str_with_len_N};/24_stddev 0.560 ns 0.560 ns 10 +std::string copy{str_with_len_N};/24_cv 2.41 % 2.41 % 10 +std::string copy{str_with_len_N};/32_mean 25.6 ns 25.6 ns 10 +std::string copy{str_with_len_N};/32_median 26.6 ns 26.6 ns 10 +std::string copy{str_with_len_N};/32_stddev 2.29 ns 2.29 ns 10 +std::string copy{str_with_len_N};/32_cv 8.96 % 8.96 % 10 +std::string copy{str_with_len_N};/64_mean 24.7 ns 24.7 ns 10 +std::string copy{str_with_len_N};/64_median 23.3 ns 23.3 ns 10 +std::string copy{str_with_len_N};/64_stddev 3.14 ns 3.14 ns 10 +std::string copy{str_with_len_N};/64_cv 12.69 % 12.69 % 10 +std::string copy{str_with_len_N};/128_mean 25.9 ns 25.9 ns 10 +std::string copy{str_with_len_N};/128_median 25.7 ns 25.7 ns 10 +std::string copy{str_with_len_N};/128_stddev 1.25 ns 1.25 ns 10 +std::string copy{str_with_len_N};/128_cv 4.81 % 4.81 % 10 +std::string copy{str_with_len_N};/256_mean 25.5 ns 25.5 ns 10 +std::string copy{str_with_len_N};/256_median 25.2 ns 25.2 ns 10 +std::string copy{str_with_len_N};/256_stddev 1.52 ns 1.52 ns 10 +std::string copy{str_with_len_N};/256_cv 5.95 % 5.95 % 10 +std::string copy{str_with_len_N};/512_mean 29.8 ns 29.8 ns 10 +std::string copy{str_with_len_N};/512_median 29.9 ns 29.9 ns 10 +std::string copy{str_with_len_N};/512_stddev 0.807 ns 0.807 ns 10 +std::string copy{str_with_len_N};/512_cv 2.70 % 2.70 % 10 +std::string copy{str_with_len_N};/1024_mean 46.4 ns 46.4 ns 10 +std::string copy{str_with_len_N};/1024_median 46.3 ns 46.3 ns 10 +std::string copy{str_with_len_N};/1024_stddev 1.36 ns 1.36 ns 10 +std::string copy{str_with_len_N};/1024_cv 2.94 % 2.94 % 10 +std::string copy{str_with_len_N};/2048_mean 124 ns 124 ns 10 +std::string copy{str_with_len_N};/2048_median 123 ns 123 ns 10 +std::string copy{str_with_len_N};/2048_stddev 9.70 ns 9.70 ns 10 +std::string copy{str_with_len_N};/2048_cv 7.85 % 7.85 % 10 +std::string copy{str_with_len_N};/4096_mean 158 ns 158 ns 10 +std::string copy{str_with_len_N};/4096_median 161 ns 161 ns 10 +std::string copy{str_with_len_N};/4096_stddev 11.5 ns 11.5 ns 10 +std::string copy{str_with_len_N};/4096_cv 7.27 % 7.27 % 10 +stringa copy{str_with_len_N};/15_mean 1.12 ns 1.12 ns 10 +stringa copy{str_with_len_N};/15_median 1.11 ns 1.11 ns 10 +stringa copy{str_with_len_N};/15_stddev 0.040 ns 0.040 ns 10 +stringa copy{str_with_len_N};/15_cv 3.57 % 3.57 % 10 +stringa copy{str_with_len_N};/16_mean 1.13 ns 1.13 ns 10 +stringa copy{str_with_len_N};/16_median 1.12 ns 1.12 ns 10 +stringa copy{str_with_len_N};/16_stddev 0.043 ns 0.043 ns 10 +stringa copy{str_with_len_N};/16_cv 3.81 % 3.81 % 10 +stringa copy{str_with_len_N};/23_mean 1.13 ns 1.13 ns 10 +stringa copy{str_with_len_N};/23_median 1.13 ns 1.13 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.041 ns 0.041 ns 10 +stringa copy{str_with_len_N};/23_cv 3.65 % 3.65 % 10 +stringa copy{str_with_len_N};/24_mean 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/24_median 16.0 ns 16.0 ns 10 +stringa copy{str_with_len_N};/24_stddev 0.268 ns 0.268 ns 10 +stringa copy{str_with_len_N};/24_cv 1.66 % 1.66 % 10 +stringa copy{str_with_len_N};/32_mean 16.2 ns 16.2 ns 10 +stringa copy{str_with_len_N};/32_median 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/32_stddev 0.365 ns 0.365 ns 10 +stringa copy{str_with_len_N};/32_cv 2.25 % 2.25 % 10 +stringa copy{str_with_len_N};/64_mean 16.6 ns 16.6 ns 10 +stringa copy{str_with_len_N};/64_median 16.8 ns 16.8 ns 10 +stringa copy{str_with_len_N};/64_stddev 0.488 ns 0.488 ns 10 +stringa copy{str_with_len_N};/64_cv 2.94 % 2.94 % 10 +stringa copy{str_with_len_N};/128_mean 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/128_median 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/128_stddev 0.158 ns 0.158 ns 10 +stringa copy{str_with_len_N};/128_cv 0.98 % 0.98 % 10 +stringa copy{str_with_len_N};/256_mean 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/256_median 16.0 ns 16.0 ns 10 +stringa copy{str_with_len_N};/256_stddev 0.215 ns 0.215 ns 10 +stringa copy{str_with_len_N};/256_cv 1.34 % 1.34 % 10 +stringa copy{str_with_len_N};/512_mean 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/512_median 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/512_stddev 0.235 ns 0.235 ns 10 +stringa copy{str_with_len_N};/512_cv 1.46 % 1.46 % 10 +stringa copy{str_with_len_N};/1024_mean 16.6 ns 16.6 ns 10 +stringa copy{str_with_len_N};/1024_median 16.4 ns 16.4 ns 10 +stringa copy{str_with_len_N};/1024_stddev 0.648 ns 0.648 ns 10 +stringa copy{str_with_len_N};/1024_cv 3.91 % 3.91 % 10 +stringa copy{str_with_len_N};/2048_mean 16.9 ns 16.9 ns 10 +stringa copy{str_with_len_N};/2048_median 17.0 ns 17.0 ns 10 +stringa copy{str_with_len_N};/2048_stddev 0.652 ns 0.652 ns 10 +stringa copy{str_with_len_N};/2048_cv 3.86 % 3.86 % 10 stringa copy{str_with_len_N};/4096_mean 16.5 ns 16.5 ns 10 stringa copy{str_with_len_N};/4096_median 16.4 ns 16.4 ns 10 -stringa copy{str_with_len_N};/4096_stddev 0.427 ns 0.427 ns 10 -stringa copy{str_with_len_N};/4096_cv 2.59 % 2.59 % 10 -lstringa<16> copy{str_with_len_N};/15_mean 4.51 ns 4.51 ns 10 -lstringa<16> copy{str_with_len_N};/15_median 4.49 ns 4.49 ns 10 -lstringa<16> copy{str_with_len_N};/15_stddev 0.147 ns 0.147 ns 10 -lstringa<16> copy{str_with_len_N};/15_cv 3.26 % 3.26 % 10 -lstringa<16> copy{str_with_len_N};/16_mean 4.50 ns 4.50 ns 10 -lstringa<16> copy{str_with_len_N};/16_median 4.46 ns 4.46 ns 10 -lstringa<16> copy{str_with_len_N};/16_stddev 0.131 ns 0.131 ns 10 -lstringa<16> copy{str_with_len_N};/16_cv 2.91 % 2.91 % 10 -lstringa<16> copy{str_with_len_N};/23_mean 4.56 ns 4.56 ns 10 -lstringa<16> copy{str_with_len_N};/23_median 4.57 ns 4.57 ns 10 -lstringa<16> copy{str_with_len_N};/23_stddev 0.126 ns 0.126 ns 10 -lstringa<16> copy{str_with_len_N};/23_cv 2.77 % 2.77 % 10 -lstringa<16> copy{str_with_len_N};/24_mean 24.2 ns 24.2 ns 10 -lstringa<16> copy{str_with_len_N};/24_median 24.0 ns 24.0 ns 10 -lstringa<16> copy{str_with_len_N};/24_stddev 0.622 ns 0.622 ns 10 -lstringa<16> copy{str_with_len_N};/24_cv 2.57 % 2.57 % 10 -lstringa<16> copy{str_with_len_N};/32_mean 23.7 ns 23.7 ns 10 +stringa copy{str_with_len_N};/4096_stddev 0.567 ns 0.567 ns 10 +stringa copy{str_with_len_N};/4096_cv 3.44 % 3.44 % 10 +lstringa<16> copy{str_with_len_N};/15_mean 4.44 ns 4.44 ns 10 +lstringa<16> copy{str_with_len_N};/15_median 4.43 ns 4.43 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.115 ns 0.115 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 2.58 % 2.58 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 4.46 ns 4.46 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 4.42 ns 4.42 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 0.134 ns 0.134 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 3.00 % 3.00 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 4.53 ns 4.53 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 4.51 ns 4.51 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 0.153 ns 0.153 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 3.39 % 3.39 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 26.9 ns 26.9 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 25.4 ns 25.4 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 3.47 ns 3.47 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 12.90 % 12.90 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 23.8 ns 23.8 ns 10 lstringa<16> copy{str_with_len_N};/32_median 23.6 ns 23.6 ns 10 -lstringa<16> copy{str_with_len_N};/32_stddev 0.525 ns 0.525 ns 10 -lstringa<16> copy{str_with_len_N};/32_cv 2.22 % 2.22 % 10 -lstringa<16> copy{str_with_len_N};/64_mean 25.4 ns 25.4 ns 10 -lstringa<16> copy{str_with_len_N};/64_median 25.2 ns 25.2 ns 10 -lstringa<16> copy{str_with_len_N};/64_stddev 0.675 ns 0.675 ns 10 -lstringa<16> copy{str_with_len_N};/64_cv 2.65 % 2.65 % 10 -lstringa<16> copy{str_with_len_N};/128_mean 26.8 ns 26.8 ns 10 -lstringa<16> copy{str_with_len_N};/128_median 26.6 ns 26.6 ns 10 -lstringa<16> copy{str_with_len_N};/128_stddev 0.702 ns 0.702 ns 10 -lstringa<16> copy{str_with_len_N};/128_cv 2.62 % 2.62 % 10 -lstringa<16> copy{str_with_len_N};/256_mean 27.8 ns 27.8 ns 10 -lstringa<16> copy{str_with_len_N};/256_median 27.7 ns 27.7 ns 10 -lstringa<16> copy{str_with_len_N};/256_stddev 1.06 ns 1.06 ns 10 -lstringa<16> copy{str_with_len_N};/256_cv 3.79 % 3.79 % 10 -lstringa<16> copy{str_with_len_N};/512_mean 31.9 ns 31.9 ns 10 -lstringa<16> copy{str_with_len_N};/512_median 31.2 ns 31.2 ns 10 -lstringa<16> copy{str_with_len_N};/512_stddev 1.63 ns 1.63 ns 10 -lstringa<16> copy{str_with_len_N};/512_cv 5.11 % 5.11 % 10 -lstringa<16> copy{str_with_len_N};/1024_mean 96.9 ns 96.9 ns 10 -lstringa<16> copy{str_with_len_N};/1024_median 97.0 ns 97.0 ns 10 -lstringa<16> copy{str_with_len_N};/1024_stddev 12.0 ns 12.0 ns 10 -lstringa<16> copy{str_with_len_N};/1024_cv 12.35 % 12.35 % 10 -lstringa<16> copy{str_with_len_N};/2048_mean 117 ns 117 ns 10 -lstringa<16> copy{str_with_len_N};/2048_median 118 ns 118 ns 10 -lstringa<16> copy{str_with_len_N};/2048_stddev 9.38 ns 9.38 ns 10 -lstringa<16> copy{str_with_len_N};/2048_cv 8.05 % 8.05 % 10 -lstringa<16> copy{str_with_len_N};/4096_mean 130 ns 130 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 0.641 ns 0.641 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 2.69 % 2.69 % 10 +lstringa<16> copy{str_with_len_N};/64_mean 25.6 ns 25.6 ns 10 +lstringa<16> copy{str_with_len_N};/64_median 25.3 ns 25.3 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 1.31 ns 1.31 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 5.10 % 5.10 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 27.1 ns 27.1 ns 10 +lstringa<16> copy{str_with_len_N};/128_median 25.9 ns 25.9 ns 10 +lstringa<16> copy{str_with_len_N};/128_stddev 2.92 ns 2.92 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 10.79 % 10.79 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 30.6 ns 30.6 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 30.5 ns 30.5 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 3.57 ns 3.57 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 11.68 % 11.68 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 30.0 ns 30.0 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 29.7 ns 29.7 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 1.34 ns 1.34 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 4.45 % 4.45 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 98.8 ns 98.8 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 100 ns 100 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 8.86 ns 8.86 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 8.97 % 8.97 % 10 +lstringa<16> copy{str_with_len_N};/2048_mean 118 ns 118 ns 10 +lstringa<16> copy{str_with_len_N};/2048_median 117 ns 117 ns 10 +lstringa<16> copy{str_with_len_N};/2048_stddev 14.7 ns 14.7 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 12.46 % 12.46 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 135 ns 135 ns 10 lstringa<16> copy{str_with_len_N};/4096_median 129 ns 129 ns 10 -lstringa<16> copy{str_with_len_N};/4096_stddev 7.81 ns 7.81 ns 10 -lstringa<16> copy{str_with_len_N};/4096_cv 6.02 % 6.02 % 10 -lstringa<512> copy{str_with_len_N};/15_mean 5.23 ns 5.23 ns 10 -lstringa<512> copy{str_with_len_N};/15_median 5.21 ns 5.21 ns 10 -lstringa<512> copy{str_with_len_N};/15_stddev 0.125 ns 0.125 ns 10 -lstringa<512> copy{str_with_len_N};/15_cv 2.39 % 2.39 % 10 -lstringa<512> copy{str_with_len_N};/16_mean 11.5 ns 11.5 ns 10 -lstringa<512> copy{str_with_len_N};/16_median 11.5 ns 11.5 ns 10 -lstringa<512> copy{str_with_len_N};/16_stddev 0.133 ns 0.133 ns 10 -lstringa<512> copy{str_with_len_N};/16_cv 1.15 % 1.15 % 10 -lstringa<512> copy{str_with_len_N};/23_mean 11.7 ns 11.7 ns 10 -lstringa<512> copy{str_with_len_N};/23_median 11.6 ns 11.6 ns 10 -lstringa<512> copy{str_with_len_N};/23_stddev 0.425 ns 0.425 ns 10 -lstringa<512> copy{str_with_len_N};/23_cv 3.62 % 3.62 % 10 -lstringa<512> copy{str_with_len_N};/24_mean 11.6 ns 11.6 ns 10 -lstringa<512> copy{str_with_len_N};/24_median 11.7 ns 11.7 ns 10 -lstringa<512> copy{str_with_len_N};/24_stddev 0.208 ns 0.208 ns 10 -lstringa<512> copy{str_with_len_N};/24_cv 1.79 % 1.79 % 10 -lstringa<512> copy{str_with_len_N};/32_mean 20.0 ns 20.0 ns 10 -lstringa<512> copy{str_with_len_N};/32_median 19.9 ns 19.9 ns 10 -lstringa<512> copy{str_with_len_N};/32_stddev 0.297 ns 0.297 ns 10 -lstringa<512> copy{str_with_len_N};/32_cv 1.48 % 1.48 % 10 -lstringa<512> copy{str_with_len_N};/64_mean 20.8 ns 20.8 ns 10 -lstringa<512> copy{str_with_len_N};/64_median 20.7 ns 20.7 ns 10 -lstringa<512> copy{str_with_len_N};/64_stddev 0.253 ns 0.253 ns 10 -lstringa<512> copy{str_with_len_N};/64_cv 1.22 % 1.22 % 10 -lstringa<512> copy{str_with_len_N};/128_mean 23.4 ns 23.4 ns 10 -lstringa<512> copy{str_with_len_N};/128_median 23.1 ns 23.1 ns 10 -lstringa<512> copy{str_with_len_N};/128_stddev 0.736 ns 0.736 ns 10 -lstringa<512> copy{str_with_len_N};/128_cv 3.14 % 3.14 % 10 -lstringa<512> copy{str_with_len_N};/256_mean 18.1 ns 18.1 ns 10 -lstringa<512> copy{str_with_len_N};/256_median 18.2 ns 18.2 ns 10 -lstringa<512> copy{str_with_len_N};/256_stddev 0.391 ns 0.391 ns 10 -lstringa<512> copy{str_with_len_N};/256_cv 2.16 % 2.16 % 10 -lstringa<512> copy{str_with_len_N};/512_mean 20.6 ns 20.6 ns 10 -lstringa<512> copy{str_with_len_N};/512_median 20.6 ns 20.6 ns 10 -lstringa<512> copy{str_with_len_N};/512_stddev 0.288 ns 0.288 ns 10 -lstringa<512> copy{str_with_len_N};/512_cv 1.39 % 1.39 % 10 -lstringa<512> copy{str_with_len_N};/1024_mean 96.9 ns 96.9 ns 10 -lstringa<512> copy{str_with_len_N};/1024_median 95.5 ns 95.5 ns 10 -lstringa<512> copy{str_with_len_N};/1024_stddev 11.7 ns 11.7 ns 10 -lstringa<512> copy{str_with_len_N};/1024_cv 12.11 % 12.11 % 10 -lstringa<512> copy{str_with_len_N};/2048_mean 118 ns 118 ns 10 -lstringa<512> copy{str_with_len_N};/2048_median 121 ns 121 ns 10 -lstringa<512> copy{str_with_len_N};/2048_stddev 13.4 ns 13.4 ns 10 -lstringa<512> copy{str_with_len_N};/2048_cv 11.31 % 11.31 % 10 -lstringa<512> copy{str_with_len_N};/4096_mean 134 ns 134 ns 10 -lstringa<512> copy{str_with_len_N};/4096_median 133 ns 133 ns 10 -lstringa<512> copy{str_with_len_N};/4096_stddev 11.5 ns 11.5 ns 10 -lstringa<512> copy{str_with_len_N};/4096_cv 8.58 % 8.58 % 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 15.6 ns 15.6 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 11.60 % 11.60 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 5.21 ns 5.21 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 5.24 ns 5.24 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 0.121 ns 0.121 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 2.32 % 2.32 % 10 +lstringa<512> copy{str_with_len_N};/16_mean 5.22 ns 5.22 ns 10 +lstringa<512> copy{str_with_len_N};/16_median 5.17 ns 5.17 ns 10 +lstringa<512> copy{str_with_len_N};/16_stddev 0.171 ns 0.171 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 3.29 % 3.29 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 5.39 ns 5.39 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 5.32 ns 5.32 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 0.259 ns 0.259 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 4.81 % 4.81 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 5.85 ns 5.85 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 5.59 ns 5.59 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.684 ns 0.684 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 11.70 % 11.70 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 4.85 ns 4.85 ns 10 +lstringa<512> copy{str_with_len_N};/32_median 4.81 ns 4.81 ns 10 +lstringa<512> copy{str_with_len_N};/32_stddev 0.165 ns 0.165 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 3.41 % 3.41 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 7.00 ns 7.00 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 6.89 ns 6.89 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.337 ns 0.337 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 4.82 % 4.82 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 7.11 ns 7.11 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 7.16 ns 7.16 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 0.155 ns 0.155 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 2.18 % 2.18 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 16.4 ns 16.4 ns 10 +lstringa<512> copy{str_with_len_N};/256_median 16.3 ns 16.3 ns 10 +lstringa<512> copy{str_with_len_N};/256_stddev 0.377 ns 0.377 ns 10 +lstringa<512> copy{str_with_len_N};/256_cv 2.30 % 2.30 % 10 +lstringa<512> copy{str_with_len_N};/512_mean 10.6 ns 10.6 ns 10 +lstringa<512> copy{str_with_len_N};/512_median 10.5 ns 10.5 ns 10 +lstringa<512> copy{str_with_len_N};/512_stddev 0.362 ns 0.362 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 3.41 % 3.41 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 98.4 ns 98.4 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 98.1 ns 98.1 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 8.39 ns 8.39 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 8.52 % 8.52 % 10 +lstringa<512> copy{str_with_len_N};/2048_mean 117 ns 117 ns 10 +lstringa<512> copy{str_with_len_N};/2048_median 118 ns 118 ns 10 +lstringa<512> copy{str_with_len_N};/2048_stddev 10.2 ns 10.2 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 8.73 % 8.73 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 137 ns 137 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 136 ns 136 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 16.5 ns 16.5 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 12.02 % 12.02 % 10 ----- Convert to int '1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 27.4 ns 27.4 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 27.4 ns 27.4 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.497 ns 0.497 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 1.81 % 1.81 % 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 28.4 ns 28.4 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 27.6 ns 27.6 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 2.05 ns 2.05 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 7.21 % 7.21 % 10 std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 12.5 ns 12.5 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 12.6 ns 12.6 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.308 ns 0.308 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 2.46 % 2.46 % 10 -stringa s = "123456789"; int res = s.to_int_mean 8.24 ns 8.24 ns 10 -stringa s = "123456789"; int res = s.to_int_median 8.16 ns 8.16 ns 10 -stringa s = "123456789"; int res = s.to_int_stddev 0.298 ns 0.298 ns 10 -stringa s = "123456789"; int res = s.to_int_cv 3.62 % 3.62 % 10 -ssa s = "123456789"; int res = s.to_int_mean 7.94 ns 7.94 ns 10 -ssa s = "123456789"; int res = s.to_int_median 7.86 ns 7.86 ns 10 -ssa s = "123456789"; int res = s.to_int_stddev 0.327 ns 0.327 ns 10 -ssa s = "123456789"; int res = s.to_int_cv 4.12 % 4.12 % 10 -lstringa<20> s = "123456789"; int res = s.to_int_mean 8.34 ns 8.34 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_median 8.14 ns 8.14 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.501 ns 0.501 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_cv 6.01 % 6.01 % 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 12.4 ns 12.4 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.654 ns 0.654 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 5.23 % 5.23 % 10 +stringa s = "123456789"; int res = s.to_int_mean 9.33 ns 9.33 ns 10 +stringa s = "123456789"; int res = s.to_int_median 9.36 ns 9.36 ns 10 +stringa s = "123456789"; int res = s.to_int_stddev 0.166 ns 0.166 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 1.78 % 1.78 % 10 +ssa s = "123456789"; int res = s.to_int_mean 8.06 ns 8.06 ns 10 +ssa s = "123456789"; int res = s.to_int_median 7.97 ns 7.97 ns 10 +ssa s = "123456789"; int res = s.to_int_stddev 0.440 ns 0.440 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 5.46 % 5.46 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 8.31 ns 8.31 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 8.24 ns 8.24 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.310 ns 0.310 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 3.73 % 3.73 % 10 ----- Convert to unsigned 'abcDef' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 23.7 ns 23.7 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 23.6 ns 23.6 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.678 ns 0.678 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 2.86 % 2.86 % 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.81 ns 9.81 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.67 ns 9.67 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.410 ns 0.410 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 4.18 % 4.18 % 10 -stringa s = "abcDef"; int res = s.to_int_mean 8.30 ns 8.30 ns 10 -stringa s = "abcDef"; int res = s.to_int_median 8.31 ns 8.31 ns 10 -stringa s = "abcDef"; int res = s.to_int_stddev 0.239 ns 0.239 ns 10 -stringa s = "abcDef"; int res = s.to_int_cv 2.88 % 2.88 % 10 -ssa s = "abcDef"; int res = s.to_int_mean 7.86 ns 7.86 ns 10 -ssa s = "abcDef"; int res = s.to_int_median 7.88 ns 7.88 ns 10 -ssa s = "abcDef"; int res = s.to_int_stddev 0.104 ns 0.104 ns 10 -ssa s = "abcDef"; int res = s.to_int_cv 1.32 % 1.32 % 10 -lstringa<20> s = "abcDef"; int res = s.to_int_mean 8.11 ns 8.11 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_median 8.11 ns 8.11 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.057 ns 0.057 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_cv 0.71 % 0.71 % 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 23.5 ns 23.5 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.784 ns 0.784 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 3.31 % 3.31 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.69 ns 9.69 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.58 ns 9.58 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.282 ns 0.282 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 2.90 % 2.90 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 8.60 ns 8.60 ns 10 +stringa s = "abcDef"; int res = s.to_int_median 8.54 ns 8.54 ns 10 +stringa s = "abcDef"; int res = s.to_int_stddev 0.263 ns 0.263 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 3.06 % 3.06 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 8.20 ns 8.20 ns 10 +ssa s = "abcDef"; int res = s.to_int_median 7.91 ns 7.91 ns 10 +ssa s = "abcDef"; int res = s.to_int_stddev 0.715 ns 0.715 ns 10 +ssa s = "abcDef"; int res = s.to_int_cv 8.72 % 8.72 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_mean 8.19 ns 8.19 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_median 8.17 ns 8.17 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.206 ns 0.206 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 2.52 % 2.52 % 10 ----- Convert to int ' 1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 29.3 ns 29.3 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 29.0 ns 29.0 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 1.04 ns 1.04 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 3.54 % 3.54 % 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 15.1 ns 15.1 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 15.0 ns 15.0 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.585 ns 0.585 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 3.88 % 3.88 % 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 28.5 ns 28.5 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 28.3 ns 28.3 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 0.859 ns 0.859 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 3.02 % 3.02 % 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 15.0 ns 15.0 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 14.6 ns 14.6 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.593 ns 0.593 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 3.96 % 3.96 % 10 ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 10.8 ns 10.8 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 10.7 ns 10.7 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.242 ns 0.242 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 2.25 % 2.25 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 10.8 ns 10.8 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.259 ns 0.259 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 2.40 % 2.40 % 10 ----- Convert to double '1234.567e10' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 65.1 ns 65.1 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 64.8 ns 64.8 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 2.37 ns 2.37 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 3.64 % 3.64 % 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 24.4 ns 24.4 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 24.3 ns 24.3 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 1.03 ns 1.03 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 4.20 % 4.20 % 10 -ssa s = "1234.567e10"; double res = *s.to_double()_mean 24.7 ns 24.7 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_median 24.2 ns 24.2 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.927 ns 0.927 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_cv 3.76 % 3.76 % 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 65.2 ns 65.2 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 65.6 ns 65.6 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 2.33 ns 2.33 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 3.57 % 3.57 % 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 25.6 ns 25.6 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 24.8 ns 24.8 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 2.31 ns 2.31 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 9.02 % 9.02 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_mean 24.8 ns 24.8 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_median 24.8 ns 24.8 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.638 ns 0.638 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 2.57 % 2.57 % 10 -- Append const literal of 16 bytes 64 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << "abbaabbaabbaabba";_mean 1395 ns 1395 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_median 1401 ns 1401 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 46.8 ns 46.8 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_cv 3.35 % 3.35 % 10 -std::string str; ... str += "abbaabbaabbaabba";_mean 377 ns 377 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_median 381 ns 381 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_stddev 20.6 ns 20.6 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_cv 5.45 % 5.45 % 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 407 ns 407 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_median 401 ns 401 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 28.3 ns 28.3 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 6.96 % 6.96 % 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 267 ns 267 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_median 268 ns 268 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 13.6 ns 13.6 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 5.09 % 5.09 % 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 240 ns 240 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_median 232 ns 232 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 15.7 ns 15.7 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 6.55 % 6.55 % 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 142 ns 142 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 140 ns 140 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 6.01 ns 6.01 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 4.24 % 4.24 % 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 1362 ns 1362 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 1362 ns 1362 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 32.2 ns 32.2 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 2.36 % 2.36 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 368 ns 368 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 356 ns 356 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 30.5 ns 30.5 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 8.30 % 8.30 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 399 ns 399 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 396 ns 396 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 21.8 ns 21.8 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 5.48 % 5.48 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 274 ns 274 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 264 ns 264 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 24.7 ns 24.7 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 9.00 % 9.00 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 254 ns 254 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 248 ns 248 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 21.2 ns 21.2 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 8.37 % 8.37 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 139 ns 139 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 138 ns 138 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 2.30 ns 2.30 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.65 % 1.65 % 10 -- Append string of 16 bytes and const literal of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 1404 ns 1404 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1381 ns 1381 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 56.4 ns 56.4 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 4.02 % 4.02 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1265 ns 1265 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1258 ns 1258 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 41.9 ns 41.9 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 3.31 % 3.31 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 442 ns 442 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 445 ns 445 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 22.2 ns 22.2 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.03 % 5.03 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 376 ns 376 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 367 ns 367 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 19.4 ns 19.4 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.15 % 5.15 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 316 ns 316 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 309 ns 309 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 15.6 ns 15.6 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 4.93 % 4.93 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 247 ns 247 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 246 ns 246 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 5.64 ns 5.64 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.28 % 2.28 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 1381 ns 1381 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1362 ns 1362 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 66.4 ns 66.4 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 4.81 % 4.81 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1279 ns 1279 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1262 ns 1262 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 94.3 ns 94.3 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 7.37 % 7.37 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 475 ns 475 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 471 ns 471 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 28.4 ns 28.4 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.99 % 5.99 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 413 ns 413 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 406 ns 406 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 54.3 ns 54.3 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 13.15 % 13.15 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 323 ns 323 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 324 ns 324 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 19.5 ns 19.5 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 6.05 % 6.05 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 243 ns 243 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 241 ns 241 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 7.61 ns 7.61 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.13 % 3.13 % 10 -- Append string of 16 bytes and const literal of 16 bytes 2048 times, 65536 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 75371 ns 75372 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 75158 ns 75158 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 1425 ns 1425 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 1.89 % 1.89 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 73091 ns 73091 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 72172 ns 72172 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1892 ns 1892 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.59 % 2.59 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 20644 ns 20645 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 20542 ns 20542 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 581 ns 581 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.81 % 2.81 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17277 ns 17278 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17153 ns 17154 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 267 ns 267 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.55 % 1.55 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17504 ns 17504 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17286 ns 17286 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 614 ns 614 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.51 % 3.51 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17482 ns 17482 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17354 ns 17354 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 463 ns 463 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.65 % 2.65 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 75087 ns 75088 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 74409 ns 74409 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 3096 ns 3096 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 4.12 % 4.12 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 74728 ns 74728 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 73562 ns 73561 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 3537 ns 3537 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.73 % 4.73 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 20069 ns 20069 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 19970 ns 19970 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 657 ns 657 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.27 % 3.27 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 19059 ns 19059 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 18980 ns 18980 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1643 ns 1643 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 8.62 % 8.62 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17233 ns 17233 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17184 ns 17184 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 375 ns 375 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.18 % 2.18 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17586 ns 17587 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17252 ns 17252 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1379 ns 1379 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 7.84 % 7.84 % 10 -- Append 2 string of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var1 << str_var2;_mean 1414 ns 1414 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_median 1404 ns 1404 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_stddev 37.7 ns 37.7 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_cv 2.66 % 2.66 % 10 -std::string str; ... str += str_var1 + str_var2;_mean 1409 ns 1409 ns 10 -std::string str; ... str += str_var1 + str_var2;_median 1404 ns 1404 ns 10 -std::string str; ... str += str_var1 + str_var2;_stddev 33.7 ns 33.7 ns 10 -std::string str; ... str += str_var1 + str_var2;_cv 2.39 % 2.39 % 10 -lstringa<16> str; ... str += str_var1 + str_var2;_mean 544 ns 544 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_median 536 ns 536 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_stddev 37.1 ns 37.1 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_cv 6.82 % 6.82 % 10 -lstringa<128> str; ... str += str_var1 + str_var2;_mean 433 ns 433 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_median 427 ns 427 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_stddev 14.5 ns 14.5 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_cv 3.34 % 3.34 % 10 -lstringa<512> str; ... str += str_var1 + str_var2;_mean 417 ns 417 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_median 403 ns 403 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_stddev 34.3 ns 34.3 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_cv 8.23 % 8.23 % 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_mean 316 ns 316 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_median 313 ns 313 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 6.83 ns 6.83 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_cv 2.16 % 2.16 % 10 +std::stringstream str; ... str << str_var1 << str_var2;_mean 1393 ns 1393 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 1369 ns 1369 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 52.1 ns 52.1 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 3.74 % 3.74 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 1436 ns 1436 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 1438 ns 1438 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 39.2 ns 39.2 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 2.73 % 2.73 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 560 ns 560 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_median 548 ns 548 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_stddev 59.5 ns 59.5 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 10.62 % 10.62 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 446 ns 446 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 447 ns 447 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 11.5 ns 11.5 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 2.59 % 2.59 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 400 ns 400 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 397 ns 397 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 15.7 ns 15.7 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 3.92 % 3.92 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 307 ns 307 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 301 ns 301 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 15.5 ns 15.5 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 5.03 % 5.03 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; str << "test = " << k << " times";_mean 2998 ns 2998 ns 10 -std::stringstream str; str << "test = " << k << " times";_median 2967 ns 2967 ns 10 -std::stringstream str; str << "test = " << k << " times";_stddev 81.6 ns 81.6 ns 10 -std::stringstream str; str << "test = " << k << " times";_cv 2.72 % 2.72 % 10 -std::string str = "test = " + std::to_string(k) + " times";_mean 456 ns 456 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_median 454 ns 454 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_stddev 19.8 ns 19.8 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_cv 4.34 % 4.34 % 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1527 ns 1527 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1514 ns 1514 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 90.1 ns 90.1 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 5.90 % 5.90 % 10 -std::string str = std::format("test = {} times", k);_mean 1266 ns 1266 ns 10 -std::string str = std::format("test = {} times", k);_median 1265 ns 1265 ns 10 -std::string str = std::format("test = {} times", k);_stddev 42.0 ns 42.0 ns 10 -std::string str = std::format("test = {} times", k);_cv 3.32 % 3.32 % 10 -lstringa<8> str; str.format("test = {} times", k);_mean 1633 ns 1633 ns 10 -lstringa<8> str; str.format("test = {} times", k);_median 1607 ns 1607 ns 10 -lstringa<8> str; str.format("test = {} times", k);_stddev 70.5 ns 70.5 ns 10 -lstringa<8> str; str.format("test = {} times", k);_cv 4.31 % 4.31 % 10 -lstringa<32> str; str.format("test = {} times", k);_mean 1117 ns 1117 ns 10 -lstringa<32> str; str.format("test = {} times", k);_median 1107 ns 1107 ns 10 -lstringa<32> str; str.format("test = {} times", k);_stddev 44.8 ns 44.8 ns 10 -lstringa<32> str; str.format("test = {} times", k);_cv 4.01 % 4.01 % 10 -lstringa<8> str = "test = " + k + " times";_mean 313 ns 313 ns 10 -lstringa<8> str = "test = " + k + " times";_median 307 ns 307 ns 10 -lstringa<8> str = "test = " + k + " times";_stddev 16.3 ns 16.3 ns 10 -lstringa<8> str = "test = " + k + " times";_cv 5.19 % 5.19 % 10 -lstringa<32> str = "test = " + k + " times";_mean 153 ns 153 ns 10 -lstringa<32> str = "test = " + k + " times";_median 153 ns 153 ns 10 -lstringa<32> str = "test = " + k + " times";_stddev 5.19 ns 5.19 ns 10 -lstringa<32> str = "test = " + k + " times";_cv 3.40 % 3.40 % 10 -stringa str = "test = " + k + " times";_mean 162 ns 162 ns 10 -stringa str = "test = " + k + " times";_median 160 ns 160 ns 10 -stringa str = "test = " + k + " times";_stddev 5.01 ns 5.01 ns 10 -stringa str = "test = " + k + " times";_cv 3.10 % 3.10 % 10 +std::stringstream str; str << "test = " << k << " times";_mean 3076 ns 3076 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 3051 ns 3051 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 142 ns 142 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 4.61 % 4.61 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 470 ns 470 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 460 ns 460 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 34.9 ns 34.9 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 7.43 % 7.43 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1714 ns 1714 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1713 ns 1713 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 125 ns 125 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 7.29 % 7.29 % 10 +std::string str = std::format("test = {} times", k);_mean 1289 ns 1289 ns 10 +std::string str = std::format("test = {} times", k);_median 1302 ns 1302 ns 10 +std::string str = std::format("test = {} times", k);_stddev 50.5 ns 50.5 ns 10 +std::string str = std::format("test = {} times", k);_cv 3.92 % 3.92 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 1588 ns 1588 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 1557 ns 1557 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 61.0 ns 61.0 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 3.84 % 3.84 % 10 +lstringa<32> str; str.format("test = {} times", k);_mean 1059 ns 1059 ns 10 +lstringa<32> str; str.format("test = {} times", k);_median 1055 ns 1055 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 39.9 ns 39.9 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 3.76 % 3.76 % 10 +lstringa<8> str = "test = " + k + " times";_mean 332 ns 332 ns 10 +lstringa<8> str = "test = " + k + " times";_median 326 ns 326 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 17.5 ns 17.5 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 5.28 % 5.28 % 10 +lstringa<32> str = "test = " + k + " times";_mean 160 ns 160 ns 10 +lstringa<32> str = "test = " + k + " times";_median 160 ns 160 ns 10 +lstringa<32> str = "test = " + k + " times";_stddev 3.53 ns 3.53 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 2.20 % 2.20 % 10 +stringa str = "test = " + k + " times";_mean 167 ns 167 ns 10 +stringa str = "test = " + k + " times";_median 163 ns 163 ns 10 +stringa str = "test = " + k + " times";_stddev 11.8 ns 11.8 ns 10 +stringa str = "test = " + k + " times";_cv 7.10 % 7.10 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find + substr + std::strtol_mean 273 ns 273 ns 10 -std::string::find + substr + std::strtol_median 270 ns 270 ns 10 -std::string::find + substr + std::strtol_stddev 9.80 ns 9.80 ns 10 -std::string::find + substr + std::strtol_cv 3.59 % 3.59 % 10 -ssa::splitter + ssa::as_int_mean 135 ns 135 ns 10 -ssa::splitter + ssa::as_int_median 134 ns 134 ns 10 -ssa::splitter + ssa::as_int_stddev 3.01 ns 3.01 ns 10 -ssa::splitter + ssa::as_int_cv 2.23 % 2.23 % 10 +std::string::find + substr + std::strtol_mean 271 ns 271 ns 10 +std::string::find + substr + std::strtol_median 271 ns 271 ns 10 +std::string::find + substr + std::strtol_stddev 10.4 ns 10.4 ns 10 +std::string::find + substr + std::strtol_cv 3.83 % 3.83 % 10 +ssa::splitter + ssa::as_int_mean 133 ns 133 ns 10 +ssa::splitter + ssa::as_int_median 131 ns 131 ns 10 +ssa::splitter + ssa::as_int_stddev 3.27 ns 3.27 ns 10 +ssa::splitter + ssa::as_int_cv 2.46 % 2.46 % 10 ssa::splitf + functor_mean 131 ns 131 ns 10 -ssa::splitf + functor_median 131 ns 131 ns 10 -ssa::splitf + functor_stddev 2.28 ns 2.28 ns 10 -ssa::splitf + functor_cv 1.74 % 1.74 % 10 +ssa::splitf + functor_median 126 ns 126 ns 10 +ssa::splitf + functor_stddev 10.8 ns 10.8 ns 10 +ssa::splitf + functor_cv 8.28 % 8.28 % 10 -- Replace symbols in text ~400 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Naive (and wrong) replace symbols with std::string find + replace_mean 852 ns 852 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_median 850 ns 850 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_stddev 20.9 ns 20.9 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_cv 2.45 % 2.45 % 10 -replace symbols with std::string find_first_of + replace_mean 2378 ns 2378 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_mean 845 ns 845 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 842 ns 842 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 31.9 ns 31.9 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 3.78 % 3.78 % 10 +replace symbols with std::string find_first_of + replace_mean 2401 ns 2401 ns 10 replace symbols with std::string find_first_of + replace_median 2379 ns 2379 ns 10 -replace symbols with std::string find_first_of + replace_stddev 38.1 ns 38.1 ns 10 -replace symbols with std::string find_first_of + replace_cv 1.60 % 1.60 % 10 -replace symbols with std::string_view find_first_of + copy_mean 1037 ns 1037 ns 10 -replace symbols with std::string_view find_first_of + copy_median 1021 ns 1021 ns 10 -replace symbols with std::string_view find_first_of + copy_stddev 35.1 ns 35.1 ns 10 -replace symbols with std::string_view find_first_of + copy_cv 3.38 % 3.38 % 10 -replace runtime symbols with string expressions and without remembering all search results_mean 1465 ns 1465 ns 10 -replace runtime symbols with string expressions and without remembering all search results_median 1452 ns 1452 ns 10 -replace runtime symbols with string expressions and without remembering all search results_stddev 43.1 ns 43.1 ns 10 -replace runtime symbols with string expressions and without remembering all search results_cv 2.95 % 2.95 % 10 -replace runtime symbols with simstr and memorization of all search results_mean 1035 ns 1035 ns 10 -replace runtime symbols with simstr and memorization of all search results_median 1039 ns 1039 ns 10 -replace runtime symbols with simstr and memorization of all search results_stddev 13.7 ns 13.7 ns 10 -replace runtime symbols with simstr and memorization of all search results_cv 1.32 % 1.32 % 10 -replace const symbols with string expressions and without remembering all search results_mean 1231 ns 1231 ns 10 -replace const symbols with string expressions and without remembering all search results_median 1217 ns 1217 ns 10 -replace const symbols with string expressions and without remembering all search results_stddev 51.2 ns 51.2 ns 10 -replace const symbols with string expressions and without remembering all search results_cv 4.16 % 4.16 % 10 -replace const symbols with string expressions and memorization of all search results_mean 919 ns 919 ns 10 -replace const symbols with string expressions and memorization of all search results_median 918 ns 918 ns 10 -replace const symbols with string expressions and memorization of all search results_stddev 54.4 ns 54.5 ns 10 -replace const symbols with string expressions and memorization of all search results_cv 5.93 % 5.93 % 10 +replace symbols with std::string find_first_of + replace_stddev 103 ns 103 ns 10 +replace symbols with std::string find_first_of + replace_cv 4.30 % 4.30 % 10 +replace symbols with std::string_view find_first_of + copy_mean 1157 ns 1157 ns 10 +replace symbols with std::string_view find_first_of + copy_median 1127 ns 1127 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 113 ns 113 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 9.78 % 9.78 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 1495 ns 1495 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 1487 ns 1487 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 60.4 ns 60.4 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 4.04 % 4.04 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 1055 ns 1055 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 1046 ns 1046 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 51.4 ns 51.4 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 4.87 % 4.87 % 10 +replace const symbols with string expressions and without remembering all search results_mean 1238 ns 1238 ns 10 +replace const symbols with string expressions and without remembering all search results_median 1236 ns 1236 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 48.4 ns 48.4 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 3.91 % 3.91 % 10 +replace const symbols with string expressions and memorization of all search results_mean 872 ns 872 ns 10 +replace const symbols with string expressions and memorization of all search results_median 878 ns 878 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 31.4 ns 31.4 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 3.60 % 3.60 % 10 -- Replace symbols in text ~40 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Short Naive (and wrong) replace symbols with std::string find + replace_mean 159 ns 159 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_median 158 ns 158 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_stddev 4.68 ns 4.68 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_cv 2.94 % 2.94 % 10 +Short Naive (and wrong) replace symbols with std::string find + replace_mean 175 ns 175 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 170 ns 170 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 15.2 ns 15.2 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 8.68 % 8.68 % 10 Short replace symbols with std::string find_first_of + replace_mean 319 ns 319 ns 10 -Short replace symbols with std::string find_first_of + replace_median 318 ns 318 ns 10 -Short replace symbols with std::string find_first_of + replace_stddev 6.49 ns 6.49 ns 10 -Short replace symbols with std::string find_first_of + replace_cv 2.03 % 2.03 % 10 -Short replace symbols with std::string_view find_first_of + copy_mean 166 ns 166 ns 10 -Short replace symbols with std::string_view find_first_of + copy_median 165 ns 165 ns 10 -Short replace symbols with std::string_view find_first_of + copy_stddev 6.26 ns 6.26 ns 10 -Short replace symbols with std::string_view find_first_of + copy_cv 3.77 % 3.77 % 10 -Short replace runtime symbols with string expressions and without remembering all search results_mean 196 ns 196 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_median 194 ns 194 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_stddev 6.79 ns 6.79 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_cv 3.46 % 3.46 % 10 -Short replace runtime symbols with simstr and memorization of all search results_mean 211 ns 211 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_median 211 ns 211 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_stddev 8.49 ns 8.49 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_cv 4.03 % 4.03 % 10 -Short replace const symbols with string expressions and without remembering all search results_mean 153 ns 153 ns 10 -Short replace const symbols with string expressions and without remembering all search results_median 151 ns 151 ns 10 -Short replace const symbols with string expressions and without remembering all search results_stddev 4.63 ns 4.63 ns 10 -Short replace const symbols with string expressions and without remembering all search results_cv 3.04 % 3.04 % 10 -Short replace const symbols with string expressions and memorization of all search results_mean 146 ns 146 ns 10 -Short replace const symbols with string expressions and memorization of all search results_median 144 ns 144 ns 10 -Short replace const symbols with string expressions and memorization of all search results_stddev 4.77 ns 4.77 ns 10 -Short replace const symbols with string expressions and memorization of all search results_cv 3.26 % 3.26 % 10 +Short replace symbols with std::string find_first_of + replace_median 320 ns 320 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 5.69 ns 5.69 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 1.79 % 1.79 % 10 +Short replace symbols with std::string_view find_first_of + copy_mean 183 ns 183 ns 10 +Short replace symbols with std::string_view find_first_of + copy_median 179 ns 179 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 8.97 ns 8.97 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 4.91 % 4.91 % 10 +Short replace runtime symbols with string expressions and without remembering all search results_mean 225 ns 225 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_median 225 ns 225 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 7.70 ns 7.70 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 3.43 % 3.43 % 10 +Short replace runtime symbols with simstr and memorization of all search results_mean 206 ns 206 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_median 204 ns 204 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 7.76 ns 7.76 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 3.77 % 3.77 % 10 +Short replace const symbols with string expressions and without remembering all search results_mean 162 ns 162 ns 10 +Short replace const symbols with string expressions and without remembering all search results_median 161 ns 161 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 3.93 ns 3.93 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 2.43 % 2.43 % 10 +Short replace const symbols with string expressions and memorization of all search results_mean 156 ns 156 ns 10 +Short replace const symbols with string expressions and memorization of all search results_median 156 ns 156 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 4.64 ns 4.64 ns 10 +Short replace const symbols with string expressions and memorization of all search results_cv 2.97 % 2.97 % 10 ----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to ---- in std::string|64_mean 172 ns 172 ns 10 -replace bb to ---- in std::string|64_median 170 ns 170 ns 10 -replace bb to ---- in std::string|64_stddev 9.48 ns 9.48 ns 10 -replace bb to ---- in std::string|64_cv 5.52 % 5.52 % 10 -replace bb to ---- in std::string|256_mean 510 ns 510 ns 10 -replace bb to ---- in std::string|256_median 509 ns 509 ns 10 -replace bb to ---- in std::string|256_stddev 18.2 ns 18.2 ns 10 -replace bb to ---- in std::string|256_cv 3.57 % 3.57 % 10 -replace bb to ---- in std::string|512_mean 989 ns 989 ns 10 -replace bb to ---- in std::string|512_median 975 ns 975 ns 10 -replace bb to ---- in std::string|512_stddev 34.2 ns 34.2 ns 10 -replace bb to ---- in std::string|512_cv 3.46 % 3.46 % 10 -replace bb to ---- in std::string|1024_mean 2308 ns 2308 ns 10 -replace bb to ---- in std::string|1024_median 2290 ns 2290 ns 10 -replace bb to ---- in std::string|1024_stddev 157 ns 157 ns 10 -replace bb to ---- in std::string|1024_cv 6.79 % 6.79 % 10 -replace bb to ---- in std::string|2048_mean 5824 ns 5824 ns 10 -replace bb to ---- in std::string|2048_median 5566 ns 5566 ns 10 -replace bb to ---- in std::string|2048_stddev 463 ns 463 ns 10 -replace bb to ---- in std::string|2048_cv 7.94 % 7.94 % 10 -replace bb to ---- in lstringa<8>|64_mean 161 ns 161 ns 10 -replace bb to ---- in lstringa<8>|64_median 162 ns 162 ns 10 -replace bb to ---- in lstringa<8>|64_stddev 7.73 ns 7.73 ns 10 -replace bb to ---- in lstringa<8>|64_cv 4.78 % 4.78 % 10 -replace bb to ---- in lstringa<8>|256_mean 462 ns 462 ns 10 -replace bb to ---- in lstringa<8>|256_median 461 ns 461 ns 10 -replace bb to ---- in lstringa<8>|256_stddev 12.7 ns 12.7 ns 10 -replace bb to ---- in lstringa<8>|256_cv 2.75 % 2.75 % 10 -replace bb to ---- in lstringa<8>|512_mean 882 ns 882 ns 10 -replace bb to ---- in lstringa<8>|512_median 876 ns 876 ns 10 -replace bb to ---- in lstringa<8>|512_stddev 33.2 ns 33.2 ns 10 -replace bb to ---- in lstringa<8>|512_cv 3.77 % 3.77 % 10 -replace bb to ---- in lstringa<8>|1024_mean 1827 ns 1827 ns 10 -replace bb to ---- in lstringa<8>|1024_median 1824 ns 1824 ns 10 -replace bb to ---- in lstringa<8>|1024_stddev 87.4 ns 87.4 ns 10 -replace bb to ---- in lstringa<8>|1024_cv 4.78 % 4.78 % 10 -replace bb to ---- in lstringa<8>|2048_mean 3363 ns 3363 ns 10 -replace bb to ---- in lstringa<8>|2048_median 3353 ns 3353 ns 10 -replace bb to ---- in lstringa<8>|2048_stddev 123 ns 123 ns 10 -replace bb to ---- in lstringa<8>|2048_cv 3.65 % 3.65 % 10 -replace bb to ---- by init stringa|64_mean 104 ns 104 ns 10 -replace bb to ---- by init stringa|64_median 103 ns 103 ns 10 -replace bb to ---- by init stringa|64_stddev 3.90 ns 3.90 ns 10 -replace bb to ---- by init stringa|64_cv 3.75 % 3.75 % 10 -replace bb to ---- by init stringa|256_mean 299 ns 299 ns 10 -replace bb to ---- by init stringa|256_median 299 ns 299 ns 10 -replace bb to ---- by init stringa|256_stddev 10.9 ns 10.9 ns 10 -replace bb to ---- by init stringa|256_cv 3.65 % 3.65 % 10 -replace bb to ---- by init stringa|512_mean 733 ns 733 ns 10 -replace bb to ---- by init stringa|512_median 732 ns 732 ns 10 -replace bb to ---- by init stringa|512_stddev 19.5 ns 19.5 ns 10 -replace bb to ---- by init stringa|512_cv 2.66 % 2.66 % 10 -replace bb to ---- by init stringa|1024_mean 1625 ns 1625 ns 10 -replace bb to ---- by init stringa|1024_median 1616 ns 1616 ns 10 -replace bb to ---- by init stringa|1024_stddev 31.3 ns 31.3 ns 10 -replace bb to ---- by init stringa|1024_cv 1.92 % 1.92 % 10 -replace bb to ---- by init stringa|2048_mean 3339 ns 3339 ns 10 -replace bb to ---- by init stringa|2048_median 3303 ns 3304 ns 10 -replace bb to ---- by init stringa|2048_stddev 111 ns 111 ns 10 -replace bb to ---- by init stringa|2048_cv 3.33 % 3.33 % 10 +replace bb to ---- in std::string|64_mean 164 ns 164 ns 10 +replace bb to ---- in std::string|64_median 168 ns 168 ns 10 +replace bb to ---- in std::string|64_stddev 7.02 ns 7.02 ns 10 +replace bb to ---- in std::string|64_cv 4.28 % 4.28 % 10 +replace bb to ---- in std::string|256_mean 492 ns 492 ns 10 +replace bb to ---- in std::string|256_median 483 ns 483 ns 10 +replace bb to ---- in std::string|256_stddev 13.6 ns 13.6 ns 10 +replace bb to ---- in std::string|256_cv 2.76 % 2.76 % 10 +replace bb to ---- in std::string|512_mean 1119 ns 1119 ns 10 +replace bb to ---- in std::string|512_median 1123 ns 1123 ns 10 +replace bb to ---- in std::string|512_stddev 101 ns 101 ns 10 +replace bb to ---- in std::string|512_cv 9.01 % 9.01 % 10 +replace bb to ---- in std::string|1024_mean 2211 ns 2211 ns 10 +replace bb to ---- in std::string|1024_median 2166 ns 2166 ns 10 +replace bb to ---- in std::string|1024_stddev 152 ns 152 ns 10 +replace bb to ---- in std::string|1024_cv 6.87 % 6.87 % 10 +replace bb to ---- in std::string|2048_mean 5959 ns 5959 ns 10 +replace bb to ---- in std::string|2048_median 5793 ns 5793 ns 10 +replace bb to ---- in std::string|2048_stddev 471 ns 471 ns 10 +replace bb to ---- in std::string|2048_cv 7.90 % 7.90 % 10 +replace bb to ---- in lstringa<8>|64_mean 148 ns 148 ns 10 +replace bb to ---- in lstringa<8>|64_median 146 ns 146 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 7.41 ns 7.41 ns 10 +replace bb to ---- in lstringa<8>|64_cv 5.01 % 5.01 % 10 +replace bb to ---- in lstringa<8>|256_mean 485 ns 485 ns 10 +replace bb to ---- in lstringa<8>|256_median 486 ns 486 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 18.3 ns 18.3 ns 10 +replace bb to ---- in lstringa<8>|256_cv 3.76 % 3.76 % 10 +replace bb to ---- in lstringa<8>|512_mean 893 ns 893 ns 10 +replace bb to ---- in lstringa<8>|512_median 885 ns 885 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 50.3 ns 50.3 ns 10 +replace bb to ---- in lstringa<8>|512_cv 5.64 % 5.64 % 10 +replace bb to ---- in lstringa<8>|1024_mean 1845 ns 1845 ns 10 +replace bb to ---- in lstringa<8>|1024_median 1827 ns 1827 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 82.0 ns 82.0 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 4.44 % 4.44 % 10 +replace bb to ---- in lstringa<8>|2048_mean 3614 ns 3614 ns 10 +replace bb to ---- in lstringa<8>|2048_median 3507 ns 3507 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 378 ns 378 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 10.46 % 10.46 % 10 +replace bb to ---- by init stringa|64_mean 110 ns 110 ns 10 +replace bb to ---- by init stringa|64_median 111 ns 111 ns 10 +replace bb to ---- by init stringa|64_stddev 13.0 ns 13.0 ns 10 +replace bb to ---- by init stringa|64_cv 11.74 % 11.74 % 10 +replace bb to ---- by init stringa|256_mean 305 ns 305 ns 10 +replace bb to ---- by init stringa|256_median 305 ns 305 ns 10 +replace bb to ---- by init stringa|256_stddev 6.14 ns 6.14 ns 10 +replace bb to ---- by init stringa|256_cv 2.01 % 2.01 % 10 +replace bb to ---- by init stringa|512_mean 751 ns 752 ns 10 +replace bb to ---- by init stringa|512_median 740 ns 740 ns 10 +replace bb to ---- by init stringa|512_stddev 24.4 ns 23.4 ns 10 +replace bb to ---- by init stringa|512_cv 3.26 % 3.12 % 10 +replace bb to ---- by init stringa|1024_mean 1630 ns 1630 ns 10 +replace bb to ---- by init stringa|1024_median 1632 ns 1632 ns 10 +replace bb to ---- by init stringa|1024_stddev 29.0 ns 29.0 ns 10 +replace bb to ---- by init stringa|1024_cv 1.78 % 1.78 % 10 +replace bb to ---- by init stringa|2048_mean 3440 ns 3440 ns 10 +replace bb to ---- by init stringa|2048_median 3418 ns 3418 ns 10 +replace bb to ---- by init stringa|2048_stddev 162 ns 162 ns 10 +replace bb to ---- by init stringa|2048_cv 4.72 % 4.72 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to -- in std::string|64_mean 115 ns 115 ns 10 -replace bb to -- in std::string|64_median 114 ns 114 ns 10 -replace bb to -- in std::string|64_stddev 3.33 ns 3.33 ns 10 -replace bb to -- in std::string|64_cv 2.88 % 2.88 % 10 -replace bb to -- in std::string|256_mean 367 ns 367 ns 10 -replace bb to -- in std::string|256_median 361 ns 361 ns 10 -replace bb to -- in std::string|256_stddev 14.7 ns 14.7 ns 10 -replace bb to -- in std::string|256_cv 4.01 % 4.01 % 10 -replace bb to -- in std::string|512_mean 733 ns 733 ns 10 -replace bb to -- in std::string|512_median 728 ns 728 ns 10 -replace bb to -- in std::string|512_stddev 15.0 ns 15.0 ns 10 -replace bb to -- in std::string|512_cv 2.04 % 2.04 % 10 -replace bb to -- in std::string|1024_mean 1409 ns 1409 ns 10 -replace bb to -- in std::string|1024_median 1378 ns 1378 ns 10 -replace bb to -- in std::string|1024_stddev 79.1 ns 79.1 ns 10 -replace bb to -- in std::string|1024_cv 5.61 % 5.61 % 10 -replace bb to -- in std::string|2048_mean 2902 ns 2902 ns 10 -replace bb to -- in std::string|2048_median 2875 ns 2875 ns 10 -replace bb to -- in std::string|2048_stddev 125 ns 125 ns 10 -replace bb to -- in std::string|2048_cv 4.32 % 4.32 % 10 -replace bb to -- in lstringa<8>|64_mean 103 ns 103 ns 10 -replace bb to -- in lstringa<8>|64_median 105 ns 105 ns 10 -replace bb to -- in lstringa<8>|64_stddev 4.91 ns 4.91 ns 10 -replace bb to -- in lstringa<8>|64_cv 4.76 % 4.76 % 10 -replace bb to -- in lstringa<8>|256_mean 299 ns 299 ns 10 -replace bb to -- in lstringa<8>|256_median 297 ns 297 ns 10 -replace bb to -- in lstringa<8>|256_stddev 9.27 ns 9.27 ns 10 -replace bb to -- in lstringa<8>|256_cv 3.10 % 3.10 % 10 -replace bb to -- in lstringa<8>|512_mean 548 ns 548 ns 10 -replace bb to -- in lstringa<8>|512_median 540 ns 540 ns 10 -replace bb to -- in lstringa<8>|512_stddev 16.4 ns 16.4 ns 10 -replace bb to -- in lstringa<8>|512_cv 3.00 % 3.00 % 10 -replace bb to -- in lstringa<8>|1024_mean 1133 ns 1133 ns 10 -replace bb to -- in lstringa<8>|1024_median 1117 ns 1117 ns 10 -replace bb to -- in lstringa<8>|1024_stddev 48.3 ns 48.3 ns 10 -replace bb to -- in lstringa<8>|1024_cv 4.26 % 4.26 % 10 -replace bb to -- in lstringa<8>|2048_mean 2150 ns 2150 ns 10 -replace bb to -- in lstringa<8>|2048_median 2140 ns 2140 ns 10 -replace bb to -- in lstringa<8>|2048_stddev 62.9 ns 62.9 ns 10 -replace bb to -- in lstringa<8>|2048_cv 2.93 % 2.93 % 10 -replace bb to -- by init stringa|64_mean 93.9 ns 93.9 ns 10 -replace bb to -- by init stringa|64_median 93.1 ns 93.1 ns 10 -replace bb to -- by init stringa|64_stddev 2.83 ns 2.83 ns 10 -replace bb to -- by init stringa|64_cv 3.01 % 3.01 % 10 -replace bb to -- by init stringa|256_mean 275 ns 275 ns 10 -replace bb to -- by init stringa|256_median 278 ns 278 ns 10 -replace bb to -- by init stringa|256_stddev 5.58 ns 5.58 ns 10 -replace bb to -- by init stringa|256_cv 2.03 % 2.03 % 10 -replace bb to -- by init stringa|512_mean 498 ns 498 ns 10 -replace bb to -- by init stringa|512_median 496 ns 496 ns 10 -replace bb to -- by init stringa|512_stddev 9.03 ns 9.03 ns 10 -replace bb to -- by init stringa|512_cv 1.81 % 1.81 % 10 -replace bb to -- by init stringa|1024_mean 1033 ns 1033 ns 10 -replace bb to -- by init stringa|1024_median 1031 ns 1031 ns 10 -replace bb to -- by init stringa|1024_stddev 17.6 ns 17.6 ns 10 -replace bb to -- by init stringa|1024_cv 1.70 % 1.70 % 10 -replace bb to -- by init stringa|2048_mean 1981 ns 1981 ns 10 -replace bb to -- by init stringa|2048_median 1976 ns 1976 ns 10 -replace bb to -- by init stringa|2048_stddev 41.8 ns 41.8 ns 10 -replace bb to -- by init stringa|2048_cv 2.11 % 2.11 % 10 +replace bb to -- in std::string|64_mean 118 ns 118 ns 10 +replace bb to -- in std::string|64_median 118 ns 118 ns 10 +replace bb to -- in std::string|64_stddev 3.11 ns 3.11 ns 10 +replace bb to -- in std::string|64_cv 2.63 % 2.63 % 10 +replace bb to -- in std::string|256_mean 418 ns 418 ns 10 +replace bb to -- in std::string|256_median 408 ns 408 ns 10 +replace bb to -- in std::string|256_stddev 50.6 ns 50.6 ns 10 +replace bb to -- in std::string|256_cv 12.10 % 12.10 % 10 +replace bb to -- in std::string|512_mean 773 ns 773 ns 10 +replace bb to -- in std::string|512_median 747 ns 747 ns 10 +replace bb to -- in std::string|512_stddev 70.5 ns 70.5 ns 10 +replace bb to -- in std::string|512_cv 9.12 % 9.12 % 10 +replace bb to -- in std::string|1024_mean 1538 ns 1538 ns 10 +replace bb to -- in std::string|1024_median 1556 ns 1556 ns 10 +replace bb to -- in std::string|1024_stddev 133 ns 133 ns 10 +replace bb to -- in std::string|1024_cv 8.65 % 8.65 % 10 +replace bb to -- in std::string|2048_mean 2919 ns 2919 ns 10 +replace bb to -- in std::string|2048_median 2914 ns 2914 ns 10 +replace bb to -- in std::string|2048_stddev 56.1 ns 56.1 ns 10 +replace bb to -- in std::string|2048_cv 1.92 % 1.92 % 10 +replace bb to -- in lstringa<8>|64_mean 100 ns 100 ns 10 +replace bb to -- in lstringa<8>|64_median 102 ns 102 ns 10 +replace bb to -- in lstringa<8>|64_stddev 4.32 ns 4.32 ns 10 +replace bb to -- in lstringa<8>|64_cv 4.31 % 4.31 % 10 +replace bb to -- in lstringa<8>|256_mean 298 ns 298 ns 10 +replace bb to -- in lstringa<8>|256_median 290 ns 290 ns 10 +replace bb to -- in lstringa<8>|256_stddev 22.6 ns 22.6 ns 10 +replace bb to -- in lstringa<8>|256_cv 7.58 % 7.58 % 10 +replace bb to -- in lstringa<8>|512_mean 551 ns 551 ns 10 +replace bb to -- in lstringa<8>|512_median 548 ns 548 ns 10 +replace bb to -- in lstringa<8>|512_stddev 25.9 ns 25.9 ns 10 +replace bb to -- in lstringa<8>|512_cv 4.70 % 4.70 % 10 +replace bb to -- in lstringa<8>|1024_mean 1105 ns 1105 ns 10 +replace bb to -- in lstringa<8>|1024_median 1094 ns 1094 ns 10 +replace bb to -- in lstringa<8>|1024_stddev 41.5 ns 41.5 ns 10 +replace bb to -- in lstringa<8>|1024_cv 3.76 % 3.76 % 10 +replace bb to -- in lstringa<8>|2048_mean 2117 ns 2117 ns 10 +replace bb to -- in lstringa<8>|2048_median 2123 ns 2124 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 72.1 ns 72.1 ns 10 +replace bb to -- in lstringa<8>|2048_cv 3.41 % 3.41 % 10 +replace bb to -- by init stringa|64_mean 95.6 ns 95.6 ns 10 +replace bb to -- by init stringa|64_median 92.9 ns 92.9 ns 10 +replace bb to -- by init stringa|64_stddev 6.38 ns 6.38 ns 10 +replace bb to -- by init stringa|64_cv 6.68 % 6.68 % 10 +replace bb to -- by init stringa|256_mean 270 ns 270 ns 10 +replace bb to -- by init stringa|256_median 266 ns 266 ns 10 +replace bb to -- by init stringa|256_stddev 9.47 ns 9.47 ns 10 +replace bb to -- by init stringa|256_cv 3.50 % 3.50 % 10 +replace bb to -- by init stringa|512_mean 553 ns 553 ns 10 +replace bb to -- by init stringa|512_median 544 ns 544 ns 10 +replace bb to -- by init stringa|512_stddev 56.9 ns 56.9 ns 10 +replace bb to -- by init stringa|512_cv 10.28 % 10.28 % 10 +replace bb to -- by init stringa|1024_mean 1031 ns 1031 ns 10 +replace bb to -- by init stringa|1024_median 1022 ns 1022 ns 10 +replace bb to -- by init stringa|1024_stddev 30.1 ns 30.1 ns 10 +replace bb to -- by init stringa|1024_cv 2.92 % 2.92 % 10 +replace bb to -- by init stringa|2048_mean 1966 ns 1966 ns 10 +replace bb to -- by init stringa|2048_median 1965 ns 1965 ns 10 +replace bb to -- by init stringa|2048_stddev 38.2 ns 38.2 ns 10 +replace bb to -- by init stringa|2048_cv 1.94 % 1.94 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -hashStrMapA emplace & find stringa;_mean 3750693 ns 3750707 ns 10 -hashStrMapA emplace & find stringa;_median 3737012 ns 3737025 ns 10 -hashStrMapA emplace & find stringa;_stddev 75686 ns 75686 ns 10 -hashStrMapA emplace & find stringa;_cv 2.02 % 2.02 % 10 -std::unordered_map emplace & find std::string;_mean 3625926 ns 3625926 ns 10 -std::unordered_map emplace & find std::string;_median 3622724 ns 3622735 ns 10 -std::unordered_map emplace & find std::string;_stddev 84320 ns 84319 ns 10 -std::unordered_map emplace & find std::string;_cv 2.33 % 2.33 % 10 -hashStrMapA emplace & find ssa;_mean 3687972 ns 3687966 ns 10 -hashStrMapA emplace & find ssa;_median 3673688 ns 3673702 ns 10 -hashStrMapA emplace & find ssa;_stddev 47692 ns 47693 ns 10 -hashStrMapA emplace & find ssa;_cv 1.29 % 1.29 % 10 -std::unordered_map emplace & find std::string_view;_mean 3937773 ns 3937779 ns 10 -std::unordered_map emplace & find std::string_view;_median 3921638 ns 3921649 ns 10 -std::unordered_map emplace & find std::string_view;_stddev 90680 ns 90669 ns 10 -std::unordered_map emplace & find std::string_view;_cv 2.30 % 2.30 % 10 +hashStrMapA emplace & find stringa;_mean 3722226 ns 3722240 ns 10 +hashStrMapA emplace & find stringa;_median 3726028 ns 3726040 ns 10 +hashStrMapA emplace & find stringa;_stddev 72547 ns 72547 ns 10 +hashStrMapA emplace & find stringa;_cv 1.95 % 1.95 % 10 +std::unordered_map emplace & find std::string;_mean 3711685 ns 3711658 ns 10 +std::unordered_map emplace & find std::string;_median 3695646 ns 3695658 ns 10 +std::unordered_map emplace & find std::string;_stddev 102501 ns 102437 ns 10 +std::unordered_map emplace & find std::string;_cv 2.76 % 2.76 % 10 +hashStrMapA emplace & find ssa;_mean 3706802 ns 3706817 ns 10 +hashStrMapA emplace & find ssa;_median 3698296 ns 3698309 ns 10 +hashStrMapA emplace & find ssa;_stddev 57482 ns 57482 ns 10 +hashStrMapA emplace & find ssa;_cv 1.55 % 1.55 % 10 +std::unordered_map emplace & find std::string_view;_mean 4055890 ns 4055903 ns 10 +std::unordered_map emplace & find std::string_view;_median 4024701 ns 4024711 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 133788 ns 133788 ns 10 +std::unordered_map emplace & find std::string_view;_cv 3.30 % 3.30 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Build func full name std::string;_mean 966 ns 966 ns 10 -Build func full name std::string;_median 965 ns 965 ns 10 -Build func full name std::string;_stddev 18.9 ns 18.9 ns 10 -Build func full name std::string;_cv 1.96 % 1.96 % 10 -Build func full name std::string 1;_mean 1010 ns 1010 ns 10 -Build func full name std::string 1;_median 1001 ns 1001 ns 10 -Build func full name std::string 1;_stddev 28.9 ns 28.9 ns 10 -Build func full name std::string 1;_cv 2.86 % 2.86 % 10 -Build func full name std::stream;_mean 2613 ns 2613 ns 10 -Build func full name std::stream;_median 2577 ns 2578 ns 10 -Build func full name std::stream;_stddev 69.2 ns 69.2 ns 10 -Build func full name std::stream;_cv 2.65 % 2.65 % 10 -Build func full name stringa;_mean 465 ns 465 ns 10 -Build func full name stringa;_median 460 ns 460 ns 10 -Build func full name stringa;_stddev 16.9 ns 16.9 ns 10 -Build func full name stringa;_cv 3.64 % 3.64 % 10 -Build func full name stringa 1;_mean 682 ns 682 ns 10 -Build func full name stringa 1;_median 677 ns 677 ns 10 -Build func full name stringa 1;_stddev 17.3 ns 17.3 ns 10 -Build func full name stringa 1;_cv 2.54 % 2.54 % 10 +Build func full name std::string;_mean 943 ns 943 ns 10 +Build func full name std::string;_median 943 ns 943 ns 10 +Build func full name std::string;_stddev 41.8 ns 41.8 ns 10 +Build func full name std::string;_cv 4.44 % 4.44 % 10 +Build func full name std::string 1;_mean 1022 ns 1022 ns 10 +Build func full name std::string 1;_median 1021 ns 1021 ns 10 +Build func full name std::string 1;_stddev 38.0 ns 38.0 ns 10 +Build func full name std::string 1;_cv 3.72 % 3.72 % 10 +Build func full name std::stream;_mean 2671 ns 2671 ns 10 +Build func full name std::stream;_median 2617 ns 2617 ns 10 +Build func full name std::stream;_stddev 224 ns 224 ns 10 +Build func full name std::stream;_cv 8.37 % 8.37 % 10 +Build func full name stringa;_mean 612 ns 612 ns 10 +Build func full name stringa;_median 597 ns 597 ns 10 +Build func full name stringa;_stddev 42.2 ns 42.2 ns 10 +Build func full name stringa;_cv 6.89 % 6.89 % 10 +Build func full name stringa 1;_mean 657 ns 657 ns 10 +Build func full name stringa 1;_median 650 ns 650 ns 10 +Build func full name stringa 1;_stddev 38.8 ns 38.8 ns 10 +Build func full name stringa 1;_cv 5.90 % 5.90 % 10 diff --git a/bench/results/002-Xeon E5-2682 v4, Windows 10, Clang-19.txt b/bench/results/002-Xeon E5-2682 v4, Windows 10, Clang-19.txt index 5ab6d8c..59bf7da 100644 --- a/bench/results/002-Xeon E5-2682 v4, Windows 10, Clang-19.txt +++ b/bench/results/002-Xeon E5-2682 v4, Windows 10, Clang-19.txt @@ -1,4 +1,4 @@ -2026-01-21T00:24:03+03:00 +2026-01-29T19:33:03+03:00 Running benchStr.exe Run on (32 X 2494 MHz CPU s) CPU Caches: @@ -10,867 +10,879 @@ CPU Caches: Benchmark Time CPU Iterations -------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and number by std to std::string_mean 266 ns 265 ns 10 -Concat std::string and number by std to std::string_median 265 ns 265 ns 10 -Concat std::string and number by std to std::string_stddev 6.17 ns 4.74 ns 10 -Concat std::string and number by std to std::string_cv 2.32 % 1.79 % 10 -Concat std::string and number by StrExpr to std::string_mean 157 ns 156 ns 10 -Concat std::string and number by StrExpr to std::string_median 157 ns 157 ns 10 -Concat std::string and number by StrExpr to std::string_stddev 5.39 ns 6.16 ns 10 -Concat std::string and number by StrExpr to std::string_cv 3.43 % 3.95 % 10 -Concat stringa and number by StrExpr to simstr::stringa_mean 66.4 ns 66.3 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_median 66.7 ns 67.0 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_stddev 1.30 ns 1.77 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_cv 1.96 % 2.67 % 10 +Concat std::string and number by std to std::string_mean 265 ns 261 ns 10 +Concat std::string and number by std to std::string_median 262 ns 261 ns 10 +Concat std::string and number by std to std::string_stddev 6.94 ns 7.10 ns 10 +Concat std::string and number by std to std::string_cv 2.63 % 2.71 % 10 +Concat std::string and number by StrExpr to std::string_mean 178 ns 178 ns 10 +Concat std::string and number by StrExpr to std::string_median 178 ns 178 ns 10 +Concat std::string and number by StrExpr to std::string_stddev 13.8 ns 13.8 ns 10 +Concat std::string and number by StrExpr to std::string_cv 7.79 % 7.77 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 66.5 ns 66.1 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_median 66.1 ns 66.3 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_stddev 1.69 ns 2.09 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 2.54 % 3.16 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 74.9 ns 74.5 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 73.9 ns 74.1 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 3.72 ns 3.29 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 4.97 % 4.42 % 10 ----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and hex number by std to std::string_mean 777 ns 766 ns 10 -Concat std::string and hex number by std to std::string_median 773 ns 750 ns 10 -Concat std::string and hex number by std to std::string_stddev 30.7 ns 35.3 ns 10 -Concat std::string and hex number by std to std::string_cv 3.95 % 4.61 % 10 -Concat std::string and hex number by StrExpr to std::string_mean 76.6 ns 76.5 ns 10 -Concat std::string and hex number by StrExpr to std::string_median 76.2 ns 76.0 ns 10 -Concat std::string and hex number by StrExpr to std::string_stddev 1.72 ns 1.71 ns 10 -Concat std::string and hex number by StrExpr to std::string_cv 2.25 % 2.24 % 10 -Concat stringa and hex number by StrExpr to simstr::stringa_mean 67.9 ns 67.8 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_median 67.4 ns 67.0 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_stddev 1.81 ns 1.64 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_cv 2.67 % 2.42 % 10 +Concat std::string and hex number by std to std::string_mean 1518 ns 1510 ns 10 +Concat std::string and hex number by std to std::string_median 1521 ns 1500 ns 10 +Concat std::string and hex number by std to std::string_stddev 43.0 ns 52.1 ns 10 +Concat std::string and hex number by std to std::string_cv 2.83 % 3.45 % 10 +Concat std::string and hex number by StrExpr to std::string_mean 81.0 ns 80.9 ns 10 +Concat std::string and hex number by StrExpr to std::string_median 80.3 ns 80.2 ns 10 +Concat std::string and hex number by StrExpr to std::string_stddev 3.01 ns 3.87 ns 10 +Concat std::string and hex number by StrExpr to std::string_cv 3.71 % 4.79 % 10 +Concat stringa and hex number by StrExpr to simstr::stringa_mean 76.6 ns 75.5 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_median 76.0 ns 75.9 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_stddev 5.48 ns 6.10 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_cv 7.16 % 8.08 % 10 +Concat stringa and hex number by e_concat to simstr::stringa_mean 78.3 ns 77.8 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_median 77.5 ns 76.7 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_stddev 3.97 ns 3.20 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_cv 5.08 % 4.12 % 10 +Concat stringa and hex number by e_subst to simstr::stringa_mean 150 ns 149 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_median 149 ns 146 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_stddev 7.28 ns 7.72 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_cv 4.85 % 5.18 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string by std to std::string_mean 39.8 ns 39.4 ns 10 -Concat std::string by std to std::string_median 39.8 ns 39.9 ns 10 -Concat std::string by std to std::string_stddev 1.29 ns 1.07 ns 10 -Concat std::string by std to std::string_cv 3.25 % 2.71 % 10 -Concat std::string by StrExpr to std::string_mean 39.1 ns 39.0 ns 10 -Concat std::string by StrExpr to std::string_median 39.1 ns 38.5 ns 10 -Concat std::string by StrExpr to std::string_stddev 1.05 ns 0.900 ns 10 -Concat std::string by StrExpr to std::string_cv 2.69 % 2.31 % 10 -Concat stringa by StrExpr to stringa_mean 29.2 ns 29.1 ns 10 -Concat stringa by StrExpr to stringa_median 28.7 ns 28.5 ns 10 -Concat stringa by StrExpr to stringa_stddev 1.18 ns 1.22 ns 10 -Concat stringa by StrExpr to stringa_cv 4.04 % 4.19 % 10 +Concat std::string by std to std::string_mean 40.1 ns 39.8 ns 10 +Concat std::string by std to std::string_median 40.3 ns 39.8 ns 10 +Concat std::string by std to std::string_stddev 1.11 ns 1.26 ns 10 +Concat std::string by std to std::string_cv 2.77 % 3.16 % 10 +Concat std::string by StrExpr to std::string_mean 39.4 ns 39.1 ns 10 +Concat std::string by StrExpr to std::string_median 38.6 ns 38.4 ns 10 +Concat std::string by StrExpr to std::string_stddev 1.51 ns 1.47 ns 10 +Concat std::string by StrExpr to std::string_cv 3.83 % 3.76 % 10 +Concat stringa by StrExpr to stringa_mean 28.7 ns 28.5 ns 10 +Concat stringa by StrExpr to stringa_median 29.0 ns 28.5 ns 10 +Concat stringa by StrExpr to stringa_stddev 0.620 ns 0.699 ns 10 +Concat stringa by StrExpr to stringa_cv 2.16 % 2.45 % 10 ----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Find concat three std::string_mean 208 ns 206 ns 10 -Find concat three std::string_median 205 ns 206 ns 10 -Find concat three std::string_stddev 6.54 ns 5.76 ns 10 -Find concat three std::string_cv 3.15 % 2.79 % 10 -Find concat three strexpr_mean 116 ns 115 ns 10 -Find concat three strexpr_median 115 ns 114 ns 10 -Find concat three strexpr_stddev 3.41 ns 3.45 ns 10 -Find concat three strexpr_cv 2.95 % 3.01 % 10 -Find concat three simstr_mean 22.2 ns 22.0 ns 10 -Find concat three simstr_median 22.2 ns 22.0 ns 10 -Find concat three simstr_stddev 0.690 ns 0.537 ns 10 -Find concat three simstr_cv 3.11 % 2.44 % 10 +Find concat three std::string_mean 205 ns 204 ns 10 +Find concat three std::string_median 205 ns 204 ns 10 +Find concat three std::string_stddev 5.53 ns 6.21 ns 10 +Find concat three std::string_cv 2.69 % 3.05 % 10 +Find concat three strexpr_mean 114 ns 114 ns 10 +Find concat three strexpr_median 113 ns 114 ns 10 +Find concat three strexpr_stddev 2.57 ns 2.64 ns 10 +Find concat three strexpr_cv 2.26 % 2.32 % 10 +Find concat three simstr_mean 21.5 ns 21.5 ns 10 +Find concat three simstr_median 21.2 ns 21.2 ns 10 +Find concat three simstr_stddev 0.643 ns 0.669 ns 10 +Find concat three simstr_cv 2.99 % 3.11 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -BuildTypeNameStr 0/0_mean 8.25 ns 8.14 ns 10 -BuildTypeNameStr 0/0_median 8.21 ns 8.11 ns 10 -BuildTypeNameStr 0/0_stddev 0.223 ns 0.273 ns 10 -BuildTypeNameStr 0/0_cv 2.71 % 3.36 % 10 -BuildTypeNameExp 0/0_mean 7.50 ns 7.50 ns 10 -BuildTypeNameExp 0/0_median 7.41 ns 7.41 ns 10 -BuildTypeNameExp 0/0_stddev 0.221 ns 0.247 ns 10 -BuildTypeNameExp 0/0_cv 2.95 % 3.29 % 10 -BuildTypeNameSim 0/0_mean 8.35 ns 8.25 ns 10 -BuildTypeNameSim 0/0_median 8.40 ns 8.37 ns 10 -BuildTypeNameSim 0/0_stddev 0.229 ns 0.218 ns 10 -BuildTypeNameSim 0/0_cv 2.75 % 2.65 % 10 -BuildTypeNameStr 10/10_mean 59.5 ns 59.1 ns 10 -BuildTypeNameStr 10/10_median 59.3 ns 59.3 ns 10 -BuildTypeNameStr 10/10_stddev 1.54 ns 1.73 ns 10 -BuildTypeNameStr 10/10_cv 2.59 % 2.93 % 10 -BuildTypeNameExp 10/10_mean 34.2 ns 34.1 ns 10 -BuildTypeNameExp 10/10_median 34.2 ns 34.1 ns 10 -BuildTypeNameExp 10/10_stddev 0.848 ns 0.708 ns 10 -BuildTypeNameExp 10/10_cv 2.48 % 2.07 % 10 -BuildTypeNameSim 10/10_mean 26.4 ns 26.0 ns 10 -BuildTypeNameSim 10/10_median 26.5 ns 26.1 ns 10 -BuildTypeNameSim 10/10_stddev 1.13 ns 1.27 ns 10 -BuildTypeNameSim 10/10_cv 4.27 % 4.91 % 10 +BuildTypeNameStr 0/0_mean 8.22 ns 8.14 ns 10 +BuildTypeNameStr 0/0_median 8.18 ns 8.11 ns 10 +BuildTypeNameStr 0/0_stddev 0.297 ns 0.297 ns 10 +BuildTypeNameStr 0/0_cv 3.61 % 3.65 % 10 +BuildTypeNameExp 0/0_mean 7.62 ns 7.57 ns 10 +BuildTypeNameExp 0/0_median 7.58 ns 7.50 ns 10 +BuildTypeNameExp 0/0_stddev 0.165 ns 0.187 ns 10 +BuildTypeNameExp 0/0_cv 2.17 % 2.48 % 10 +BuildTypeNameSim 0/0_mean 8.19 ns 8.16 ns 10 +BuildTypeNameSim 0/0_median 7.92 ns 7.85 ns 10 +BuildTypeNameSim 0/0_stddev 0.776 ns 0.788 ns 10 +BuildTypeNameSim 0/0_cv 9.47 % 9.65 % 10 +BuildTypeNameStr 10/10_mean 64.1 ns 63.6 ns 10 +BuildTypeNameStr 10/10_median 58.8 ns 57.9 ns 10 +BuildTypeNameStr 10/10_stddev 9.60 ns 10.2 ns 10 +BuildTypeNameStr 10/10_cv 14.97 % 16.06 % 10 +BuildTypeNameExp 10/10_mean 33.9 ns 33.8 ns 10 +BuildTypeNameExp 10/10_median 33.3 ns 33.4 ns 10 +BuildTypeNameExp 10/10_stddev 1.37 ns 1.20 ns 10 +BuildTypeNameExp 10/10_cv 4.05 % 3.55 % 10 +BuildTypeNameSim 10/10_mean 25.3 ns 25.2 ns 10 +BuildTypeNameSim 10/10_median 25.1 ns 25.1 ns 10 +BuildTypeNameSim 10/10_stddev 0.834 ns 0.765 ns 10 +BuildTypeNameSim 10/10_cv 3.30 % 3.04 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat with replace str_mean 318 ns 316 ns 10 -Concat with replace str_median 316 ns 314 ns 10 -Concat with replace str_stddev 11.9 ns 10.4 ns 10 -Concat with replace str_cv 3.73 % 3.30 % 10 -Concat with replace exp_mean 224 ns 223 ns 10 -Concat with replace exp_median 220 ns 220 ns 10 -Concat with replace exp_stddev 8.19 ns 8.32 ns 10 -Concat with replace exp_cv 3.66 % 3.73 % 10 +Concat with replace str_mean 312 ns 309 ns 10 +Concat with replace str_median 315 ns 308 ns 10 +Concat with replace str_stddev 11.3 ns 10.5 ns 10 +Concat with replace str_cv 3.64 % 3.39 % 10 +Concat with replace exp_mean 228 ns 224 ns 10 +Concat with replace exp_median 223 ns 217 ns 10 +Concat with replace exp_stddev 23.9 ns 24.8 ns 10 +Concat with replace exp_cv 10.47 % 11.08 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e;_mean 1.11 ns 1.10 ns 10 -std::string e;_median 1.10 ns 1.07 ns 10 -std::string e;_stddev 0.035 ns 0.035 ns 10 -std::string e;_cv 3.16 % 3.23 % 10 -std::string_view e;_mean 0.372 ns 0.368 ns 10 -std::string_view e;_median 0.367 ns 0.365 ns 10 -std::string_view e;_stddev 0.013 ns 0.009 ns 10 -std::string_view e;_cv 3.56 % 2.40 % 10 -ssa e;_mean 0.364 ns 0.361 ns 10 -ssa e;_median 0.365 ns 0.361 ns 10 +std::string e;_mean 1.17 ns 1.16 ns 10 +std::string e;_median 1.14 ns 1.14 ns 10 +std::string e;_stddev 0.083 ns 0.088 ns 10 +std::string e;_cv 7.11 % 7.62 % 10 +std::string_view e;_mean 0.363 ns 0.361 ns 10 +std::string_view e;_median 0.360 ns 0.361 ns 10 +std::string_view e;_stddev 0.008 ns 0.009 ns 10 +std::string_view e;_cv 2.15 % 2.57 % 10 +ssa e;_mean 0.360 ns 0.355 ns 10 +ssa e;_median 0.363 ns 0.357 ns 10 ssa e;_stddev 0.007 ns 0.008 ns 10 -ssa e;_cv 2.04 % 2.34 % 10 -stringa e;_mean 0.757 ns 0.749 ns 10 -stringa e;_median 0.754 ns 0.746 ns 10 -stringa e;_stddev 0.027 ns 0.021 ns 10 -stringa e;_cv 3.61 % 2.78 % 10 -lstringa<20> e;_mean 1.12 ns 1.11 ns 10 -lstringa<20> e;_median 1.11 ns 1.12 ns 10 -lstringa<20> e;_stddev 0.035 ns 0.036 ns 10 -lstringa<20> e;_cv 3.12 % 3.22 % 10 -lstringa<40> e;_mean 1.15 ns 1.14 ns 10 -lstringa<40> e;_median 1.13 ns 1.13 ns 10 -lstringa<40> e;_stddev 0.072 ns 0.079 ns 10 -lstringa<40> e;_cv 6.27 % 6.90 % 10 +ssa e;_cv 1.97 % 2.39 % 10 +stringa e;_mean 0.740 ns 0.734 ns 10 +stringa e;_median 0.740 ns 0.732 ns 10 +stringa e;_stddev 0.019 ns 0.022 ns 10 +stringa e;_cv 2.55 % 3.06 % 10 +lstringa<20> e;_mean 1.11 ns 1.10 ns 10 +lstringa<20> e;_median 1.08 ns 1.07 ns 10 +lstringa<20> e;_stddev 0.066 ns 0.068 ns 10 +lstringa<20> e;_cv 5.96 % 6.13 % 10 +lstringa<40> e;_mean 1.10 ns 1.08 ns 10 +lstringa<40> e;_median 1.08 ns 1.09 ns 10 +lstringa<40> e;_stddev 0.032 ns 0.018 ns 10 +lstringa<40> e;_cv 2.93 % 1.63 % 10 ----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "Test text";_mean 1.85 ns 1.82 ns 10 -std::string e = "Test text";_median 1.82 ns 1.84 ns 10 -std::string e = "Test text";_stddev 0.086 ns 0.049 ns 10 -std::string e = "Test text";_cv 4.67 % 2.69 % 10 -std::string_view e = "Test text";_mean 0.728 ns 0.722 ns 10 -std::string_view e = "Test text";_median 0.721 ns 0.724 ns 10 -std::string_view e = "Test text";_stddev 0.020 ns 0.020 ns 10 -std::string_view e = "Test text";_cv 2.79 % 2.84 % 10 -ssa e = "Test text";_mean 0.370 ns 0.367 ns 10 -ssa e = "Test text";_median 0.372 ns 0.369 ns 10 -ssa e = "Test text";_stddev 0.010 ns 0.010 ns 10 -ssa e = "Test text";_cv 2.79 % 2.68 % 10 -stringa e = "Test text";_mean 1.85 ns 1.83 ns 10 -stringa e = "Test text";_median 1.87 ns 1.82 ns 10 -stringa e = "Test text";_stddev 0.053 ns 0.044 ns 10 -stringa e = "Test text";_cv 2.84 % 2.42 % 10 -lstringa<20> e = "Test text";_mean 1.89 ns 1.86 ns 10 -lstringa<20> e = "Test text";_median 1.89 ns 1.86 ns 10 -lstringa<20> e = "Test text";_stddev 0.067 ns 0.085 ns 10 -lstringa<20> e = "Test text";_cv 3.55 % 4.60 % 10 -lstringa<40> e = "Test text";_mean 1.91 ns 1.90 ns 10 -lstringa<40> e = "Test text";_median 1.87 ns 1.86 ns 10 -lstringa<40> e = "Test text";_stddev 0.083 ns 0.082 ns 10 -lstringa<40> e = "Test text";_cv 4.36 % 4.34 % 10 +std::string e = "Test text";_mean 1.82 ns 1.81 ns 10 +std::string e = "Test text";_median 1.79 ns 1.78 ns 10 +std::string e = "Test text";_stddev 0.071 ns 0.065 ns 10 +std::string e = "Test text";_cv 3.88 % 3.60 % 10 +std::string_view e = "Test text";_mean 0.769 ns 0.765 ns 10 +std::string_view e = "Test text";_median 0.756 ns 0.746 ns 10 +std::string_view e = "Test text";_stddev 0.054 ns 0.055 ns 10 +std::string_view e = "Test text";_cv 7.08 % 7.24 % 10 +ssa e = "Test text";_mean 0.365 ns 0.363 ns 10 +ssa e = "Test text";_median 0.358 ns 0.358 ns 10 +ssa e = "Test text";_stddev 0.016 ns 0.014 ns 10 +ssa e = "Test text";_cv 4.43 % 3.91 % 10 +stringa e = "Test text";_mean 1.08 ns 1.07 ns 10 +stringa e = "Test text";_median 1.08 ns 1.07 ns 10 +stringa e = "Test text";_stddev 0.017 ns 0.012 ns 10 +stringa e = "Test text";_cv 1.56 % 1.07 % 10 +lstringa<20> e = "Test text";_mean 1.85 ns 1.86 ns 10 +lstringa<20> e = "Test text";_median 1.85 ns 1.84 ns 10 +lstringa<20> e = "Test text";_stddev 0.054 ns 0.055 ns 10 +lstringa<20> e = "Test text";_cv 2.89 % 2.95 % 10 +lstringa<40> e = "Test text";_mean 1.87 ns 1.85 ns 10 +lstringa<40> e = "Test text";_median 1.86 ns 1.84 ns 10 +lstringa<40> e = "Test text";_stddev 0.067 ns 0.062 ns 10 +lstringa<40> e = "Test text";_cv 3.61 % 3.34 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890";_mean 74.9 ns 74.3 ns 10 -std::string e = "123456789012345678901234567890";_median 75.2 ns 75.3 ns 10 -std::string e = "123456789012345678901234567890";_stddev 2.40 ns 2.03 ns 10 -std::string e = "123456789012345678901234567890";_cv 3.20 % 2.74 % 10 -std::string_view e = "123456789012345678901234567890";_mean 0.736 ns 0.732 ns 10 -std::string_view e = "123456789012345678901234567890";_median 0.732 ns 0.732 ns 10 -std::string_view e = "123456789012345678901234567890";_stddev 0.024 ns 0.022 ns 10 -std::string_view e = "123456789012345678901234567890";_cv 3.20 % 2.97 % 10 -ssa e = "123456789012345678901234567890";_mean 0.365 ns 0.363 ns 10 -ssa e = "123456789012345678901234567890";_median 0.366 ns 0.361 ns 10 -ssa e = "123456789012345678901234567890";_stddev 0.005 ns 0.005 ns 10 -ssa e = "123456789012345678901234567890";_cv 1.27 % 1.40 % 10 -stringa e = "123456789012345678901234567890";_mean 1.85 ns 1.84 ns 10 -stringa e = "123456789012345678901234567890";_median 1.84 ns 1.84 ns 10 -stringa e = "123456789012345678901234567890";_stddev 0.051 ns 0.042 ns 10 -stringa e = "123456789012345678901234567890";_cv 2.75 % 2.30 % 10 -lstringa<20> e = "123456789012345678901234567890";_mean 76.8 ns 75.9 ns 10 -lstringa<20> e = "123456789012345678901234567890";_median 76.5 ns 76.7 ns 10 -lstringa<20> e = "123456789012345678901234567890";_stddev 1.85 ns 1.23 ns 10 -lstringa<20> e = "123456789012345678901234567890";_cv 2.40 % 1.63 % 10 -lstringa<40> e = "123456789012345678901234567890";_mean 2.53 ns 2.52 ns 10 -lstringa<40> e = "123456789012345678901234567890";_median 2.53 ns 2.51 ns 10 -lstringa<40> e = "123456789012345678901234567890";_stddev 0.065 ns 0.055 ns 10 -lstringa<40> e = "123456789012345678901234567890";_cv 2.58 % 2.20 % 10 +std::string e = "123456789012345678901234567890";_mean 72.1 ns 71.0 ns 10 +std::string e = "123456789012345678901234567890";_median 72.4 ns 70.6 ns 10 +std::string e = "123456789012345678901234567890";_stddev 2.45 ns 2.33 ns 10 +std::string e = "123456789012345678901234567890";_cv 3.39 % 3.29 % 10 +std::string_view e = "123456789012345678901234567890";_mean 0.734 ns 0.734 ns 10 +std::string_view e = "123456789012345678901234567890";_median 0.721 ns 0.724 ns 10 +std::string_view e = "123456789012345678901234567890";_stddev 0.032 ns 0.033 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 4.40 % 4.54 % 10 +ssa e = "123456789012345678901234567890";_mean 0.360 ns 0.356 ns 10 +ssa e = "123456789012345678901234567890";_median 0.355 ns 0.353 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.010 ns 0.007 ns 10 +ssa e = "123456789012345678901234567890";_cv 2.76 % 1.90 % 10 +stringa e = "123456789012345678901234567890";_mean 1.08 ns 1.07 ns 10 +stringa e = "123456789012345678901234567890";_median 1.06 ns 1.07 ns 10 +stringa e = "123456789012345678901234567890";_stddev 0.028 ns 0.030 ns 10 +stringa e = "123456789012345678901234567890";_cv 2.59 % 2.83 % 10 +lstringa<20> e = "123456789012345678901234567890";_mean 74.5 ns 73.4 ns 10 +lstringa<20> e = "123456789012345678901234567890";_median 74.3 ns 73.9 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 1.41 ns 1.64 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 1.89 % 2.23 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 2.52 ns 2.48 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 2.49 ns 2.46 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.080 ns 0.039 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 3.18 % 1.59 % 10 ----- Create copy of Str with 9 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "Test text"; auto c{e};_mean 1.87 ns 1.83 ns 10 -std::string e = "Test text"; auto c{e};_median 1.86 ns 1.81 ns 10 -std::string e = "Test text"; auto c{e};_stddev 0.059 ns 0.064 ns 10 -std::string e = "Test text"; auto c{e};_cv 3.17 % 3.52 % 10 -std::string_view e = "Test text"; auto c{e};_mean 0.368 ns 0.367 ns 10 -std::string_view e = "Test text"; auto c{e};_median 0.365 ns 0.361 ns 10 -std::string_view e = "Test text"; auto c{e};_stddev 0.010 ns 0.010 ns 10 -std::string_view e = "Test text"; auto c{e};_cv 2.64 % 2.68 % 10 -ssa e = "Test text"; auto c{e};_mean 0.375 ns 0.367 ns 10 -ssa e = "Test text"; auto c{e};_median 0.372 ns 0.360 ns 10 -ssa e = "Test text"; auto c{e};_stddev 0.017 ns 0.014 ns 10 -ssa e = "Test text"; auto c{e};_cv 4.40 % 3.85 % 10 -stringa e = "Test text"; auto c{e};_mean 1.32 ns 1.31 ns 10 -stringa e = "Test text"; auto c{e};_median 1.33 ns 1.29 ns 10 -stringa e = "Test text"; auto c{e};_stddev 0.042 ns 0.047 ns 10 -stringa e = "Test text"; auto c{e};_cv 3.17 % 3.62 % 10 -lstringa<20> e = "Test text"; auto c{e};_mean 5.30 ns 5.17 ns 10 -lstringa<20> e = "Test text"; auto c{e};_median 5.33 ns 5.16 ns 10 -lstringa<20> e = "Test text"; auto c{e};_stddev 0.187 ns 0.226 ns 10 -lstringa<20> e = "Test text"; auto c{e};_cv 3.53 % 4.38 % 10 -lstringa<40> e = "Test text"; auto c{e};_mean 5.22 ns 5.14 ns 10 -lstringa<40> e = "Test text"; auto c{e};_median 5.26 ns 5.16 ns 10 -lstringa<40> e = "Test text"; auto c{e};_stddev 0.140 ns 0.137 ns 10 -lstringa<40> e = "Test text"; auto c{e};_cv 2.68 % 2.66 % 10 +std::string e = "Test text"; auto c{e};_mean 1.84 ns 1.83 ns 10 +std::string e = "Test text"; auto c{e};_median 1.80 ns 1.82 ns 10 +std::string e = "Test text"; auto c{e};_stddev 0.089 ns 0.092 ns 10 +std::string e = "Test text"; auto c{e};_cv 4.83 % 5.03 % 10 +std::string_view e = "Test text"; auto c{e};_mean 0.373 ns 0.368 ns 10 +std::string_view e = "Test text"; auto c{e};_median 0.373 ns 0.366 ns 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.015 ns 0.017 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 4.02 % 4.58 % 10 +ssa e = "Test text"; auto c{e};_mean 0.363 ns 0.363 ns 10 +ssa e = "Test text"; auto c{e};_median 0.359 ns 0.361 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.010 ns 0.011 ns 10 +ssa e = "Test text"; auto c{e};_cv 2.79 % 3.13 % 10 +stringa e = "Test text"; auto c{e};_mean 1.28 ns 1.27 ns 10 +stringa e = "Test text"; auto c{e};_median 1.29 ns 1.27 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.030 ns 0.035 ns 10 +stringa e = "Test text"; auto c{e};_cv 2.34 % 2.79 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 4.74 ns 4.71 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 4.70 ns 4.65 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.131 ns 0.152 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 2.77 % 3.23 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 4.70 ns 4.67 ns 10 +lstringa<40> e = "Test text"; auto c{e};_median 4.65 ns 4.60 ns 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 0.155 ns 0.141 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 3.29 % 3.03 % 10 ----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890"; auto c{e};_mean 81.3 ns 79.9 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_median 80.5 ns 78.5 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_stddev 5.02 ns 5.50 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_cv 6.17 % 6.89 % 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.741 ns 0.732 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.739 ns 0.725 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.016 ns 0.015 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 2.18 % 2.06 % 10 -ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.362 ns 0.359 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_median 0.357 ns 0.360 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.011 ns 0.006 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_cv 2.95 % 1.72 % 10 -stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.83 ns 1.81 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_median 1.81 ns 1.80 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.044 ns 0.040 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_cv 2.41 % 2.19 % 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 76.1 ns 75.9 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 75.8 ns 75.9 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 2.87 ns 3.21 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 3.77 % 4.23 % 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.38 ns 4.36 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 4.36 ns 4.39 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.073 ns 0.050 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 1.67 % 1.16 % 10 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 76.6 ns 75.9 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 75.4 ns 75.0 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 3.30 ns 2.76 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 4.30 % 3.63 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.714 ns 0.710 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.707 ns 0.715 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.014 ns 0.017 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.99 % 2.33 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.362 ns 0.361 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 0.361 ns 0.361 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.007 ns 0.007 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 2.00 % 2.01 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.84 ns 1.83 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 1.80 ns 1.80 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.105 ns 0.079 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 5.69 % 4.34 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 79.1 ns 79.0 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 78.1 ns 78.5 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 5.13 ns 4.94 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 6.48 % 6.25 % 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.46 ns 4.40 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 4.43 ns 4.39 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.163 ns 0.126 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 3.67 % 2.85 % 10 ----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find;_mean 38.3 ns 38.0 ns 10 -std::string::find;_median 38.3 ns 37.7 ns 10 -std::string::find;_stddev 0.476 ns 0.585 ns 10 -std::string::find;_cv 1.24 % 1.54 % 10 -std::string_view::find;_mean 38.1 ns 37.5 ns 10 -std::string_view::find;_median 37.9 ns 37.7 ns 10 -std::string_view::find;_stddev 0.751 ns 0.660 ns 10 -std::string_view::find;_cv 1.97 % 1.76 % 10 -ssa::find;_mean 18.3 ns 18.1 ns 10 -ssa::find;_median 18.1 ns 18.0 ns 10 -ssa::find;_stddev 0.297 ns 0.345 ns 10 -ssa::find;_cv 1.63 % 1.90 % 10 -stringa::find;_mean 19.8 ns 19.6 ns 10 -stringa::find;_median 19.4 ns 19.5 ns 10 -stringa::find;_stddev 0.845 ns 0.648 ns 10 -stringa::find;_cv 4.27 % 3.31 % 10 -lstringa<20>::find;_mean 17.6 ns 17.5 ns 10 -lstringa<20>::find;_median 17.5 ns 17.4 ns 10 -lstringa<20>::find;_stddev 0.545 ns 0.397 ns 10 -lstringa<20>::find;_cv 3.10 % 2.28 % 10 -lstringa<40>::find;_mean 17.8 ns 17.5 ns 10 -lstringa<40>::find;_median 17.9 ns 17.3 ns 10 -lstringa<40>::find;_stddev 0.432 ns 0.324 ns 10 -lstringa<40>::find;_cv 2.42 % 1.85 % 10 +std::string::find;_mean 38.2 ns 38.3 ns 10 +std::string::find;_median 37.9 ns 37.7 ns 10 +std::string::find;_stddev 0.923 ns 1.19 ns 10 +std::string::find;_cv 2.41 % 3.10 % 10 +std::string_view::find;_mean 38.2 ns 37.8 ns 10 +std::string_view::find;_median 37.7 ns 37.7 ns 10 +std::string_view::find;_stddev 1.44 ns 0.769 ns 10 +std::string_view::find;_cv 3.77 % 2.03 % 10 +ssa::find;_mean 17.8 ns 17.6 ns 10 +ssa::find;_median 17.7 ns 17.4 ns 10 +ssa::find;_stddev 0.592 ns 0.711 ns 10 +ssa::find;_cv 3.33 % 4.05 % 10 +stringa::find;_mean 18.7 ns 18.7 ns 10 +stringa::find;_median 18.2 ns 17.9 ns 10 +stringa::find;_stddev 1.67 ns 1.65 ns 10 +stringa::find;_cv 8.93 % 8.85 % 10 +lstringa<20>::find;_mean 19.6 ns 19.6 ns 10 +lstringa<20>::find;_median 18.9 ns 18.6 ns 10 +lstringa<20>::find;_stddev 1.77 ns 1.93 ns 10 +lstringa<20>::find;_cv 9.03 % 9.87 % 10 +lstringa<40>::find;_mean 17.5 ns 17.3 ns 10 +lstringa<40>::find;_median 17.2 ns 17.3 ns 10 +lstringa<40>::find;_stddev 0.751 ns 0.741 ns 10 +lstringa<40>::find;_cv 4.28 % 4.27 % 10 ------- Copy not literal Str with N symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string copy{str_with_len_N};/15_mean 1.86 ns 1.82 ns 10 -std::string copy{str_with_len_N};/15_median 1.83 ns 1.82 ns 10 -std::string copy{str_with_len_N};/15_stddev 0.101 ns 0.052 ns 10 -std::string copy{str_with_len_N};/15_cv 5.42 % 2.85 % 10 -std::string copy{str_with_len_N};/16_mean 80.4 ns 80.0 ns 10 -std::string copy{str_with_len_N};/16_median 78.0 ns 78.5 ns 10 -std::string copy{str_with_len_N};/16_stddev 4.86 ns 5.36 ns 10 -std::string copy{str_with_len_N};/16_cv 6.04 % 6.69 % 10 -std::string copy{str_with_len_N};/23_mean 78.0 ns 77.3 ns 10 -std::string copy{str_with_len_N};/23_median 76.9 ns 76.7 ns 10 -std::string copy{str_with_len_N};/23_stddev 3.65 ns 2.73 ns 10 -std::string copy{str_with_len_N};/23_cv 4.68 % 3.54 % 10 -std::string copy{str_with_len_N};/24_mean 80.2 ns 79.3 ns 10 -std::string copy{str_with_len_N};/24_median 78.3 ns 78.5 ns 10 -std::string copy{str_with_len_N};/24_stddev 4.99 ns 5.59 ns 10 -std::string copy{str_with_len_N};/24_cv 6.22 % 7.05 % 10 -std::string copy{str_with_len_N};/32_mean 82.7 ns 82.1 ns 10 -std::string copy{str_with_len_N};/32_median 82.5 ns 82.0 ns 10 -std::string copy{str_with_len_N};/32_stddev 1.82 ns 1.29 ns 10 -std::string copy{str_with_len_N};/32_cv 2.20 % 1.57 % 10 -std::string copy{str_with_len_N};/64_mean 82.0 ns 81.6 ns 10 -std::string copy{str_with_len_N};/64_median 80.7 ns 80.2 ns 10 -std::string copy{str_with_len_N};/64_stddev 3.00 ns 2.94 ns 10 -std::string copy{str_with_len_N};/64_cv 3.66 % 3.60 % 10 -std::string copy{str_with_len_N};/128_mean 89.8 ns 87.7 ns 10 -std::string copy{str_with_len_N};/128_median 89.7 ns 87.9 ns 10 -std::string copy{str_with_len_N};/128_stddev 5.67 ns 4.46 ns 10 -std::string copy{str_with_len_N};/128_cv 6.32 % 5.09 % 10 -std::string copy{str_with_len_N};/256_mean 91.4 ns 90.5 ns 10 -std::string copy{str_with_len_N};/256_median 90.7 ns 90.7 ns 10 -std::string copy{str_with_len_N};/256_stddev 2.30 ns 1.92 ns 10 -std::string copy{str_with_len_N};/256_cv 2.52 % 2.12 % 10 -std::string copy{str_with_len_N};/512_mean 89.2 ns 88.2 ns 10 -std::string copy{str_with_len_N};/512_median 89.0 ns 87.2 ns 10 -std::string copy{str_with_len_N};/512_stddev 3.91 ns 3.41 ns 10 -std::string copy{str_with_len_N};/512_cv 4.38 % 3.86 % 10 -std::string copy{str_with_len_N};/1024_mean 96.8 ns 96.3 ns 10 -std::string copy{str_with_len_N};/1024_median 97.2 ns 96.3 ns 10 -std::string copy{str_with_len_N};/1024_stddev 3.59 ns 2.79 ns 10 -std::string copy{str_with_len_N};/1024_cv 3.71 % 2.90 % 10 -std::string copy{str_with_len_N};/2048_mean 130 ns 129 ns 10 -std::string copy{str_with_len_N};/2048_median 130 ns 128 ns 10 -std::string copy{str_with_len_N};/2048_stddev 3.80 ns 3.49 ns 10 -std::string copy{str_with_len_N};/2048_cv 2.92 % 2.70 % 10 -std::string copy{str_with_len_N};/4096_mean 178 ns 174 ns 10 -std::string copy{str_with_len_N};/4096_median 178 ns 176 ns 10 -std::string copy{str_with_len_N};/4096_stddev 5.34 ns 4.50 ns 10 -std::string copy{str_with_len_N};/4096_cv 3.01 % 2.59 % 10 -stringa copy{str_with_len_N};/15_mean 1.28 ns 1.27 ns 10 -stringa copy{str_with_len_N};/15_median 1.28 ns 1.28 ns 10 -stringa copy{str_with_len_N};/15_stddev 0.030 ns 0.033 ns 10 -stringa copy{str_with_len_N};/15_cv 2.32 % 2.57 % 10 -stringa copy{str_with_len_N};/16_mean 1.28 ns 1.28 ns 10 -stringa copy{str_with_len_N};/16_median 1.27 ns 1.27 ns 10 -stringa copy{str_with_len_N};/16_stddev 0.037 ns 0.048 ns 10 -stringa copy{str_with_len_N};/16_cv 2.87 % 3.73 % 10 -stringa copy{str_with_len_N};/23_mean 1.28 ns 1.28 ns 10 -stringa copy{str_with_len_N};/23_median 1.26 ns 1.26 ns 10 -stringa copy{str_with_len_N};/23_stddev 0.038 ns 0.035 ns 10 -stringa copy{str_with_len_N};/23_cv 3.01 % 2.74 % 10 -stringa copy{str_with_len_N};/24_mean 15.8 ns 15.6 ns 10 -stringa copy{str_with_len_N};/24_median 15.7 ns 15.7 ns 10 -stringa copy{str_with_len_N};/24_stddev 0.153 ns 0.168 ns 10 -stringa copy{str_with_len_N};/24_cv 0.97 % 1.08 % 10 -stringa copy{str_with_len_N};/32_mean 15.7 ns 15.7 ns 10 -stringa copy{str_with_len_N};/32_median 15.6 ns 15.7 ns 10 -stringa copy{str_with_len_N};/32_stddev 0.217 ns 0.233 ns 10 -stringa copy{str_with_len_N};/32_cv 1.38 % 1.48 % 10 -stringa copy{str_with_len_N};/64_mean 15.8 ns 15.7 ns 10 +std::string copy{str_with_len_N};/15_mean 1.80 ns 1.79 ns 10 +std::string copy{str_with_len_N};/15_median 1.79 ns 1.77 ns 10 +std::string copy{str_with_len_N};/15_stddev 0.033 ns 0.049 ns 10 +std::string copy{str_with_len_N};/15_cv 1.84 % 2.73 % 10 +std::string copy{str_with_len_N};/16_mean 80.7 ns 80.4 ns 10 +std::string copy{str_with_len_N};/16_median 80.4 ns 80.2 ns 10 +std::string copy{str_with_len_N};/16_stddev 2.05 ns 2.39 ns 10 +std::string copy{str_with_len_N};/16_cv 2.54 % 2.97 % 10 +std::string copy{str_with_len_N};/23_mean 81.5 ns 80.4 ns 10 +std::string copy{str_with_len_N};/23_median 81.6 ns 79.5 ns 10 +std::string copy{str_with_len_N};/23_stddev 3.76 ns 3.72 ns 10 +std::string copy{str_with_len_N};/23_cv 4.61 % 4.63 % 10 +std::string copy{str_with_len_N};/24_mean 79.1 ns 78.0 ns 10 +std::string copy{str_with_len_N};/24_median 78.2 ns 78.5 ns 10 +std::string copy{str_with_len_N};/24_stddev 3.54 ns 1.85 ns 10 +std::string copy{str_with_len_N};/24_cv 4.47 % 2.37 % 10 +std::string copy{str_with_len_N};/32_mean 81.0 ns 79.9 ns 10 +std::string copy{str_with_len_N};/32_median 80.7 ns 79.3 ns 10 +std::string copy{str_with_len_N};/32_stddev 1.83 ns 2.30 ns 10 +std::string copy{str_with_len_N};/32_cv 2.26 % 2.87 % 10 +std::string copy{str_with_len_N};/64_mean 82.1 ns 80.0 ns 10 +std::string copy{str_with_len_N};/64_median 80.6 ns 79.3 ns 10 +std::string copy{str_with_len_N};/64_stddev 6.31 ns 3.33 ns 10 +std::string copy{str_with_len_N};/64_cv 7.68 % 4.17 % 10 +std::string copy{str_with_len_N};/128_mean 84.9 ns 83.5 ns 10 +std::string copy{str_with_len_N};/128_median 83.3 ns 82.0 ns 10 +std::string copy{str_with_len_N};/128_stddev 6.18 ns 6.65 ns 10 +std::string copy{str_with_len_N};/128_cv 7.29 % 7.96 % 10 +std::string copy{str_with_len_N};/256_mean 84.9 ns 84.4 ns 10 +std::string copy{str_with_len_N};/256_median 84.7 ns 83.7 ns 10 +std::string copy{str_with_len_N};/256_stddev 1.41 ns 1.47 ns 10 +std::string copy{str_with_len_N};/256_cv 1.66 % 1.74 % 10 +std::string copy{str_with_len_N};/512_mean 95.7 ns 95.4 ns 10 +std::string copy{str_with_len_N};/512_median 91.2 ns 91.0 ns 10 +std::string copy{str_with_len_N};/512_stddev 11.0 ns 11.0 ns 10 +std::string copy{str_with_len_N};/512_cv 11.50 % 11.57 % 10 +std::string copy{str_with_len_N};/1024_mean 95.9 ns 95.7 ns 10 +std::string copy{str_with_len_N};/1024_median 93.5 ns 93.5 ns 10 +std::string copy{str_with_len_N};/1024_stddev 6.97 ns 6.97 ns 10 +std::string copy{str_with_len_N};/1024_cv 7.26 % 7.28 % 10 +std::string copy{str_with_len_N};/2048_mean 131 ns 130 ns 10 +std::string copy{str_with_len_N};/2048_median 131 ns 131 ns 10 +std::string copy{str_with_len_N};/2048_stddev 2.72 ns 2.35 ns 10 +std::string copy{str_with_len_N};/2048_cv 2.08 % 1.81 % 10 +std::string copy{str_with_len_N};/4096_mean 175 ns 174 ns 10 +std::string copy{str_with_len_N};/4096_median 175 ns 173 ns 10 +std::string copy{str_with_len_N};/4096_stddev 5.31 ns 5.44 ns 10 +std::string copy{str_with_len_N};/4096_cv 3.04 % 3.13 % 10 +stringa copy{str_with_len_N};/15_mean 1.31 ns 1.31 ns 10 +stringa copy{str_with_len_N};/15_median 1.29 ns 1.28 ns 10 +stringa copy{str_with_len_N};/15_stddev 0.078 ns 0.085 ns 10 +stringa copy{str_with_len_N};/15_cv 5.99 % 6.50 % 10 +stringa copy{str_with_len_N};/16_mean 1.29 ns 1.28 ns 10 +stringa copy{str_with_len_N};/16_median 1.29 ns 1.27 ns 10 +stringa copy{str_with_len_N};/16_stddev 0.037 ns 0.037 ns 10 +stringa copy{str_with_len_N};/16_cv 2.88 % 2.93 % 10 +stringa copy{str_with_len_N};/23_mean 1.29 ns 1.27 ns 10 +stringa copy{str_with_len_N};/23_median 1.27 ns 1.26 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.043 ns 0.040 ns 10 +stringa copy{str_with_len_N};/23_cv 3.36 % 3.12 % 10 +stringa copy{str_with_len_N};/24_mean 15.8 ns 15.5 ns 10 +stringa copy{str_with_len_N};/24_median 15.8 ns 15.3 ns 10 +stringa copy{str_with_len_N};/24_stddev 0.176 ns 0.294 ns 10 +stringa copy{str_with_len_N};/24_cv 1.11 % 1.90 % 10 +stringa copy{str_with_len_N};/32_mean 16.0 ns 15.3 ns 10 +stringa copy{str_with_len_N};/32_median 15.9 ns 15.3 ns 10 +stringa copy{str_with_len_N};/32_stddev 0.362 ns 0.443 ns 10 +stringa copy{str_with_len_N};/32_cv 2.27 % 2.89 % 10 +stringa copy{str_with_len_N};/64_mean 15.7 ns 15.6 ns 10 stringa copy{str_with_len_N};/64_median 15.7 ns 15.7 ns 10 -stringa copy{str_with_len_N};/64_stddev 0.179 ns 0.233 ns 10 -stringa copy{str_with_len_N};/64_cv 1.13 % 1.48 % 10 -stringa copy{str_with_len_N};/128_mean 15.8 ns 15.7 ns 10 -stringa copy{str_with_len_N};/128_median 15.6 ns 15.7 ns 10 -stringa copy{str_with_len_N};/128_stddev 0.291 ns 0.233 ns 10 -stringa copy{str_with_len_N};/128_cv 1.84 % 1.48 % 10 -stringa copy{str_with_len_N};/256_mean 15.7 ns 15.7 ns 10 -stringa copy{str_with_len_N};/256_median 15.6 ns 15.7 ns 10 -stringa copy{str_with_len_N};/256_stddev 0.194 ns 0.257 ns 10 -stringa copy{str_with_len_N};/256_cv 1.23 % 1.64 % 10 -stringa copy{str_with_len_N};/512_mean 15.7 ns 15.7 ns 10 -stringa copy{str_with_len_N};/512_median 15.7 ns 15.7 ns 10 -stringa copy{str_with_len_N};/512_stddev 0.185 ns 0.198 ns 10 -stringa copy{str_with_len_N};/512_cv 1.17 % 1.26 % 10 -stringa copy{str_with_len_N};/1024_mean 15.7 ns 15.7 ns 10 -stringa copy{str_with_len_N};/1024_median 15.7 ns 15.7 ns 10 -stringa copy{str_with_len_N};/1024_stddev 0.207 ns 0.110 ns 10 -stringa copy{str_with_len_N};/1024_cv 1.32 % 0.70 % 10 -stringa copy{str_with_len_N};/2048_mean 15.9 ns 15.8 ns 10 -stringa copy{str_with_len_N};/2048_median 15.8 ns 15.7 ns 10 -stringa copy{str_with_len_N};/2048_stddev 0.321 ns 0.218 ns 10 -stringa copy{str_with_len_N};/2048_cv 2.02 % 1.38 % 10 -stringa copy{str_with_len_N};/4096_mean 15.9 ns 15.8 ns 10 -stringa copy{str_with_len_N};/4096_median 15.9 ns 15.7 ns 10 -stringa copy{str_with_len_N};/4096_stddev 0.198 ns 0.331 ns 10 -stringa copy{str_with_len_N};/4096_cv 1.24 % 2.09 % 10 -lstringa<16> copy{str_with_len_N};/15_mean 4.88 ns 4.85 ns 10 -lstringa<16> copy{str_with_len_N};/15_median 4.77 ns 4.71 ns 10 -lstringa<16> copy{str_with_len_N};/15_stddev 0.247 ns 0.267 ns 10 -lstringa<16> copy{str_with_len_N};/15_cv 5.07 % 5.49 % 10 -lstringa<16> copy{str_with_len_N};/16_mean 4.78 ns 4.76 ns 10 -lstringa<16> copy{str_with_len_N};/16_median 4.74 ns 4.75 ns 10 -lstringa<16> copy{str_with_len_N};/16_stddev 0.183 ns 0.181 ns 10 -lstringa<16> copy{str_with_len_N};/16_cv 3.82 % 3.80 % 10 -lstringa<16> copy{str_with_len_N};/23_mean 4.80 ns 4.76 ns 10 -lstringa<16> copy{str_with_len_N};/23_median 4.73 ns 4.71 ns 10 -lstringa<16> copy{str_with_len_N};/23_stddev 0.159 ns 0.123 ns 10 -lstringa<16> copy{str_with_len_N};/23_cv 3.31 % 2.59 % 10 -lstringa<16> copy{str_with_len_N};/24_mean 76.9 ns 76.4 ns 10 -lstringa<16> copy{str_with_len_N};/24_median 75.5 ns 75.0 ns 10 -lstringa<16> copy{str_with_len_N};/24_stddev 2.76 ns 1.98 ns 10 -lstringa<16> copy{str_with_len_N};/24_cv 3.59 % 2.59 % 10 -lstringa<16> copy{str_with_len_N};/32_mean 80.5 ns 79.7 ns 10 -lstringa<16> copy{str_with_len_N};/32_median 80.5 ns 79.3 ns 10 -lstringa<16> copy{str_with_len_N};/32_stddev 4.29 ns 3.49 ns 10 -lstringa<16> copy{str_with_len_N};/32_cv 5.33 % 4.38 % 10 -lstringa<16> copy{str_with_len_N};/64_mean 81.7 ns 80.6 ns 10 -lstringa<16> copy{str_with_len_N};/64_median 81.0 ns 81.1 ns 10 -lstringa<16> copy{str_with_len_N};/64_stddev 3.42 ns 3.37 ns 10 -lstringa<16> copy{str_with_len_N};/64_cv 4.18 % 4.18 % 10 -lstringa<16> copy{str_with_len_N};/128_mean 81.6 ns 81.0 ns 10 -lstringa<16> copy{str_with_len_N};/128_median 81.4 ns 81.6 ns 10 -lstringa<16> copy{str_with_len_N};/128_stddev 3.00 ns 3.42 ns 10 -lstringa<16> copy{str_with_len_N};/128_cv 3.68 % 4.23 % 10 -lstringa<16> copy{str_with_len_N};/256_mean 83.0 ns 82.4 ns 10 -lstringa<16> copy{str_with_len_N};/256_median 82.3 ns 81.6 ns 10 -lstringa<16> copy{str_with_len_N};/256_stddev 3.27 ns 3.85 ns 10 -lstringa<16> copy{str_with_len_N};/256_cv 3.94 % 4.66 % 10 -lstringa<16> copy{str_with_len_N};/512_mean 87.0 ns 87.0 ns 10 -lstringa<16> copy{str_with_len_N};/512_median 85.9 ns 85.4 ns 10 -lstringa<16> copy{str_with_len_N};/512_stddev 3.56 ns 3.72 ns 10 -lstringa<16> copy{str_with_len_N};/512_cv 4.09 % 4.27 % 10 -lstringa<16> copy{str_with_len_N};/1024_mean 96.8 ns 95.8 ns 10 -lstringa<16> copy{str_with_len_N};/1024_median 95.4 ns 94.2 ns 10 -lstringa<16> copy{str_with_len_N};/1024_stddev 4.63 ns 4.61 ns 10 -lstringa<16> copy{str_with_len_N};/1024_cv 4.78 % 4.81 % 10 -lstringa<16> copy{str_with_len_N};/2048_mean 133 ns 132 ns 10 -lstringa<16> copy{str_with_len_N};/2048_median 132 ns 130 ns 10 -lstringa<16> copy{str_with_len_N};/2048_stddev 11.8 ns 10.4 ns 10 -lstringa<16> copy{str_with_len_N};/2048_cv 8.86 % 7.88 % 10 -lstringa<16> copy{str_with_len_N};/4096_mean 195 ns 193 ns 10 -lstringa<16> copy{str_with_len_N};/4096_median 196 ns 193 ns 10 -lstringa<16> copy{str_with_len_N};/4096_stddev 8.89 ns 9.82 ns 10 -lstringa<16> copy{str_with_len_N};/4096_cv 4.57 % 5.08 % 10 -lstringa<512> copy{str_with_len_N};/15_mean 5.12 ns 5.11 ns 10 -lstringa<512> copy{str_with_len_N};/15_median 5.09 ns 5.00 ns 10 -lstringa<512> copy{str_with_len_N};/15_stddev 0.139 ns 0.166 ns 10 -lstringa<512> copy{str_with_len_N};/15_cv 2.72 % 3.24 % 10 -lstringa<512> copy{str_with_len_N};/16_mean 5.09 ns 5.06 ns 10 -lstringa<512> copy{str_with_len_N};/16_median 5.05 ns 5.00 ns 10 -lstringa<512> copy{str_with_len_N};/16_stddev 0.123 ns 0.109 ns 10 -lstringa<512> copy{str_with_len_N};/16_cv 2.42 % 2.16 % 10 -lstringa<512> copy{str_with_len_N};/23_mean 5.25 ns 5.12 ns 10 -lstringa<512> copy{str_with_len_N};/23_median 5.12 ns 5.08 ns 10 -lstringa<512> copy{str_with_len_N};/23_stddev 0.292 ns 0.127 ns 10 -lstringa<512> copy{str_with_len_N};/23_cv 5.57 % 2.48 % 10 -lstringa<512> copy{str_with_len_N};/24_mean 5.15 ns 5.12 ns 10 -lstringa<512> copy{str_with_len_N};/24_median 5.09 ns 5.09 ns 10 -lstringa<512> copy{str_with_len_N};/24_stddev 0.157 ns 0.162 ns 10 -lstringa<512> copy{str_with_len_N};/24_cv 3.05 % 3.16 % 10 -lstringa<512> copy{str_with_len_N};/32_mean 7.92 ns 7.87 ns 10 -lstringa<512> copy{str_with_len_N};/32_median 7.92 ns 7.95 ns 10 -lstringa<512> copy{str_with_len_N};/32_stddev 0.109 ns 0.176 ns 10 -lstringa<512> copy{str_with_len_N};/32_cv 1.37 % 2.24 % 10 -lstringa<512> copy{str_with_len_N};/64_mean 7.99 ns 7.93 ns 10 -lstringa<512> copy{str_with_len_N};/64_median 7.92 ns 7.93 ns 10 -lstringa<512> copy{str_with_len_N};/64_stddev 0.222 ns 0.206 ns 10 -lstringa<512> copy{str_with_len_N};/64_cv 2.77 % 2.59 % 10 -lstringa<512> copy{str_with_len_N};/128_mean 8.43 ns 8.32 ns 10 -lstringa<512> copy{str_with_len_N};/128_median 8.35 ns 8.28 ns 10 -lstringa<512> copy{str_with_len_N};/128_stddev 0.256 ns 0.233 ns 10 -lstringa<512> copy{str_with_len_N};/128_cv 3.03 % 2.80 % 10 -lstringa<512> copy{str_with_len_N};/256_mean 9.40 ns 9.37 ns 10 -lstringa<512> copy{str_with_len_N};/256_median 9.36 ns 9.42 ns 10 -lstringa<512> copy{str_with_len_N};/256_stddev 0.193 ns 0.276 ns 10 -lstringa<512> copy{str_with_len_N};/256_cv 2.05 % 2.94 % 10 -lstringa<512> copy{str_with_len_N};/512_mean 12.3 ns 12.3 ns 10 -lstringa<512> copy{str_with_len_N};/512_median 12.1 ns 12.0 ns 10 -lstringa<512> copy{str_with_len_N};/512_stddev 1.24 ns 1.32 ns 10 -lstringa<512> copy{str_with_len_N};/512_cv 10.08 % 10.73 % 10 -lstringa<512> copy{str_with_len_N};/1024_mean 94.1 ns 94.0 ns 10 -lstringa<512> copy{str_with_len_N};/1024_median 94.1 ns 94.2 ns 10 -lstringa<512> copy{str_with_len_N};/1024_stddev 2.92 ns 3.48 ns 10 -lstringa<512> copy{str_with_len_N};/1024_cv 3.11 % 3.70 % 10 -lstringa<512> copy{str_with_len_N};/2048_mean 128 ns 127 ns 10 -lstringa<512> copy{str_with_len_N};/2048_median 127 ns 126 ns 10 -lstringa<512> copy{str_with_len_N};/2048_stddev 5.72 ns 5.14 ns 10 -lstringa<512> copy{str_with_len_N};/2048_cv 4.46 % 4.05 % 10 -lstringa<512> copy{str_with_len_N};/4096_mean 181 ns 180 ns 10 -lstringa<512> copy{str_with_len_N};/4096_median 180 ns 180 ns 10 -lstringa<512> copy{str_with_len_N};/4096_stddev 4.69 ns 3.66 ns 10 -lstringa<512> copy{str_with_len_N};/4096_cv 2.60 % 2.04 % 10 +stringa copy{str_with_len_N};/64_stddev 0.216 ns 0.275 ns 10 +stringa copy{str_with_len_N};/64_cv 1.37 % 1.76 % 10 +stringa copy{str_with_len_N};/128_mean 15.9 ns 15.8 ns 10 +stringa copy{str_with_len_N};/128_median 16.0 ns 15.9 ns 10 +stringa copy{str_with_len_N};/128_stddev 0.183 ns 0.287 ns 10 +stringa copy{str_with_len_N};/128_cv 1.15 % 1.82 % 10 +stringa copy{str_with_len_N};/256_mean 16.0 ns 15.9 ns 10 +stringa copy{str_with_len_N};/256_median 16.1 ns 15.9 ns 10 +stringa copy{str_with_len_N};/256_stddev 0.265 ns 0.244 ns 10 +stringa copy{str_with_len_N};/256_cv 1.66 % 1.53 % 10 +stringa copy{str_with_len_N};/512_mean 15.9 ns 15.8 ns 10 +stringa copy{str_with_len_N};/512_median 15.8 ns 15.7 ns 10 +stringa copy{str_with_len_N};/512_stddev 0.265 ns 0.283 ns 10 +stringa copy{str_with_len_N};/512_cv 1.66 % 1.80 % 10 +stringa copy{str_with_len_N};/1024_mean 16.1 ns 15.7 ns 10 +stringa copy{str_with_len_N};/1024_median 16.1 ns 15.7 ns 10 +stringa copy{str_with_len_N};/1024_stddev 0.211 ns 0.435 ns 10 +stringa copy{str_with_len_N};/1024_cv 1.32 % 2.77 % 10 +stringa copy{str_with_len_N};/2048_mean 16.1 ns 15.7 ns 10 +stringa copy{str_with_len_N};/2048_median 16.1 ns 15.7 ns 10 +stringa copy{str_with_len_N};/2048_stddev 0.298 ns 0.257 ns 10 +stringa copy{str_with_len_N};/2048_cv 1.85 % 1.64 % 10 +stringa copy{str_with_len_N};/4096_mean 16.0 ns 15.8 ns 10 +stringa copy{str_with_len_N};/4096_median 16.0 ns 15.7 ns 10 +stringa copy{str_with_len_N};/4096_stddev 0.233 ns 0.316 ns 10 +stringa copy{str_with_len_N};/4096_cv 1.45 % 1.99 % 10 +lstringa<16> copy{str_with_len_N};/15_mean 5.02 ns 4.97 ns 10 +lstringa<16> copy{str_with_len_N};/15_median 4.99 ns 5.02 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.223 ns 0.188 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 4.45 % 3.79 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 4.96 ns 4.93 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 4.96 ns 4.92 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 0.121 ns 0.127 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 2.43 % 2.57 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 5.42 ns 5.38 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 5.25 ns 5.24 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 0.408 ns 0.435 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 7.53 % 8.08 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 78.1 ns 77.4 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 77.1 ns 76.4 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 3.87 ns 3.12 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 4.96 % 4.03 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 84.7 ns 83.5 ns 10 +lstringa<16> copy{str_with_len_N};/32_median 83.8 ns 82.0 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 4.08 ns 4.68 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 4.81 % 5.61 % 10 +lstringa<16> copy{str_with_len_N};/64_mean 82.4 ns 81.4 ns 10 +lstringa<16> copy{str_with_len_N};/64_median 81.8 ns 80.2 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 4.29 ns 3.49 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 5.21 % 4.29 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 87.2 ns 85.6 ns 10 +lstringa<16> copy{str_with_len_N};/128_median 86.9 ns 85.4 ns 10 +lstringa<16> copy{str_with_len_N};/128_stddev 5.47 ns 5.90 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 6.27 % 6.89 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 93.7 ns 92.6 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 94.8 ns 93.5 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 6.19 ns 6.55 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 6.61 % 7.07 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 93.0 ns 92.9 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 92.3 ns 91.6 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 4.38 ns 4.20 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 4.71 % 4.51 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 99.6 ns 99.0 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 99.5 ns 98.4 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 6.50 ns 6.69 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 6.53 % 6.76 % 10 +lstringa<16> copy{str_with_len_N};/2048_mean 127 ns 126 ns 10 +lstringa<16> copy{str_with_len_N};/2048_median 125 ns 126 ns 10 +lstringa<16> copy{str_with_len_N};/2048_stddev 6.35 ns 6.03 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 5.01 % 4.77 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 198 ns 196 ns 10 +lstringa<16> copy{str_with_len_N};/4096_median 198 ns 197 ns 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 4.38 ns 4.16 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 2.21 % 2.12 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 4.94 ns 4.84 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 4.93 ns 4.84 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 0.241 ns 0.285 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 4.88 % 5.89 % 10 +lstringa<512> copy{str_with_len_N};/16_mean 4.93 ns 4.87 ns 10 +lstringa<512> copy{str_with_len_N};/16_median 4.97 ns 4.80 ns 10 +lstringa<512> copy{str_with_len_N};/16_stddev 0.161 ns 0.187 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 3.28 % 3.85 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 4.71 ns 4.66 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 4.69 ns 4.66 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 0.088 ns 0.055 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 1.87 % 1.18 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 4.87 ns 4.85 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 4.86 ns 4.81 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.104 ns 0.123 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 2.13 % 2.53 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 7.69 ns 7.60 ns 10 +lstringa<512> copy{str_with_len_N};/32_median 7.64 ns 7.67 ns 10 +lstringa<512> copy{str_with_len_N};/32_stddev 0.197 ns 0.187 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 2.56 % 2.47 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 7.79 ns 7.71 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 7.77 ns 7.67 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.212 ns 0.138 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 2.73 % 1.78 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 8.68 ns 8.62 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 8.58 ns 8.48 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 0.462 ns 0.511 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 5.32 % 5.92 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 9.48 ns 9.33 ns 10 +lstringa<512> copy{str_with_len_N};/256_median 9.44 ns 9.21 ns 10 +lstringa<512> copy{str_with_len_N};/256_stddev 0.363 ns 0.330 ns 10 +lstringa<512> copy{str_with_len_N};/256_cv 3.83 % 3.54 % 10 +lstringa<512> copy{str_with_len_N};/512_mean 10.9 ns 10.8 ns 10 +lstringa<512> copy{str_with_len_N};/512_median 10.8 ns 10.6 ns 10 +lstringa<512> copy{str_with_len_N};/512_stddev 0.418 ns 0.437 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 3.84 % 4.06 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 98.5 ns 98.6 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 99.5 ns 99.4 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 6.81 ns 6.87 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 6.91 % 6.97 % 10 +lstringa<512> copy{str_with_len_N};/2048_mean 132 ns 132 ns 10 +lstringa<512> copy{str_with_len_N};/2048_median 130 ns 131 ns 10 +lstringa<512> copy{str_with_len_N};/2048_stddev 6.33 ns 5.39 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 4.78 % 4.09 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 199 ns 196 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 198 ns 197 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 7.07 ns 7.06 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 3.56 % 3.60 % 10 ----- Convert to int '1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 30.8 ns 30.7 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 30.6 ns 30.8 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.714 ns 0.877 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 2.32 % 2.86 % 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 13.5 ns 13.4 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 13.3 ns 13.3 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.465 ns 0.535 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 3.44 % 3.99 % 10 -stringa s = "123456789"; int res = s.to_int_mean 14.1 ns 14.1 ns 10 -stringa s = "123456789"; int res = s.to_int_median 14.1 ns 14.0 ns 10 -stringa s = "123456789"; int res = s.to_int_stddev 0.277 ns 0.328 ns 10 -stringa s = "123456789"; int res = s.to_int_cv 1.96 % 2.32 % 10 -ssa s = "123456789"; int res = s.to_int_mean 13.5 ns 13.4 ns 10 -ssa s = "123456789"; int res = s.to_int_median 13.3 ns 13.2 ns 10 -ssa s = "123456789"; int res = s.to_int_stddev 0.612 ns 0.607 ns 10 -ssa s = "123456789"; int res = s.to_int_cv 4.54 % 4.51 % 10 -lstringa<20> s = "123456789"; int res = s.to_int_mean 13.6 ns 13.6 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_median 13.3 ns 13.4 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.588 ns 0.706 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_cv 4.32 % 5.19 % 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 31.8 ns 31.6 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 31.3 ns 31.1 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 1.99 ns 2.03 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 6.24 % 6.41 % 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 14.1 ns 14.0 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 14.0 ns 13.8 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.462 ns 0.473 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 3.28 % 3.38 % 10 +stringa s = "123456789"; int res = s.to_int_mean 14.4 ns 14.3 ns 10 +stringa s = "123456789"; int res = s.to_int_median 14.5 ns 14.3 ns 10 +stringa s = "123456789"; int res = s.to_int_stddev 0.407 ns 0.465 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 2.83 % 3.25 % 10 +ssa s = "123456789"; int res = s.to_int_mean 13.8 ns 13.6 ns 10 +ssa s = "123456789"; int res = s.to_int_median 13.7 ns 13.5 ns 10 +ssa s = "123456789"; int res = s.to_int_stddev 0.355 ns 0.256 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 2.58 % 1.88 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 13.8 ns 13.6 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 13.7 ns 13.5 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.460 ns 0.356 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 3.35 % 2.63 % 10 ----- Convert to unsigned 'abcDef' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 33.5 ns 33.2 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 33.0 ns 33.0 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.985 ns 1.04 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 2.94 % 3.13 % 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 8.14 ns 8.06 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 8.04 ns 8.02 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.214 ns 0.160 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 2.62 % 1.99 % 10 -stringa s = "abcDef"; int res = s.to_int_mean 13.9 ns 13.8 ns 10 -stringa s = "abcDef"; int res = s.to_int_median 13.8 ns 13.8 ns 10 -stringa s = "abcDef"; int res = s.to_int_stddev 0.259 ns 0.362 ns 10 -stringa s = "abcDef"; int res = s.to_int_cv 1.86 % 2.62 % 10 -ssa s = "abcDef"; int res = s.to_int_mean 12.6 ns 12.5 ns 10 -ssa s = "abcDef"; int res = s.to_int_median 12.6 ns 12.6 ns 10 -ssa s = "abcDef"; int res = s.to_int_stddev 0.114 ns 0.256 ns 10 -ssa s = "abcDef"; int res = s.to_int_cv 0.90 % 2.05 % 10 -lstringa<20> s = "abcDef"; int res = s.to_int_mean 11.8 ns 11.7 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_median 11.8 ns 11.6 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.147 ns 0.152 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_cv 1.25 % 1.30 % 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 33.8 ns 33.6 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 33.4 ns 33.3 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.875 ns 1.17 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 2.59 % 3.48 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 8.36 ns 8.27 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 8.37 ns 8.27 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.254 ns 0.283 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 3.04 % 3.43 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 13.0 ns 13.0 ns 10 +stringa s = "abcDef"; int res = s.to_int_median 13.0 ns 13.0 ns 10 +stringa s = "abcDef"; int res = s.to_int_stddev 0.814 ns 0.803 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 6.24 % 6.19 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 12.4 ns 12.3 ns 10 +ssa s = "abcDef"; int res = s.to_int_median 12.5 ns 12.2 ns 10 +ssa s = "abcDef"; int res = s.to_int_stddev 0.369 ns 0.420 ns 10 +ssa s = "abcDef"; int res = s.to_int_cv 2.97 % 3.40 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_mean 12.3 ns 12.0 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_median 12.3 ns 12.0 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.474 ns 0.327 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 3.85 % 2.71 % 10 ----- Convert to int ' 1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 43.6 ns 43.1 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 43.2 ns 42.8 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 1.36 ns 1.39 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 3.13 % 3.22 % 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 18.2 ns 18.1 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 18.3 ns 18.0 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.318 ns 0.432 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 1.74 % 2.39 % 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 16.2 ns 16.0 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 16.1 ns 15.9 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.478 ns 0.403 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 2.96 % 2.51 % 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 45.7 ns 45.2 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 46.0 ns 44.4 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 2.11 ns 2.39 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 4.61 % 5.30 % 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 19.5 ns 19.5 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 19.2 ns 19.3 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.860 ns 1.01 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 4.42 % 5.21 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 15.9 ns 15.7 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 16.1 ns 15.7 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.606 ns 0.600 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 3.82 % 3.82 % 10 ----- Convert to double '1234.567e10' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 98.3 ns 96.9 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 96.7 ns 97.7 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 4.06 ns 2.32 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 4.13 % 2.39 % 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 59.2 ns 58.6 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 58.5 ns 57.8 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 2.00 ns 1.69 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 3.38 % 2.88 % 10 -ssa s = "1234.567e10"; double res = *s.to_double()_mean 35.1 ns 34.9 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_median 34.6 ns 34.4 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_stddev 1.29 ns 0.980 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_cv 3.69 % 2.80 % 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 104 ns 104 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 103 ns 104 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 4.01 ns 3.49 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 3.86 % 3.36 % 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 62.1 ns 61.8 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 62.6 ns 62.1 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 1.88 ns 2.19 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 3.03 % 3.54 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_mean 35.8 ns 35.4 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_median 35.6 ns 35.3 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.859 ns 0.844 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 2.40 % 2.39 % 10 -- Append const literal of 16 bytes 64 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << "abbaabbaabbaabba";_mean 4661 ns 4604 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_median 4646 ns 4604 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 86.0 ns 69.8 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_cv 1.85 % 1.52 % 10 -std::string str; ... str += "abbaabbaabbaabba";_mean 1070 ns 1062 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_median 1061 ns 1050 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_stddev 25.8 ns 20.7 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_cv 2.41 % 1.95 % 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 736 ns 727 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_median 739 ns 725 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 20.0 ns 13.9 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 2.72 % 1.91 % 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 396 ns 392 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_median 394 ns 392 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 11.0 ns 7.12 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 2.77 % 1.81 % 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 234 ns 233 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_median 233 ns 233 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 4.95 ns 4.45 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 2.11 % 1.91 % 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 155 ns 153 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 154 ns 153 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 2.64 ns 2.75 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.71 % 1.80 % 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 5448 ns 5391 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 5281 ns 5234 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 582 ns 600 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 10.69 % 11.12 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 1058 ns 1052 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 1049 ns 1038 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 35.4 ns 43.7 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 3.34 % 4.16 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 784 ns 778 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 766 ns 759 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 67.9 ns 68.4 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 8.66 % 8.79 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 397 ns 395 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 383 ns 377 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 32.7 ns 32.0 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 8.23 % 8.10 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 241 ns 238 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 234 ns 234 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 15.3 ns 14.9 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 6.37 % 6.28 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 152 ns 152 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 152 ns 152 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 1.05 ns 1.84 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 0.69 % 1.21 % 10 -- Append string of 16 bytes and const literal of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 4793 ns 4734 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 4773 ns 4703 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 281 ns 277 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 5.87 % 5.86 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 3861 ns 3819 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_median 3863 ns 3749 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 133 ns 135 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 3.44 % 3.54 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 726 ns 713 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 720 ns 711 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 42.3 ns 18.0 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.83 % 2.52 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 440 ns 436 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 436 ns 439 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 12.2 ns 8.24 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.77 % 1.89 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 287 ns 285 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 284 ns 283 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 6.55 ns 4.39 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.28 % 1.54 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 183 ns 181 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 181 ns 180 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 3.10 ns 4.43 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.70 % 2.45 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 4534 ns 4506 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 4512 ns 4464 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 180 ns 162 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 3.97 % 3.59 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 3803 ns 3775 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 3832 ns 3793 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 138 ns 130 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 3.64 % 3.45 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 698 ns 699 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 691 ns 698 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 20.3 ns 19.1 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.91 % 2.74 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 446 ns 443 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 443 ns 445 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 12.4 ns 10.4 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.79 % 2.36 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 293 ns 290 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 292 ns 285 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 8.20 ns 9.90 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.80 % 3.42 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 205 ns 203 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 202 ns 202 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 7.28 ns 6.87 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.55 % 3.38 % 10 -- Append string of 16 bytes and const literal of 16 bytes 2048 times, 65536 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 221750 ns 219004 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 218930 ns 215377 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 12107 ns 12101 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 5.46 % 5.53 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 194313 ns 192252 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 189899 ns 190438 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 8351 ns 8865 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.30 % 4.61 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17965 ns 17878 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17710 ns 17648 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 662 ns 682 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.69 % 3.81 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17021 ns 16919 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16966 ns 16881 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 348 ns 494 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.05 % 2.92 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16893 ns 16766 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16799 ns 16881 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 703 ns 573 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.16 % 3.42 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16257 ns 16183 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16080 ns 16044 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 357 ns 441 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.20 % 2.73 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 226006 ns 224609 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 228886 ns 227051 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 8619 ns 8612 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 3.81 % 3.83 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 202060 ns 202166 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 200845 ns 200911 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 17255 ns 17764 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 8.54 % 8.79 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 18025 ns 17955 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17996 ns 17840 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 524 ns 594 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.91 % 3.31 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16217 ns 16152 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16181 ns 16113 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 297 ns 382 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.83 % 2.36 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 15826 ns 15625 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 15620 ns 15695 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 416 ns 396 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.63 % 2.53 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16177 ns 16148 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 15872 ns 15869 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 890 ns 886 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.50 % 5.49 % 10 -- Append 2 string of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var1 << str_var2;_mean 4399 ns 4336 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_median 4368 ns 4297 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_stddev 109 ns 105 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_cv 2.49 % 2.42 % 10 -std::string str; ... str += str_var1 + str_var2;_mean 3920 ns 3884 ns 10 -std::string str; ... str += str_var1 + str_var2;_median 3858 ns 3850 ns 10 -std::string str; ... str += str_var1 + str_var2;_stddev 188 ns 138 ns 10 -std::string str; ... str += str_var1 + str_var2;_cv 4.80 % 3.55 % 10 -lstringa<16> str; ... str += str_var1 + str_var2;_mean 817 ns 807 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_median 803 ns 802 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_stddev 38.0 ns 35.9 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_cv 4.65 % 4.44 % 10 -lstringa<128> str; ... str += str_var1 + str_var2;_mean 545 ns 542 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_median 545 ns 539 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_stddev 13.7 ns 12.9 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_cv 2.52 % 2.37 % 10 -lstringa<512> str; ... str += str_var1 + str_var2;_mean 381 ns 375 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_median 383 ns 369 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_stddev 12.9 ns 13.1 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_cv 3.39 % 3.50 % 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_mean 284 ns 277 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_median 284 ns 276 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 5.92 ns 7.52 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_cv 2.09 % 2.71 % 10 +std::stringstream str; ... str << str_var1 << str_var2;_mean 4604 ns 4548 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 4425 ns 4332 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 417 ns 435 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 9.05 % 9.57 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 3797 ns 3784 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 3746 ns 3749 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 169 ns 180 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 4.45 % 4.76 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 813 ns 788 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_median 803 ns 785 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_stddev 38.4 ns 19.8 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 4.73 % 2.51 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 527 ns 525 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 523 ns 516 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 24.2 ns 24.8 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 4.58 % 4.72 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 381 ns 376 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 381 ns 375 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 8.04 ns 9.60 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 2.11 % 2.55 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 278 ns 276 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 278 ns 276 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 4.29 ns 4.19 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 1.54 % 1.52 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; str << "test = " << k << " times";_mean 11067 ns 10889 ns 10 -std::stringstream str; str << "test = " << k << " times";_median 11053 ns 10986 ns 10 -std::stringstream str; str << "test = " << k << " times";_stddev 367 ns 349 ns 10 -std::stringstream str; str << "test = " << k << " times";_cv 3.32 % 3.21 % 10 -std::string str = "test = " + std::to_string(k) + " times";_mean 1078 ns 1067 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_median 1072 ns 1046 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_stddev 32.9 ns 38.2 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_cv 3.05 % 3.58 % 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 2776 ns 2745 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 2756 ns 2727 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 72.0 ns 48.8 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 2.59 % 1.78 % 10 -std::string str = std::format("test = {} times", k);_mean 2001 ns 1992 ns 10 -std::string str = std::format("test = {} times", k);_median 2000 ns 2009 ns 10 -std::string str = std::format("test = {} times", k);_stddev 86.8 ns 74.3 ns 10 -std::string str = std::format("test = {} times", k);_cv 4.34 % 3.73 % 10 -lstringa<8> str; str.format("test = {} times", k);_mean 2076 ns 2054 ns 10 -lstringa<8> str; str.format("test = {} times", k);_median 2036 ns 2040 ns 10 -lstringa<8> str; str.format("test = {} times", k);_stddev 84.9 ns 56.8 ns 10 -lstringa<8> str; str.format("test = {} times", k);_cv 4.09 % 2.76 % 10 -lstringa<32> str; str.format("test = {} times", k);_mean 1004 ns 1000 ns 10 -lstringa<32> str; str.format("test = {} times", k);_median 990 ns 984 ns 10 -lstringa<32> str; str.format("test = {} times", k);_stddev 29.4 ns 32.4 ns 10 -lstringa<32> str; str.format("test = {} times", k);_cv 2.93 % 3.24 % 10 -lstringa<8> str = "test = " + k + " times";_mean 778 ns 774 ns 10 -lstringa<8> str = "test = " + k + " times";_median 775 ns 767 ns 10 -lstringa<8> str = "test = " + k + " times";_stddev 14.5 ns 22.1 ns 10 -lstringa<8> str = "test = " + k + " times";_cv 1.86 % 2.85 % 10 -lstringa<32> str = "test = " + k + " times";_mean 154 ns 153 ns 10 -lstringa<32> str = "test = " + k + " times";_median 152 ns 153 ns 10 -lstringa<32> str = "test = " + k + " times";_stddev 6.33 ns 6.37 ns 10 -lstringa<32> str = "test = " + k + " times";_cv 4.10 % 4.15 % 10 -stringa str = "test = " + k + " times";_mean 152 ns 150 ns 10 -stringa str = "test = " + k + " times";_median 151 ns 149 ns 10 -stringa str = "test = " + k + " times";_stddev 2.90 ns 3.45 ns 10 -stringa str = "test = " + k + " times";_cv 1.90 % 2.30 % 10 +std::stringstream str; str << "test = " << k << " times";_mean 10665 ns 10631 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 10596 ns 10568 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 219 ns 192 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 2.06 % 1.81 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 1052 ns 1042 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 1046 ns 1038 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 24.8 ns 28.3 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 2.36 % 2.72 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 2789 ns 2781 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 2746 ns 2727 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 103 ns 103 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 3.70 % 3.69 % 10 +std::string str = std::format("test = {} times", k);_mean 1904 ns 1888 ns 10 +std::string str = std::format("test = {} times", k);_median 1868 ns 1883 ns 10 +std::string str = std::format("test = {} times", k);_stddev 66.4 ns 69.6 ns 10 +std::string str = std::format("test = {} times", k);_cv 3.48 % 3.69 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 2168 ns 2149 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 2162 ns 2131 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 145 ns 162 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 6.71 % 7.52 % 10 +lstringa<32> str; str.format("test = {} times", k);_mean 1029 ns 1021 ns 10 +lstringa<32> str; str.format("test = {} times", k);_median 1031 ns 1013 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 41.9 ns 47.2 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 4.07 % 4.62 % 10 +lstringa<8> str = "test = " + k + " times";_mean 807 ns 799 ns 10 +lstringa<8> str = "test = " + k + " times";_median 786 ns 776 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 61.1 ns 59.2 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 7.57 % 7.41 % 10 +lstringa<32> str = "test = " + k + " times";_mean 155 ns 154 ns 10 +lstringa<32> str = "test = " + k + " times";_median 153 ns 154 ns 10 +lstringa<32> str = "test = " + k + " times";_stddev 8.84 ns 9.53 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 5.71 % 6.18 % 10 +stringa str = "test = " + k + " times";_mean 151 ns 150 ns 10 +stringa str = "test = " + k + " times";_median 151 ns 151 ns 10 +stringa str = "test = " + k + " times";_stddev 3.50 ns 4.45 ns 10 +stringa str = "test = " + k + " times";_cv 2.32 % 2.97 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find + substr + std::strtol_mean 546 ns 533 ns 10 -std::string::find + substr + std::strtol_median 549 ns 530 ns 10 -std::string::find + substr + std::strtol_stddev 14.3 ns 11.0 ns 10 -std::string::find + substr + std::strtol_cv 2.61 % 2.06 % 10 -ssa::splitter + ssa::as_int_mean 170 ns 169 ns 10 -ssa::splitter + ssa::as_int_median 168 ns 169 ns 10 -ssa::splitter + ssa::as_int_stddev 5.45 ns 4.43 ns 10 -ssa::splitter + ssa::as_int_cv 3.21 % 2.62 % 10 -ssa::splitf + functor_mean 188 ns 186 ns 10 -ssa::splitf + functor_median 187 ns 186 ns 10 -ssa::splitf + functor_stddev 6.56 ns 6.41 ns 10 -ssa::splitf + functor_cv 3.49 % 3.45 % 10 +std::string::find + substr + std::strtol_mean 539 ns 530 ns 10 +std::string::find + substr + std::strtol_median 533 ns 531 ns 10 +std::string::find + substr + std::strtol_stddev 16.5 ns 11.5 ns 10 +std::string::find + substr + std::strtol_cv 3.05 % 2.18 % 10 +ssa::splitter + ssa::as_int_mean 173 ns 172 ns 10 +ssa::splitter + ssa::as_int_median 174 ns 174 ns 10 +ssa::splitter + ssa::as_int_stddev 12.7 ns 12.7 ns 10 +ssa::splitter + ssa::as_int_cv 7.38 % 7.34 % 10 +ssa::splitf + functor_mean 191 ns 190 ns 10 +ssa::splitf + functor_median 189 ns 190 ns 10 +ssa::splitf + functor_stddev 5.99 ns 6.57 ns 10 +ssa::splitf + functor_cv 3.13 % 3.46 % 10 -- Replace symbols in text ~400 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Naive (and wrong) replace symbols with std::string find + replace_mean 1153 ns 1138 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_median 1128 ns 1116 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_stddev 64.4 ns 41.2 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_cv 5.58 % 3.62 % 10 -replace symbols with std::string find_first_of + replace_mean 2047 ns 2031 ns 10 -replace symbols with std::string find_first_of + replace_median 2017 ns 2018 ns 10 -replace symbols with std::string find_first_of + replace_stddev 98.2 ns 99.8 ns 10 -replace symbols with std::string find_first_of + replace_cv 4.80 % 4.91 % 10 -replace symbols with std::string_view find_first_of + copy_mean 2300 ns 2280 ns 10 -replace symbols with std::string_view find_first_of + copy_median 2286 ns 2295 ns 10 -replace symbols with std::string_view find_first_of + copy_stddev 58.4 ns 61.1 ns 10 -replace symbols with std::string_view find_first_of + copy_cv 2.54 % 2.68 % 10 -replace runtime symbols with string expressions and without remembering all search results_mean 1434 ns 1413 ns 10 -replace runtime symbols with string expressions and without remembering all search results_median 1428 ns 1397 ns 10 -replace runtime symbols with string expressions and without remembering all search results_stddev 48.8 ns 49.1 ns 10 -replace runtime symbols with string expressions and without remembering all search results_cv 3.40 % 3.47 % 10 -replace runtime symbols with simstr and memorization of all search results_mean 1349 ns 1334 ns 10 -replace runtime symbols with simstr and memorization of all search results_median 1339 ns 1350 ns 10 -replace runtime symbols with simstr and memorization of all search results_stddev 32.5 ns 39.8 ns 10 -replace runtime symbols with simstr and memorization of all search results_cv 2.41 % 2.99 % 10 -replace const symbols with string expressions and without remembering all search results_mean 1146 ns 1135 ns 10 -replace const symbols with string expressions and without remembering all search results_median 1137 ns 1147 ns 10 -replace const symbols with string expressions and without remembering all search results_stddev 29.7 ns 31.0 ns 10 -replace const symbols with string expressions and without remembering all search results_cv 2.59 % 2.73 % 10 -replace const symbols with string expressions and memorization of all search results_mean 1213 ns 1197 ns 10 -replace const symbols with string expressions and memorization of all search results_median 1200 ns 1186 ns 10 -replace const symbols with string expressions and memorization of all search results_stddev 35.7 ns 30.7 ns 10 -replace const symbols with string expressions and memorization of all search results_cv 2.94 % 2.57 % 10 +Naive (and wrong) replace symbols with std::string find + replace_mean 1185 ns 1184 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 1161 ns 1147 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 77.2 ns 79.9 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 6.51 % 6.75 % 10 +replace symbols with std::string find_first_of + replace_mean 2165 ns 2158 ns 10 +replace symbols with std::string find_first_of + replace_median 2114 ns 2105 ns 10 +replace symbols with std::string find_first_of + replace_stddev 188 ns 196 ns 10 +replace symbols with std::string find_first_of + replace_cv 8.69 % 9.08 % 10 +replace symbols with std::string_view find_first_of + copy_mean 2298 ns 2285 ns 10 +replace symbols with std::string_view find_first_of + copy_median 2297 ns 2295 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 34.5 ns 38.5 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 1.50 % 1.69 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 1439 ns 1422 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 1453 ns 1413 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 55.0 ns 46.9 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 3.82 % 3.30 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 1270 ns 1270 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 1256 ns 1256 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 51.5 ns 42.1 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 4.06 % 3.32 % 10 +replace const symbols with string expressions and without remembering all search results_mean 1135 ns 1119 ns 10 +replace const symbols with string expressions and without remembering all search results_median 1134 ns 1116 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 28.1 ns 33.4 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 2.48 % 2.99 % 10 +replace const symbols with string expressions and memorization of all search results_mean 1210 ns 1189 ns 10 +replace const symbols with string expressions and memorization of all search results_median 1206 ns 1184 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 32.6 ns 38.3 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 2.69 % 3.22 % 10 -- Replace symbols in text ~40 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Short Naive (and wrong) replace symbols with std::string find + replace_mean 314 ns 312 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_median 315 ns 311 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_stddev 7.64 ns 9.08 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_cv 2.43 % 2.91 % 10 -Short replace symbols with std::string find_first_of + replace_mean 369 ns 367 ns 10 -Short replace symbols with std::string find_first_of + replace_median 363 ns 360 ns 10 -Short replace symbols with std::string find_first_of + replace_stddev 14.2 ns 16.9 ns 10 -Short replace symbols with std::string find_first_of + replace_cv 3.83 % 4.61 % 10 -Short replace symbols with std::string_view find_first_of + copy_mean 322 ns 321 ns 10 -Short replace symbols with std::string_view find_first_of + copy_median 321 ns 321 ns 10 -Short replace symbols with std::string_view find_first_of + copy_stddev 9.99 ns 9.98 ns 10 -Short replace symbols with std::string_view find_first_of + copy_cv 3.10 % 3.11 % 10 -Short replace runtime symbols with string expressions and without remembering all search results_mean 258 ns 257 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_median 259 ns 259 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_stddev 4.29 ns 6.43 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_cv 1.66 % 2.50 % 10 -Short replace runtime symbols with simstr and memorization of all search results_mean 344 ns 343 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_median 340 ns 339 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_stddev 11.9 ns 12.5 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_cv 3.46 % 3.64 % 10 -Short replace const symbols with string expressions and without remembering all search results_mean 213 ns 213 ns 10 -Short replace const symbols with string expressions and without remembering all search results_median 214 ns 213 ns 10 -Short replace const symbols with string expressions and without remembering all search results_stddev 4.05 ns 4.51 ns 10 -Short replace const symbols with string expressions and without remembering all search results_cv 1.90 % 2.12 % 10 -Short replace const symbols with string expressions and memorization of all search results_mean 303 ns 301 ns 10 -Short replace const symbols with string expressions and memorization of all search results_median 300 ns 298 ns 10 -Short replace const symbols with string expressions and memorization of all search results_stddev 8.35 ns 9.57 ns 10 -Short replace const symbols with string expressions and memorization of all search results_cv 2.75 % 3.18 % 10 +Short Naive (and wrong) replace symbols with std::string find + replace_mean 321 ns 317 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 321 ns 315 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 7.98 ns 6.59 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 2.49 % 2.08 % 10 +Short replace symbols with std::string find_first_of + replace_mean 385 ns 383 ns 10 +Short replace symbols with std::string find_first_of + replace_median 381 ns 385 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 15.7 ns 17.1 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 4.07 % 4.46 % 10 +Short replace symbols with std::string_view find_first_of + copy_mean 330 ns 327 ns 10 +Short replace symbols with std::string_view find_first_of + copy_median 327 ns 326 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 17.1 ns 20.4 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 5.18 % 6.23 % 10 +Short replace runtime symbols with string expressions and without remembering all search results_mean 269 ns 267 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_median 269 ns 267 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 9.88 ns 6.85 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 3.67 % 2.57 % 10 +Short replace runtime symbols with simstr and memorization of all search results_mean 348 ns 346 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_median 350 ns 345 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 15.4 ns 13.2 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 4.44 % 3.83 % 10 +Short replace const symbols with string expressions and without remembering all search results_mean 232 ns 228 ns 10 +Short replace const symbols with string expressions and without remembering all search results_median 230 ns 225 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 16.6 ns 17.5 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 7.19 % 7.66 % 10 +Short replace const symbols with string expressions and memorization of all search results_mean 323 ns 322 ns 10 +Short replace const symbols with string expressions and memorization of all search results_median 323 ns 322 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 9.17 ns 10.4 ns 10 +Short replace const symbols with string expressions and memorization of all search results_cv 2.84 % 3.21 % 10 ----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to ---- in std::string|64_mean 227 ns 223 ns 10 -replace bb to ---- in std::string|64_median 226 ns 222 ns 10 -replace bb to ---- in std::string|64_stddev 6.99 ns 4.02 ns 10 -replace bb to ---- in std::string|64_cv 3.08 % 1.80 % 10 -replace bb to ---- in std::string|256_mean 765 ns 760 ns 10 -replace bb to ---- in std::string|256_median 766 ns 753 ns 10 -replace bb to ---- in std::string|256_stddev 21.8 ns 20.0 ns 10 -replace bb to ---- in std::string|256_cv 2.85 % 2.63 % 10 -replace bb to ---- in std::string|512_mean 1465 ns 1456 ns 10 -replace bb to ---- in std::string|512_median 1468 ns 1451 ns 10 -replace bb to ---- in std::string|512_stddev 71.6 ns 73.0 ns 10 -replace bb to ---- in std::string|512_cv 4.89 % 5.01 % 10 -replace bb to ---- in std::string|1024_mean 3193 ns 3121 ns 10 -replace bb to ---- in std::string|1024_median 3207 ns 3181 ns 10 -replace bb to ---- in std::string|1024_stddev 145 ns 115 ns 10 -replace bb to ---- in std::string|1024_cv 4.53 % 3.67 % 10 -replace bb to ---- in std::string|2048_mean 7883 ns 7778 ns 10 -replace bb to ---- in std::string|2048_median 7810 ns 7673 ns 10 -replace bb to ---- in std::string|2048_stddev 224 ns 205 ns 10 -replace bb to ---- in std::string|2048_cv 2.84 % 2.63 % 10 -replace bb to ---- in lstringa<8>|64_mean 320 ns 314 ns 10 -replace bb to ---- in lstringa<8>|64_median 320 ns 315 ns 10 -replace bb to ---- in lstringa<8>|64_stddev 16.3 ns 11.2 ns 10 -replace bb to ---- in lstringa<8>|64_cv 5.11 % 3.55 % 10 -replace bb to ---- in lstringa<8>|256_mean 629 ns 621 ns 10 -replace bb to ---- in lstringa<8>|256_median 621 ns 614 ns 10 -replace bb to ---- in lstringa<8>|256_stddev 18.4 ns 13.6 ns 10 -replace bb to ---- in lstringa<8>|256_cv 2.92 % 2.18 % 10 -replace bb to ---- in lstringa<8>|512_mean 1065 ns 1057 ns 10 -replace bb to ---- in lstringa<8>|512_median 1056 ns 1050 ns 10 -replace bb to ---- in lstringa<8>|512_stddev 31.2 ns 30.6 ns 10 -replace bb to ---- in lstringa<8>|512_cv 2.93 % 2.89 % 10 -replace bb to ---- in lstringa<8>|1024_mean 1907 ns 1879 ns 10 -replace bb to ---- in lstringa<8>|1024_median 1880 ns 1883 ns 10 -replace bb to ---- in lstringa<8>|1024_stddev 61.4 ns 50.1 ns 10 -replace bb to ---- in lstringa<8>|1024_cv 3.22 % 2.67 % 10 -replace bb to ---- in lstringa<8>|2048_mean 3579 ns 3522 ns 10 -replace bb to ---- in lstringa<8>|2048_median 3524 ns 3530 ns 10 -replace bb to ---- in lstringa<8>|2048_stddev 95.4 ns 43.6 ns 10 -replace bb to ---- in lstringa<8>|2048_cv 2.67 % 1.24 % 10 -replace bb to ---- by init stringa|64_mean 172 ns 168 ns 10 -replace bb to ---- by init stringa|64_median 171 ns 164 ns 10 -replace bb to ---- by init stringa|64_stddev 9.74 ns 8.35 ns 10 -replace bb to ---- by init stringa|64_cv 5.68 % 4.97 % 10 -replace bb to ---- by init stringa|256_mean 377 ns 375 ns 10 -replace bb to ---- by init stringa|256_median 374 ns 372 ns 10 -replace bb to ---- by init stringa|256_stddev 8.32 ns 8.65 ns 10 -replace bb to ---- by init stringa|256_cv 2.21 % 2.31 % 10 -replace bb to ---- by init stringa|512_mean 813 ns 802 ns 10 -replace bb to ---- by init stringa|512_median 808 ns 802 ns 10 -replace bb to ---- by init stringa|512_stddev 20.4 ns 18.4 ns 10 -replace bb to ---- by init stringa|512_cv 2.51 % 2.29 % 10 -replace bb to ---- by init stringa|1024_mean 1637 ns 1625 ns 10 -replace bb to ---- by init stringa|1024_median 1614 ns 1604 ns 10 -replace bb to ---- by init stringa|1024_stddev 49.5 ns 52.5 ns 10 -replace bb to ---- by init stringa|1024_cv 3.02 % 3.23 % 10 -replace bb to ---- by init stringa|2048_mean 3090 ns 3062 ns 10 -replace bb to ---- by init stringa|2048_median 3057 ns 3048 ns 10 -replace bb to ---- by init stringa|2048_stddev 93.5 ns 68.4 ns 10 -replace bb to ---- by init stringa|2048_cv 3.03 % 2.24 % 10 +replace bb to ---- in std::string|64_mean 232 ns 231 ns 10 +replace bb to ---- in std::string|64_median 233 ns 233 ns 10 +replace bb to ---- in std::string|64_stddev 7.63 ns 6.73 ns 10 +replace bb to ---- in std::string|64_cv 3.29 % 2.92 % 10 +replace bb to ---- in std::string|256_mean 757 ns 755 ns 10 +replace bb to ---- in std::string|256_median 752 ns 750 ns 10 +replace bb to ---- in std::string|256_stddev 26.0 ns 24.7 ns 10 +replace bb to ---- in std::string|256_cv 3.44 % 3.28 % 10 +replace bb to ---- in std::string|512_mean 1482 ns 1472 ns 10 +replace bb to ---- in std::string|512_median 1474 ns 1475 ns 10 +replace bb to ---- in std::string|512_stddev 59.8 ns 60.0 ns 10 +replace bb to ---- in std::string|512_cv 4.03 % 4.08 % 10 +replace bb to ---- in std::string|1024_mean 3150 ns 3134 ns 10 +replace bb to ---- in std::string|1024_median 3098 ns 3115 ns 10 +replace bb to ---- in std::string|1024_stddev 102 ns 99.0 ns 10 +replace bb to ---- in std::string|1024_cv 3.25 % 3.16 % 10 +replace bb to ---- in std::string|2048_mean 8049 ns 7987 ns 10 +replace bb to ---- in std::string|2048_median 8074 ns 7935 ns 10 +replace bb to ---- in std::string|2048_stddev 217 ns 198 ns 10 +replace bb to ---- in std::string|2048_cv 2.70 % 2.48 % 10 +replace bb to ---- in lstringa<8>|64_mean 304 ns 300 ns 10 +replace bb to ---- in lstringa<8>|64_median 302 ns 298 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 13.4 ns 10.7 ns 10 +replace bb to ---- in lstringa<8>|64_cv 4.40 % 3.58 % 10 +replace bb to ---- in lstringa<8>|256_mean 606 ns 603 ns 10 +replace bb to ---- in lstringa<8>|256_median 607 ns 609 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 12.0 ns 15.1 ns 10 +replace bb to ---- in lstringa<8>|256_cv 1.98 % 2.50 % 10 +replace bb to ---- in lstringa<8>|512_mean 1054 ns 1035 ns 10 +replace bb to ---- in lstringa<8>|512_median 1045 ns 1025 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 37.3 ns 38.5 ns 10 +replace bb to ---- in lstringa<8>|512_cv 3.54 % 3.72 % 10 +replace bb to ---- in lstringa<8>|1024_mean 1839 ns 1816 ns 10 +replace bb to ---- in lstringa<8>|1024_median 1826 ns 1800 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 46.2 ns 45.0 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 2.51 % 2.48 % 10 +replace bb to ---- in lstringa<8>|2048_mean 3503 ns 3479 ns 10 +replace bb to ---- in lstringa<8>|2048_median 3474 ns 3442 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 95.2 ns 105 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 2.72 % 3.02 % 10 +replace bb to ---- by init stringa|64_mean 183 ns 183 ns 10 +replace bb to ---- by init stringa|64_median 186 ns 183 ns 10 +replace bb to ---- by init stringa|64_stddev 16.6 ns 16.5 ns 10 +replace bb to ---- by init stringa|64_cv 9.07 % 9.01 % 10 +replace bb to ---- by init stringa|256_mean 374 ns 372 ns 10 +replace bb to ---- by init stringa|256_median 371 ns 369 ns 10 +replace bb to ---- by init stringa|256_stddev 12.3 ns 9.42 ns 10 +replace bb to ---- by init stringa|256_cv 3.28 % 2.53 % 10 +replace bb to ---- by init stringa|512_mean 824 ns 818 ns 10 +replace bb to ---- by init stringa|512_median 816 ns 802 ns 10 +replace bb to ---- by init stringa|512_stddev 37.6 ns 36.3 ns 10 +replace bb to ---- by init stringa|512_cv 4.56 % 4.43 % 10 +replace bb to ---- by init stringa|1024_mean 1681 ns 1657 ns 10 +replace bb to ---- by init stringa|1024_median 1670 ns 1639 ns 10 +replace bb to ---- by init stringa|1024_stddev 79.8 ns 85.8 ns 10 +replace bb to ---- by init stringa|1024_cv 4.75 % 5.18 % 10 +replace bb to ---- by init stringa|2048_mean 3111 ns 3090 ns 10 +replace bb to ---- by init stringa|2048_median 3071 ns 3069 ns 10 +replace bb to ---- by init stringa|2048_stddev 113 ns 93.3 ns 10 +replace bb to ---- by init stringa|2048_cv 3.63 % 3.02 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to -- in std::string|64_mean 190 ns 190 ns 10 -replace bb to -- in std::string|64_median 190 ns 190 ns 10 -replace bb to -- in std::string|64_stddev 5.77 ns 7.18 ns 10 -replace bb to -- in std::string|64_cv 3.03 % 3.77 % 10 -replace bb to -- in std::string|256_mean 468 ns 466 ns 10 -replace bb to -- in std::string|256_median 465 ns 460 ns 10 -replace bb to -- in std::string|256_stddev 8.61 ns 10.2 ns 10 -replace bb to -- in std::string|256_cv 1.84 % 2.18 % 10 -replace bb to -- in std::string|512_mean 842 ns 833 ns 10 -replace bb to -- in std::string|512_median 835 ns 837 ns 10 -replace bb to -- in std::string|512_stddev 23.2 ns 19.2 ns 10 -replace bb to -- in std::string|512_cv 2.76 % 2.31 % 10 -replace bb to -- in std::string|1024_mean 1614 ns 1597 ns 10 -replace bb to -- in std::string|1024_median 1579 ns 1569 ns 10 -replace bb to -- in std::string|1024_stddev 65.9 ns 61.1 ns 10 -replace bb to -- in std::string|1024_cv 4.09 % 3.82 % 10 -replace bb to -- in std::string|2048_mean 3157 ns 3134 ns 10 -replace bb to -- in std::string|2048_median 3144 ns 3115 ns 10 -replace bb to -- in std::string|2048_stddev 79.0 ns 44.7 ns 10 -replace bb to -- in std::string|2048_cv 2.50 % 1.43 % 10 -replace bb to -- in lstringa<8>|64_mean 185 ns 184 ns 10 -replace bb to -- in lstringa<8>|64_median 184 ns 181 ns 10 -replace bb to -- in lstringa<8>|64_stddev 4.07 ns 6.14 ns 10 -replace bb to -- in lstringa<8>|64_cv 2.20 % 3.34 % 10 -replace bb to -- in lstringa<8>|256_mean 435 ns 429 ns 10 -replace bb to -- in lstringa<8>|256_median 431 ns 424 ns 10 -replace bb to -- in lstringa<8>|256_stddev 21.1 ns 20.0 ns 10 -replace bb to -- in lstringa<8>|256_cv 4.84 % 4.65 % 10 -replace bb to -- in lstringa<8>|512_mean 763 ns 753 ns 10 -replace bb to -- in lstringa<8>|512_median 760 ns 753 ns 10 -replace bb to -- in lstringa<8>|512_stddev 15.0 ns 13.2 ns 10 -replace bb to -- in lstringa<8>|512_cv 1.96 % 1.75 % 10 -replace bb to -- in lstringa<8>|1024_mean 1404 ns 1394 ns 10 -replace bb to -- in lstringa<8>|1024_median 1395 ns 1397 ns 10 -replace bb to -- in lstringa<8>|1024_stddev 42.3 ns 39.7 ns 10 -replace bb to -- in lstringa<8>|1024_cv 3.01 % 2.85 % 10 -replace bb to -- in lstringa<8>|2048_mean 2741 ns 2716 ns 10 -replace bb to -- in lstringa<8>|2048_median 2744 ns 2727 ns 10 -replace bb to -- in lstringa<8>|2048_stddev 76.5 ns 67.3 ns 10 -replace bb to -- in lstringa<8>|2048_cv 2.79 % 2.48 % 10 -replace bb to -- by init stringa|64_mean 162 ns 161 ns 10 -replace bb to -- by init stringa|64_median 164 ns 162 ns 10 -replace bb to -- by init stringa|64_stddev 4.13 ns 4.20 ns 10 -replace bb to -- by init stringa|64_cv 2.55 % 2.61 % 10 -replace bb to -- by init stringa|256_mean 357 ns 353 ns 10 -replace bb to -- by init stringa|256_median 358 ns 353 ns 10 -replace bb to -- by init stringa|256_stddev 11.8 ns 10.7 ns 10 -replace bb to -- by init stringa|256_cv 3.30 % 3.03 % 10 -replace bb to -- by init stringa|512_mean 580 ns 564 ns 10 -replace bb to -- by init stringa|512_median 577 ns 558 ns 10 -replace bb to -- by init stringa|512_stddev 23.9 ns 11.8 ns 10 -replace bb to -- by init stringa|512_cv 4.13 % 2.09 % 10 -replace bb to -- by init stringa|1024_mean 1091 ns 1077 ns 10 -replace bb to -- by init stringa|1024_median 1091 ns 1086 ns 10 -replace bb to -- by init stringa|1024_stddev 48.5 ns 38.9 ns 10 -replace bb to -- by init stringa|1024_cv 4.45 % 3.62 % 10 -replace bb to -- by init stringa|2048_mean 1998 ns 1972 ns 10 -replace bb to -- by init stringa|2048_median 2010 ns 1972 ns 10 -replace bb to -- by init stringa|2048_stddev 51.7 ns 49.0 ns 10 -replace bb to -- by init stringa|2048_cv 2.59 % 2.48 % 10 +replace bb to -- in std::string|64_mean 196 ns 195 ns 10 +replace bb to -- in std::string|64_median 195 ns 195 ns 10 +replace bb to -- in std::string|64_stddev 10.4 ns 10.3 ns 10 +replace bb to -- in std::string|64_cv 5.28 % 5.28 % 10 +replace bb to -- in std::string|256_mean 487 ns 484 ns 10 +replace bb to -- in std::string|256_median 487 ns 476 ns 10 +replace bb to -- in std::string|256_stddev 21.2 ns 22.1 ns 10 +replace bb to -- in std::string|256_cv 4.35 % 4.56 % 10 +replace bb to -- in std::string|512_mean 899 ns 891 ns 10 +replace bb to -- in std::string|512_median 888 ns 889 ns 10 +replace bb to -- in std::string|512_stddev 45.6 ns 43.2 ns 10 +replace bb to -- in std::string|512_cv 5.07 % 4.85 % 10 +replace bb to -- in std::string|1024_mean 1687 ns 1671 ns 10 +replace bb to -- in std::string|1024_median 1675 ns 1639 ns 10 +replace bb to -- in std::string|1024_stddev 54.7 ns 60.3 ns 10 +replace bb to -- in std::string|1024_cv 3.24 % 3.61 % 10 +replace bb to -- in std::string|2048_mean 3148 ns 3125 ns 10 +replace bb to -- in std::string|2048_median 3169 ns 3104 ns 10 +replace bb to -- in std::string|2048_stddev 80.9 ns 85.7 ns 10 +replace bb to -- in std::string|2048_cv 2.57 % 2.74 % 10 +replace bb to -- in lstringa<8>|64_mean 179 ns 175 ns 10 +replace bb to -- in lstringa<8>|64_median 177 ns 173 ns 10 +replace bb to -- in lstringa<8>|64_stddev 6.25 ns 5.73 ns 10 +replace bb to -- in lstringa<8>|64_cv 3.50 % 3.27 % 10 +replace bb to -- in lstringa<8>|256_mean 440 ns 436 ns 10 +replace bb to -- in lstringa<8>|256_median 438 ns 430 ns 10 +replace bb to -- in lstringa<8>|256_stddev 10.5 ns 8.24 ns 10 +replace bb to -- in lstringa<8>|256_cv 2.38 % 1.89 % 10 +replace bb to -- in lstringa<8>|512_mean 797 ns 774 ns 10 +replace bb to -- in lstringa<8>|512_median 794 ns 767 ns 10 +replace bb to -- in lstringa<8>|512_stddev 21.6 ns 20.5 ns 10 +replace bb to -- in lstringa<8>|512_cv 2.72 % 2.64 % 10 +replace bb to -- in lstringa<8>|1024_mean 1542 ns 1531 ns 10 +replace bb to -- in lstringa<8>|1024_median 1580 ns 1569 ns 10 +replace bb to -- in lstringa<8>|1024_stddev 99.5 ns 105 ns 10 +replace bb to -- in lstringa<8>|1024_cv 6.46 % 6.83 % 10 +replace bb to -- in lstringa<8>|2048_mean 2927 ns 2907 ns 10 +replace bb to -- in lstringa<8>|2048_median 2841 ns 2825 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 231 ns 242 ns 10 +replace bb to -- in lstringa<8>|2048_cv 7.90 % 8.34 % 10 +replace bb to -- by init stringa|64_mean 156 ns 155 ns 10 +replace bb to -- by init stringa|64_median 155 ns 153 ns 10 +replace bb to -- by init stringa|64_stddev 3.02 ns 4.04 ns 10 +replace bb to -- by init stringa|64_cv 1.94 % 2.62 % 10 +replace bb to -- by init stringa|256_mean 349 ns 343 ns 10 +replace bb to -- by init stringa|256_median 347 ns 341 ns 10 +replace bb to -- by init stringa|256_stddev 10.00 ns 8.90 ns 10 +replace bb to -- by init stringa|256_cv 2.86 % 2.59 % 10 +replace bb to -- by init stringa|512_mean 583 ns 575 ns 10 +replace bb to -- by init stringa|512_median 583 ns 572 ns 10 +replace bb to -- by init stringa|512_stddev 19.5 ns 15.8 ns 10 +replace bb to -- by init stringa|512_cv 3.35 % 2.76 % 10 +replace bb to -- by init stringa|1024_mean 1099 ns 1082 ns 10 +replace bb to -- by init stringa|1024_median 1087 ns 1057 ns 10 +replace bb to -- by init stringa|1024_stddev 53.9 ns 60.9 ns 10 +replace bb to -- by init stringa|1024_cv 4.91 % 5.62 % 10 +replace bb to -- by init stringa|2048_mean 2073 ns 2040 ns 10 +replace bb to -- by init stringa|2048_median 2063 ns 2018 ns 10 +replace bb to -- by init stringa|2048_stddev 70.0 ns 95.6 ns 10 +replace bb to -- by init stringa|2048_cv 3.38 % 4.68 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -hashStrMapA emplace & find stringa;_mean 3693883 ns 3674930 ns 10 -hashStrMapA emplace & find stringa;_median 3687852 ns 3666201 ns 10 -hashStrMapA emplace & find stringa;_stddev 226433 ns 207589 ns 10 -hashStrMapA emplace & find stringa;_cv 6.13 % 5.65 % 10 -std::unordered_map emplace & find std::string;_mean 5258881 ns 5231585 ns 10 -std::unordered_map emplace & find std::string;_median 5227104 ns 5161830 ns 10 -std::unordered_map emplace & find std::string;_stddev 147989 ns 135578 ns 10 -std::unordered_map emplace & find std::string;_cv 2.81 % 2.59 % 10 -hashStrMapA emplace & find ssa;_mean 3418166 ns 3416054 ns 10 -hashStrMapA emplace & find ssa;_median 3409800 ns 3408395 ns 10 -hashStrMapA emplace & find ssa;_stddev 67498 ns 73996 ns 10 -hashStrMapA emplace & find ssa;_cv 1.97 % 2.17 % 10 -std::unordered_map emplace & find std::string_view;_mean 6295014 ns 6277902 ns 10 -std::unordered_map emplace & find std::string_view;_median 6199714 ns 6138393 ns 10 -std::unordered_map emplace & find std::string_view;_stddev 245175 ns 263061 ns 10 -std::unordered_map emplace & find std::string_view;_cv 3.89 % 4.19 % 10 +hashStrMapA emplace & find stringa;_mean 3795773 ns 3769531 ns 10 +hashStrMapA emplace & find stringa;_median 3826396 ns 3759766 ns 10 +hashStrMapA emplace & find stringa;_stddev 227197 ns 226465 ns 10 +hashStrMapA emplace & find stringa;_cv 5.99 % 6.01 % 10 +std::unordered_map emplace & find std::string;_mean 5814563 ns 5747768 ns 10 +std::unordered_map emplace & find std::string;_median 5763449 ns 5719866 ns 10 +std::unordered_map emplace & find std::string;_stddev 192134 ns 128200 ns 10 +std::unordered_map emplace & find std::string;_cv 3.30 % 2.23 % 10 +hashStrMapA emplace & find ssa;_mean 3507480 ns 3461538 ns 10 +hashStrMapA emplace & find ssa;_median 3499011 ns 3485577 ns 10 +hashStrMapA emplace & find ssa;_stddev 78058 ns 82756 ns 10 +hashStrMapA emplace & find ssa;_cv 2.23 % 2.39 % 10 +std::unordered_map emplace & find std::string_view;_mean 6774393 ns 6753472 ns 10 +std::unordered_map emplace & find std::string_view;_median 6769412 ns 6770833 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 180301 ns 207851 ns 10 +std::unordered_map emplace & find std::string_view;_cv 2.66 % 3.08 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Build func full name std::string;_mean 1533 ns 1522 ns 10 -Build func full name std::string;_median 1513 ns 1491 ns 10 -Build func full name std::string;_stddev 58.1 ns 59.6 ns 10 -Build func full name std::string;_cv 3.79 % 3.92 % 10 -Build func full name std::string 1;_mean 1602 ns 1588 ns 10 -Build func full name std::string 1;_median 1581 ns 1573 ns 10 -Build func full name std::string 1;_stddev 71.7 ns 70.5 ns 10 -Build func full name std::string 1;_cv 4.48 % 4.44 % 10 -Build func full name std::stream;_mean 8228 ns 8161 ns 10 -Build func full name std::stream;_median 8257 ns 8109 ns 10 -Build func full name std::stream;_stddev 326 ns 305 ns 10 -Build func full name std::stream;_cv 3.96 % 3.74 % 10 -Build func full name stringa;_mean 818 ns 815 ns 10 -Build func full name stringa;_median 817 ns 816 ns 10 -Build func full name stringa;_stddev 22.1 ns 24.8 ns 10 -Build func full name stringa;_cv 2.70 % 3.04 % 10 -Build func full name stringa 1;_mean 959 ns 952 ns 10 -Build func full name stringa 1;_median 936 ns 940 ns 10 -Build func full name stringa 1;_stddev 50.6 ns 43.1 ns 10 -Build func full name stringa 1;_cv 5.27 % 4.52 % 10 +Build func full name std::string;_mean 1611 ns 1597 ns 10 +Build func full name std::string;_median 1604 ns 1569 ns 10 +Build func full name std::string;_stddev 90.8 ns 99.7 ns 10 +Build func full name std::string;_cv 5.64 % 6.24 % 10 +Build func full name std::string 1;_mean 1681 ns 1664 ns 10 +Build func full name std::string 1;_median 1619 ns 1604 ns 10 +Build func full name std::string 1;_stddev 131 ns 127 ns 10 +Build func full name std::string 1;_cv 7.78 % 7.66 % 10 +Build func full name std::stream;_mean 8266 ns 8144 ns 10 +Build func full name std::stream;_median 8267 ns 8196 ns 10 +Build func full name std::stream;_stddev 309 ns 261 ns 10 +Build func full name std::stream;_cv 3.74 % 3.20 % 10 +Build func full name stringa;_mean 821 ns 814 ns 10 +Build func full name stringa;_median 814 ns 811 ns 10 +Build func full name stringa;_stddev 32.6 ns 34.9 ns 10 +Build func full name stringa;_cv 3.98 % 4.29 % 10 +Build func full name stringa 1;_mean 963 ns 945 ns 10 +Build func full name stringa 1;_median 963 ns 945 ns 10 +Build func full name stringa 1;_stddev 34.6 ns 27.5 ns 10 +Build func full name stringa 1;_cv 3.60 % 2.91 % 10 diff --git a/bench/results/003-Xeon E5-2682 v4, Windows 10, MSVC-19.txt b/bench/results/003-Xeon E5-2682 v4, Windows 10, MSVC-19.txt index 822f0e6..1d19a3c 100644 --- a/bench/results/003-Xeon E5-2682 v4, Windows 10, MSVC-19.txt +++ b/bench/results/003-Xeon E5-2682 v4, Windows 10, MSVC-19.txt @@ -1,4 +1,4 @@ -2026-01-21T00:56:24+03:00 +2026-01-29T18:44:28+03:00 Running benchStr.exe Run on (32 X 2494 MHz CPU s) CPU Caches: @@ -10,867 +10,879 @@ CPU Caches: Benchmark Time CPU Iterations -------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and number by std to std::string_mean 331 ns 330 ns 10 -Concat std::string and number by std to std::string_median 328 ns 328 ns 10 -Concat std::string and number by std to std::string_stddev 9.88 ns 8.73 ns 10 -Concat std::string and number by std to std::string_cv 2.98 % 2.65 % 10 -Concat std::string and number by StrExpr to std::string_mean 211 ns 207 ns 10 -Concat std::string and number by StrExpr to std::string_median 212 ns 206 ns 10 -Concat std::string and number by StrExpr to std::string_stddev 5.83 ns 5.26 ns 10 -Concat std::string and number by StrExpr to std::string_cv 2.77 % 2.54 % 10 -Concat stringa and number by StrExpr to simstr::stringa_mean 108 ns 107 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_median 108 ns 107 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_stddev 2.53 ns 2.24 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_cv 2.33 % 2.10 % 10 +Concat std::string and number by std to std::string_mean 386 ns 385 ns 10 +Concat std::string and number by std to std::string_median 380 ns 381 ns 10 +Concat std::string and number by std to std::string_stddev 31.2 ns 30.5 ns 10 +Concat std::string and number by std to std::string_cv 8.09 % 7.92 % 10 +Concat std::string and number by StrExpr to std::string_mean 266 ns 266 ns 10 +Concat std::string and number by StrExpr to std::string_median 266 ns 267 ns 10 +Concat std::string and number by StrExpr to std::string_stddev 25.2 ns 25.4 ns 10 +Concat std::string and number by StrExpr to std::string_cv 9.47 % 9.56 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 128 ns 128 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_median 130 ns 129 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_stddev 9.52 ns 8.86 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 7.41 % 6.90 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 145 ns 146 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 143 ns 144 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 14.7 ns 15.4 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 10.12 % 10.61 % 10 ----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and hex number by std to std::string_mean 1074 ns 1059 ns 10 -Concat std::string and hex number by std to std::string_median 1060 ns 1046 ns 10 -Concat std::string and hex number by std to std::string_stddev 38.0 ns 38.5 ns 10 -Concat std::string and hex number by std to std::string_cv 3.54 % 3.63 % 10 -Concat std::string and hex number by StrExpr to std::string_mean 136 ns 136 ns 10 -Concat std::string and hex number by StrExpr to std::string_median 137 ns 135 ns 10 -Concat std::string and hex number by StrExpr to std::string_stddev 4.05 ns 4.20 ns 10 -Concat std::string and hex number by StrExpr to std::string_cv 2.97 % 3.09 % 10 -Concat stringa and hex number by StrExpr to simstr::stringa_mean 101 ns 98.4 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_median 102 ns 97.7 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_stddev 4.57 ns 4.00 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_cv 4.50 % 4.06 % 10 +Concat std::string and hex number by std to std::string_mean 2092 ns 2090 ns 10 +Concat std::string and hex number by std to std::string_median 2076 ns 2086 ns 10 +Concat std::string and hex number by std to std::string_stddev 106 ns 96.7 ns 10 +Concat std::string and hex number by std to std::string_cv 5.06 % 4.62 % 10 +Concat std::string and hex number by StrExpr to std::string_mean 182 ns 182 ns 10 +Concat std::string and hex number by StrExpr to std::string_median 181 ns 181 ns 10 +Concat std::string and hex number by StrExpr to std::string_stddev 8.84 ns 8.67 ns 10 +Concat std::string and hex number by StrExpr to std::string_cv 4.85 % 4.76 % 10 +Concat stringa and hex number by StrExpr to simstr::stringa_mean 124 ns 124 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_median 122 ns 122 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_stddev 12.4 ns 12.7 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_cv 9.94 % 10.21 % 10 +Concat stringa and hex number by e_concat to simstr::stringa_mean 180 ns 180 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_median 178 ns 180 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_stddev 13.0 ns 12.9 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_cv 7.24 % 7.15 % 10 +Concat stringa and hex number by e_subst to simstr::stringa_mean 266 ns 265 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_median 273 ns 271 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_stddev 19.2 ns 18.3 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_cv 7.23 % 6.90 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string by std to std::string_mean 55.4 ns 55.0 ns 10 -Concat std::string by std to std::string_median 54.8 ns 54.4 ns 10 -Concat std::string by std to std::string_stddev 1.60 ns 1.76 ns 10 -Concat std::string by std to std::string_cv 2.89 % 3.21 % 10 -Concat std::string by StrExpr to std::string_mean 77.9 ns 77.0 ns 10 -Concat std::string by StrExpr to std::string_median 77.6 ns 76.7 ns 10 -Concat std::string by StrExpr to std::string_stddev 1.39 ns 1.28 ns 10 -Concat std::string by StrExpr to std::string_cv 1.78 % 1.66 % 10 -Concat stringa by StrExpr to stringa_mean 52.5 ns 52.0 ns 10 -Concat stringa by StrExpr to stringa_median 51.6 ns 51.6 ns 10 -Concat stringa by StrExpr to stringa_stddev 1.34 ns 0.755 ns 10 -Concat stringa by StrExpr to stringa_cv 2.56 % 1.45 % 10 +Concat std::string by std to std::string_mean 72.5 ns 72.4 ns 10 +Concat std::string by std to std::string_median 73.3 ns 72.4 ns 10 +Concat std::string by std to std::string_stddev 2.55 ns 2.76 ns 10 +Concat std::string by std to std::string_cv 3.51 % 3.81 % 10 +Concat std::string by StrExpr to std::string_mean 91.4 ns 91.6 ns 10 +Concat std::string by StrExpr to std::string_median 89.4 ns 89.8 ns 10 +Concat std::string by StrExpr to std::string_stddev 6.59 ns 6.64 ns 10 +Concat std::string by StrExpr to std::string_cv 7.21 % 7.25 % 10 +Concat stringa by StrExpr to stringa_mean 60.1 ns 60.2 ns 10 +Concat stringa by StrExpr to stringa_median 60.3 ns 60.9 ns 10 +Concat stringa by StrExpr to stringa_stddev 2.14 ns 2.24 ns 10 +Concat stringa by StrExpr to stringa_cv 3.56 % 3.72 % 10 ----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Find concat three std::string_mean 225 ns 222 ns 10 -Find concat three std::string_median 223 ns 217 ns 10 -Find concat three std::string_stddev 9.31 ns 8.69 ns 10 -Find concat three std::string_cv 4.13 % 3.91 % 10 -Find concat three strexpr_mean 122 ns 121 ns 10 -Find concat three strexpr_median 122 ns 120 ns 10 -Find concat three strexpr_stddev 3.71 ns 3.68 ns 10 -Find concat three strexpr_cv 3.05 % 3.05 % 10 -Find concat three simstr_mean 28.4 ns 27.9 ns 10 -Find concat three simstr_median 28.2 ns 27.9 ns 10 -Find concat three simstr_stddev 0.873 ns 0.791 ns 10 -Find concat three simstr_cv 3.08 % 2.84 % 10 +Find concat three std::string_mean 265 ns 265 ns 10 +Find concat three std::string_median 267 ns 265 ns 10 +Find concat three std::string_stddev 13.5 ns 14.7 ns 10 +Find concat three std::string_cv 5.09 % 5.56 % 10 +Find concat three strexpr_mean 150 ns 150 ns 10 +Find concat three strexpr_median 149 ns 150 ns 10 +Find concat three strexpr_stddev 8.98 ns 8.92 ns 10 +Find concat three strexpr_cv 5.99 % 5.96 % 10 +Find concat three simstr_mean 32.4 ns 32.5 ns 10 +Find concat three simstr_median 32.4 ns 32.3 ns 10 +Find concat three simstr_stddev 2.04 ns 2.01 ns 10 +Find concat three simstr_cv 6.30 % 6.19 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -BuildTypeNameStr 0/0_mean 17.9 ns 17.7 ns 10 -BuildTypeNameStr 0/0_median 17.7 ns 17.6 ns 10 -BuildTypeNameStr 0/0_stddev 0.347 ns 0.353 ns 10 -BuildTypeNameStr 0/0_cv 1.94 % 1.99 % 10 -BuildTypeNameExp 0/0_mean 14.2 ns 14.1 ns 10 -BuildTypeNameExp 0/0_median 14.0 ns 14.1 ns 10 -BuildTypeNameExp 0/0_stddev 0.420 ns 0.391 ns 10 -BuildTypeNameExp 0/0_cv 2.96 % 2.77 % 10 -BuildTypeNameSim 0/0_mean 17.2 ns 17.1 ns 10 -BuildTypeNameSim 0/0_median 17.2 ns 17.3 ns 10 -BuildTypeNameSim 0/0_stddev 0.256 ns 0.185 ns 10 -BuildTypeNameSim 0/0_cv 1.49 % 1.08 % 10 -BuildTypeNameStr 10/10_mean 79.4 ns 79.2 ns 10 -BuildTypeNameStr 10/10_median 78.6 ns 78.5 ns 10 -BuildTypeNameStr 10/10_stddev 1.75 ns 1.22 ns 10 -BuildTypeNameStr 10/10_cv 2.20 % 1.54 % 10 -BuildTypeNameExp 10/10_mean 40.0 ns 40.0 ns 10 -BuildTypeNameExp 10/10_median 39.9 ns 40.1 ns 10 -BuildTypeNameExp 10/10_stddev 0.764 ns 0.643 ns 10 -BuildTypeNameExp 10/10_cv 1.91 % 1.61 % 10 -BuildTypeNameSim 10/10_mean 37.9 ns 37.8 ns 10 -BuildTypeNameSim 10/10_median 37.8 ns 37.5 ns 10 -BuildTypeNameSim 10/10_stddev 0.709 ns 0.718 ns 10 -BuildTypeNameSim 10/10_cv 1.87 % 1.90 % 10 +BuildTypeNameStr 0/0_mean 20.9 ns 20.9 ns 10 +BuildTypeNameStr 0/0_median 20.4 ns 20.4 ns 10 +BuildTypeNameStr 0/0_stddev 1.51 ns 1.53 ns 10 +BuildTypeNameStr 0/0_cv 7.21 % 7.33 % 10 +BuildTypeNameExp 0/0_mean 14.8 ns 14.8 ns 10 +BuildTypeNameExp 0/0_median 14.8 ns 14.6 ns 10 +BuildTypeNameExp 0/0_stddev 0.422 ns 0.524 ns 10 +BuildTypeNameExp 0/0_cv 2.85 % 3.55 % 10 +BuildTypeNameSim 0/0_mean 18.3 ns 18.2 ns 10 +BuildTypeNameSim 0/0_median 18.2 ns 18.2 ns 10 +BuildTypeNameSim 0/0_stddev 0.558 ns 0.491 ns 10 +BuildTypeNameSim 0/0_cv 3.05 % 2.69 % 10 +BuildTypeNameStr 10/10_mean 100 ns 100 ns 10 +BuildTypeNameStr 10/10_median 100 ns 101 ns 10 +BuildTypeNameStr 10/10_stddev 8.86 ns 8.72 ns 10 +BuildTypeNameStr 10/10_cv 8.84 % 8.70 % 10 +BuildTypeNameExp 10/10_mean 48.0 ns 48.0 ns 10 +BuildTypeNameExp 10/10_median 48.4 ns 48.4 ns 10 +BuildTypeNameExp 10/10_stddev 4.53 ns 4.54 ns 10 +BuildTypeNameExp 10/10_cv 9.43 % 9.47 % 10 +BuildTypeNameSim 10/10_mean 44.6 ns 44.7 ns 10 +BuildTypeNameSim 10/10_median 44.2 ns 43.0 ns 10 +BuildTypeNameSim 10/10_stddev 3.27 ns 3.55 ns 10 +BuildTypeNameSim 10/10_cv 7.33 % 7.94 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat with replace str_mean 362 ns 351 ns 10 -Concat with replace str_median 364 ns 349 ns 10 -Concat with replace str_stddev 13.6 ns 10.6 ns 10 -Concat with replace str_cv 3.75 % 3.01 % 10 -Concat with replace exp_mean 223 ns 221 ns 10 -Concat with replace exp_median 222 ns 222 ns 10 -Concat with replace exp_stddev 5.40 ns 4.68 ns 10 -Concat with replace exp_cv 2.42 % 2.12 % 10 +Concat with replace str_mean 430 ns 430 ns 10 +Concat with replace str_median 431 ns 432 ns 10 +Concat with replace str_stddev 25.5 ns 27.0 ns 10 +Concat with replace str_cv 5.93 % 6.27 % 10 +Concat with replace exp_mean 278 ns 279 ns 10 +Concat with replace exp_median 280 ns 280 ns 10 +Concat with replace exp_stddev 25.3 ns 25.3 ns 10 +Concat with replace exp_cv 9.11 % 9.06 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e;_mean 2.63 ns 2.57 ns 10 -std::string e;_median 2.61 ns 2.58 ns 10 -std::string e;_stddev 0.115 ns 0.093 ns 10 -std::string e;_cv 4.35 % 3.62 % 10 -std::string_view e;_mean 1.84 ns 1.83 ns 10 -std::string_view e;_median 1.82 ns 1.84 ns 10 -std::string_view e;_stddev 0.042 ns 0.028 ns 10 -std::string_view e;_cv 2.27 % 1.54 % 10 -ssa e;_mean 1.83 ns 1.82 ns 10 -ssa e;_median 1.83 ns 1.84 ns 10 -ssa e;_stddev 0.031 ns 0.041 ns 10 -ssa e;_cv 1.68 % 2.23 % 10 -stringa e;_mean 2.22 ns 2.20 ns 10 -stringa e;_median 2.22 ns 2.20 ns 10 -stringa e;_stddev 0.056 ns 0.046 ns 10 -stringa e;_cv 2.53 % 2.10 % 10 -lstringa<20> e;_mean 2.59 ns 2.57 ns 10 -lstringa<20> e;_median 2.56 ns 2.57 ns 10 -lstringa<20> e;_stddev 0.070 ns 0.051 ns 10 -lstringa<20> e;_cv 2.69 % 1.99 % 10 -lstringa<40> e;_mean 2.56 ns 2.54 ns 10 -lstringa<40> e;_median 2.55 ns 2.55 ns 10 -lstringa<40> e;_stddev 0.045 ns 0.044 ns 10 -lstringa<40> e;_cv 1.75 % 1.72 % 10 +std::string e;_mean 2.85 ns 2.83 ns 10 +std::string e;_median 2.83 ns 2.83 ns 10 +std::string e;_stddev 0.105 ns 0.131 ns 10 +std::string e;_cv 3.67 % 4.61 % 10 +std::string_view e;_mean 2.02 ns 2.02 ns 10 +std::string_view e;_median 2.00 ns 2.00 ns 10 +std::string_view e;_stddev 0.129 ns 0.113 ns 10 +std::string_view e;_cv 6.37 % 5.60 % 10 +ssa e;_mean 2.05 ns 2.05 ns 10 +ssa e;_median 2.06 ns 2.05 ns 10 +ssa e;_stddev 0.070 ns 0.076 ns 10 +ssa e;_cv 3.42 % 3.73 % 10 +stringa e;_mean 2.42 ns 2.42 ns 10 +stringa e;_median 2.42 ns 2.43 ns 10 +stringa e;_stddev 0.062 ns 0.073 ns 10 +stringa e;_cv 2.58 % 3.03 % 10 +lstringa<20> e;_mean 2.91 ns 2.91 ns 10 +lstringa<20> e;_median 2.88 ns 2.91 ns 10 +lstringa<20> e;_stddev 0.104 ns 0.112 ns 10 +lstringa<20> e;_cv 3.56 % 3.85 % 10 +lstringa<40> e;_mean 3.01 ns 3.01 ns 10 +lstringa<40> e;_median 3.02 ns 3.01 ns 10 +lstringa<40> e;_stddev 0.104 ns 0.122 ns 10 +lstringa<40> e;_cv 3.46 % 4.05 % 10 ----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "Test text";_mean 2.64 ns 2.61 ns 10 -std::string e = "Test text";_median 2.63 ns 2.59 ns 10 -std::string e = "Test text";_stddev 0.074 ns 0.078 ns 10 -std::string e = "Test text";_cv 2.79 % 2.99 % 10 -std::string_view e = "Test text";_mean 1.85 ns 1.83 ns 10 -std::string_view e = "Test text";_median 1.84 ns 1.82 ns 10 -std::string_view e = "Test text";_stddev 0.038 ns 0.027 ns 10 -std::string_view e = "Test text";_cv 2.05 % 1.47 % 10 -ssa e = "Test text";_mean 1.83 ns 1.82 ns 10 -ssa e = "Test text";_median 1.83 ns 1.81 ns 10 -ssa e = "Test text";_stddev 0.022 ns 0.029 ns 10 -ssa e = "Test text";_cv 1.20 % 1.57 % 10 -stringa e = "Test text";_mean 2.20 ns 2.20 ns 10 -stringa e = "Test text";_median 2.19 ns 2.20 ns 10 -stringa e = "Test text";_stddev 0.053 ns 0.061 ns 10 -stringa e = "Test text";_cv 2.42 % 2.77 % 10 -lstringa<20> e = "Test text";_mean 2.59 ns 2.57 ns 10 -lstringa<20> e = "Test text";_median 2.60 ns 2.55 ns 10 -lstringa<20> e = "Test text";_stddev 0.033 ns 0.031 ns 10 -lstringa<20> e = "Test text";_cv 1.28 % 1.19 % 10 -lstringa<40> e = "Test text";_mean 2.58 ns 2.54 ns 10 -lstringa<40> e = "Test text";_median 2.57 ns 2.55 ns 10 -lstringa<40> e = "Test text";_stddev 0.082 ns 0.059 ns 10 -lstringa<40> e = "Test text";_cv 3.17 % 2.32 % 10 +std::string e = "Test text";_mean 2.90 ns 2.90 ns 10 +std::string e = "Test text";_median 2.90 ns 2.92 ns 10 +std::string e = "Test text";_stddev 0.112 ns 0.099 ns 10 +std::string e = "Test text";_cv 3.85 % 3.42 % 10 +std::string_view e = "Test text";_mean 2.05 ns 2.04 ns 10 +std::string_view e = "Test text";_median 2.03 ns 2.03 ns 10 +std::string_view e = "Test text";_stddev 0.074 ns 0.081 ns 10 +std::string_view e = "Test text";_cv 3.63 % 3.96 % 10 +ssa e = "Test text";_mean 2.03 ns 2.02 ns 10 +ssa e = "Test text";_median 2.01 ns 1.99 ns 10 +ssa e = "Test text";_stddev 0.072 ns 0.078 ns 10 +ssa e = "Test text";_cv 3.53 % 3.84 % 10 +stringa e = "Test text";_mean 2.87 ns 2.86 ns 10 +stringa e = "Test text";_median 2.88 ns 2.88 ns 10 +stringa e = "Test text";_stddev 0.078 ns 0.084 ns 10 +stringa e = "Test text";_cv 2.72 % 2.94 % 10 +lstringa<20> e = "Test text";_mean 2.96 ns 2.96 ns 10 +lstringa<20> e = "Test text";_median 2.94 ns 2.93 ns 10 +lstringa<20> e = "Test text";_stddev 0.168 ns 0.181 ns 10 +lstringa<20> e = "Test text";_cv 5.65 % 6.11 % 10 +lstringa<40> e = "Test text";_mean 2.95 ns 2.94 ns 10 +lstringa<40> e = "Test text";_median 2.93 ns 2.92 ns 10 +lstringa<40> e = "Test text";_stddev 0.204 ns 0.207 ns 10 +lstringa<40> e = "Test text";_cv 6.94 % 7.04 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890";_mean 77.5 ns 77.2 ns 10 -std::string e = "123456789012345678901234567890";_median 77.1 ns 77.4 ns 10 -std::string e = "123456789012345678901234567890";_stddev 2.32 ns 2.51 ns 10 -std::string e = "123456789012345678901234567890";_cv 2.99 % 3.24 % 10 -std::string_view e = "123456789012345678901234567890";_mean 1.83 ns 1.81 ns 10 -std::string_view e = "123456789012345678901234567890";_median 1.82 ns 1.80 ns 10 -std::string_view e = "123456789012345678901234567890";_stddev 0.028 ns 0.028 ns 10 -std::string_view e = "123456789012345678901234567890";_cv 1.53 % 1.56 % 10 -ssa e = "123456789012345678901234567890";_mean 1.83 ns 1.83 ns 10 -ssa e = "123456789012345678901234567890";_median 1.83 ns 1.84 ns 10 -ssa e = "123456789012345678901234567890";_stddev 0.007 ns 0.019 ns 10 -ssa e = "123456789012345678901234567890";_cv 0.36 % 1.01 % 10 -stringa e = "123456789012345678901234567890";_mean 2.24 ns 2.23 ns 10 -stringa e = "123456789012345678901234567890";_median 2.22 ns 2.22 ns 10 -stringa e = "123456789012345678901234567890";_stddev 0.060 ns 0.047 ns 10 -stringa e = "123456789012345678901234567890";_cv 2.70 % 2.10 % 10 -lstringa<20> e = "123456789012345678901234567890";_mean 77.7 ns 77.1 ns 10 -lstringa<20> e = "123456789012345678901234567890";_median 76.7 ns 76.7 ns 10 -lstringa<20> e = "123456789012345678901234567890";_stddev 2.51 ns 2.57 ns 10 -lstringa<20> e = "123456789012345678901234567890";_cv 3.24 % 3.34 % 10 -lstringa<40> e = "123456789012345678901234567890";_mean 3.42 ns 3.40 ns 10 -lstringa<40> e = "123456789012345678901234567890";_median 3.36 ns 3.35 ns 10 -lstringa<40> e = "123456789012345678901234567890";_stddev 0.192 ns 0.168 ns 10 -lstringa<40> e = "123456789012345678901234567890";_cv 5.60 % 4.95 % 10 +std::string e = "123456789012345678901234567890";_mean 96.3 ns 96.1 ns 10 +std::string e = "123456789012345678901234567890";_median 93.8 ns 93.5 ns 10 +std::string e = "123456789012345678901234567890";_stddev 8.86 ns 8.81 ns 10 +std::string e = "123456789012345678901234567890";_cv 9.20 % 9.17 % 10 +std::string_view e = "123456789012345678901234567890";_mean 2.06 ns 2.05 ns 10 +std::string_view e = "123456789012345678901234567890";_median 2.03 ns 2.04 ns 10 +std::string_view e = "123456789012345678901234567890";_stddev 0.114 ns 0.125 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 5.54 % 6.07 % 10 +ssa e = "123456789012345678901234567890";_mean 2.06 ns 2.06 ns 10 +ssa e = "123456789012345678901234567890";_median 2.05 ns 2.05 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.075 ns 0.073 ns 10 +ssa e = "123456789012345678901234567890";_cv 3.66 % 3.56 % 10 +stringa e = "123456789012345678901234567890";_mean 3.00 ns 3.00 ns 10 +stringa e = "123456789012345678901234567890";_median 3.02 ns 2.98 ns 10 +stringa e = "123456789012345678901234567890";_stddev 0.047 ns 0.052 ns 10 +stringa e = "123456789012345678901234567890";_cv 1.56 % 1.75 % 10 +lstringa<20> e = "123456789012345678901234567890";_mean 97.1 ns 96.7 ns 10 +lstringa<20> e = "123456789012345678901234567890";_median 96.9 ns 96.3 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 6.52 ns 6.30 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 6.72 % 6.52 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 3.65 ns 3.64 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 3.66 ns 3.66 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.116 ns 0.153 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 3.18 % 4.19 % 10 ----- Create copy of Str with 9 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "Test text"; auto c{e};_mean 5.43 ns 5.37 ns 10 -std::string e = "Test text"; auto c{e};_median 5.37 ns 5.31 ns 10 -std::string e = "Test text"; auto c{e};_stddev 0.131 ns 0.132 ns 10 -std::string e = "Test text"; auto c{e};_cv 2.41 % 2.45 % 10 -std::string_view e = "Test text"; auto c{e};_mean 2.94 ns 2.93 ns 10 -std::string_view e = "Test text"; auto c{e};_median 2.94 ns 2.93 ns 10 -std::string_view e = "Test text"; auto c{e};_stddev 0.055 ns 0.066 ns 10 -std::string_view e = "Test text"; auto c{e};_cv 1.86 % 2.24 % 10 -ssa e = "Test text"; auto c{e};_mean 2.92 ns 2.90 ns 10 -ssa e = "Test text"; auto c{e};_median 2.90 ns 2.92 ns 10 -ssa e = "Test text"; auto c{e};_stddev 0.056 ns 0.070 ns 10 -ssa e = "Test text"; auto c{e};_cv 1.93 % 2.42 % 10 -stringa e = "Test text"; auto c{e};_mean 4.13 ns 4.09 ns 10 -stringa e = "Test text"; auto c{e};_median 4.08 ns 4.05 ns 10 -stringa e = "Test text"; auto c{e};_stddev 0.145 ns 0.104 ns 10 -stringa e = "Test text"; auto c{e};_cv 3.51 % 2.55 % 10 -lstringa<20> e = "Test text"; auto c{e};_mean 7.74 ns 7.60 ns 10 -lstringa<20> e = "Test text"; auto c{e};_median 7.65 ns 7.50 ns 10 -lstringa<20> e = "Test text"; auto c{e};_stddev 0.280 ns 0.187 ns 10 -lstringa<20> e = "Test text"; auto c{e};_cv 3.62 % 2.47 % 10 -lstringa<40> e = "Test text"; auto c{e};_mean 8.56 ns 8.46 ns 10 -lstringa<40> e = "Test text"; auto c{e};_median 8.52 ns 8.37 ns 10 -lstringa<40> e = "Test text"; auto c{e};_stddev 0.277 ns 0.276 ns 10 -lstringa<40> e = "Test text"; auto c{e};_cv 3.24 % 3.26 % 10 +std::string e = "Test text"; auto c{e};_mean 5.61 ns 5.59 ns 10 +std::string e = "Test text"; auto c{e};_median 5.71 ns 5.70 ns 10 +std::string e = "Test text"; auto c{e};_stddev 0.279 ns 0.293 ns 10 +std::string e = "Test text"; auto c{e};_cv 4.97 % 5.23 % 10 +std::string_view e = "Test text"; auto c{e};_mean 3.95 ns 3.94 ns 10 +std::string_view e = "Test text"; auto c{e};_median 3.92 ns 3.90 ns 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.071 ns 0.098 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 1.81 % 2.48 % 10 +ssa e = "Test text"; auto c{e};_mean 3.92 ns 3.91 ns 10 +ssa e = "Test text"; auto c{e};_median 3.93 ns 3.92 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.043 ns 0.064 ns 10 +ssa e = "Test text"; auto c{e};_cv 1.11 % 1.64 % 10 +stringa e = "Test text"; auto c{e};_mean 4.44 ns 4.44 ns 10 +stringa e = "Test text"; auto c{e};_median 4.41 ns 4.44 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.161 ns 0.188 ns 10 +stringa e = "Test text"; auto c{e};_cv 3.63 % 4.23 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 9.72 ns 9.73 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 9.62 ns 9.63 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.404 ns 0.410 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 4.16 % 4.21 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 9.61 ns 9.61 ns 10 +lstringa<40> e = "Test text"; auto c{e};_median 9.74 ns 9.63 ns 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 0.690 ns 0.741 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 7.18 % 7.72 % 10 ----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890"; auto c{e};_mean 77.5 ns 76.6 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_median 77.6 ns 77.4 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_stddev 2.80 ns 2.50 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_cv 3.61 % 3.26 % 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 1.88 ns 1.85 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_median 1.84 ns 1.82 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.098 ns 0.086 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 5.20 % 4.64 % 10 -ssa e = "123456789012345678901234567890"; auto c{e};_mean 1.83 ns 1.82 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_median 1.82 ns 1.80 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.047 ns 0.045 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_cv 2.54 % 2.47 % 10 -stringa e = "123456789012345678901234567890"; auto c{e};_mean 3.02 ns 2.98 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_median 3.01 ns 2.98 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.093 ns 0.070 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_cv 3.09 % 2.34 % 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 79.3 ns 78.6 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 78.3 ns 78.5 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 2.18 ns 2.09 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 2.75 % 2.65 % 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 6.63 ns 6.63 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 6.60 ns 6.63 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.129 ns 0.151 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 1.95 % 2.27 % 10 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 94.6 ns 94.5 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 90.2 ns 90.7 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 7.24 ns 7.16 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 7.66 % 7.57 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 1.94 ns 1.93 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 1.94 ns 1.93 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.081 ns 0.080 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 4.19 % 4.15 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 1.97 ns 1.97 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 1.97 ns 1.97 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.067 ns 0.081 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 3.40 % 4.09 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 3.36 ns 3.35 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 3.36 ns 3.38 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.141 ns 0.145 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 4.18 % 4.32 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 97.1 ns 97.1 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 97.1 ns 97.3 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 6.80 ns 6.78 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 7.00 % 6.98 % 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 8.16 ns 8.12 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 8.10 ns 8.09 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.820 ns 0.752 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 10.05 % 9.26 % 10 ----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find;_mean 40.7 ns 40.4 ns 10 -std::string::find;_median 40.6 ns 40.4 ns 10 -std::string::find;_stddev 0.887 ns 1.43 ns 10 -std::string::find;_cv 2.18 % 3.55 % 10 -std::string_view::find;_mean 40.8 ns 40.4 ns 10 -std::string_view::find;_median 40.7 ns 39.9 ns 10 -std::string_view::find;_stddev 0.671 ns 0.641 ns 10 -std::string_view::find;_cv 1.64 % 1.59 % 10 -ssa::find;_mean 22.6 ns 22.5 ns 10 -ssa::find;_median 22.6 ns 22.7 ns 10 -ssa::find;_stddev 0.634 ns 0.779 ns 10 -ssa::find;_cv 2.81 % 3.46 % 10 -stringa::find;_mean 28.4 ns 28.2 ns 10 -stringa::find;_median 28.5 ns 27.6 ns 10 -stringa::find;_stddev 1.42 ns 1.51 ns 10 -stringa::find;_cv 4.99 % 5.37 % 10 -lstringa<20>::find;_mean 23.2 ns 23.0 ns 10 -lstringa<20>::find;_median 23.1 ns 22.9 ns 10 -lstringa<20>::find;_stddev 0.720 ns 0.765 ns 10 -lstringa<20>::find;_cv 3.10 % 3.32 % 10 -lstringa<40>::find;_mean 21.3 ns 21.0 ns 10 -lstringa<40>::find;_median 20.9 ns 20.9 ns 10 -lstringa<40>::find;_stddev 0.840 ns 0.678 ns 10 -lstringa<40>::find;_cv 3.95 % 3.23 % 10 +std::string::find;_mean 46.3 ns 46.3 ns 10 +std::string::find;_median 46.1 ns 46.0 ns 10 +std::string::find;_stddev 1.91 ns 1.84 ns 10 +std::string::find;_cv 4.13 % 3.97 % 10 +std::string_view::find;_mean 45.0 ns 45.0 ns 10 +std::string_view::find;_median 44.7 ns 44.5 ns 10 +std::string_view::find;_stddev 1.35 ns 1.19 ns 10 +std::string_view::find;_cv 3.00 % 2.65 % 10 +ssa::find;_mean 25.5 ns 25.4 ns 10 +ssa::find;_median 25.6 ns 25.7 ns 10 +ssa::find;_stddev 1.48 ns 1.47 ns 10 +ssa::find;_cv 5.81 % 5.77 % 10 +stringa::find;_mean 34.4 ns 34.4 ns 10 +stringa::find;_median 34.1 ns 34.1 ns 10 +stringa::find;_stddev 1.03 ns 1.12 ns 10 +stringa::find;_cv 3.01 % 3.25 % 10 +lstringa<20>::find;_mean 34.1 ns 34.1 ns 10 +lstringa<20>::find;_median 34.2 ns 34.1 ns 10 +lstringa<20>::find;_stddev 1.26 ns 1.32 ns 10 +lstringa<20>::find;_cv 3.69 % 3.86 % 10 +lstringa<40>::find;_mean 24.0 ns 24.0 ns 10 +lstringa<40>::find;_median 24.5 ns 24.5 ns 10 +lstringa<40>::find;_stddev 1.30 ns 1.25 ns 10 +lstringa<40>::find;_cv 5.44 % 5.21 % 10 ------- Copy not literal Str with N symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string copy{str_with_len_N};/15_mean 5.27 ns 5.17 ns 10 -std::string copy{str_with_len_N};/15_median 5.22 ns 5.16 ns 10 -std::string copy{str_with_len_N};/15_stddev 0.211 ns 0.155 ns 10 -std::string copy{str_with_len_N};/15_cv 4.00 % 3.00 % 10 -std::string copy{str_with_len_N};/16_mean 83.4 ns 83.2 ns 10 -std::string copy{str_with_len_N};/16_median 81.9 ns 82.0 ns 10 -std::string copy{str_with_len_N};/16_stddev 4.14 ns 4.20 ns 10 -std::string copy{str_with_len_N};/16_cv 4.96 % 5.04 % 10 -std::string copy{str_with_len_N};/23_mean 82.9 ns 82.3 ns 10 -std::string copy{str_with_len_N};/23_median 82.5 ns 81.1 ns 10 -std::string copy{str_with_len_N};/23_stddev 2.73 ns 2.94 ns 10 -std::string copy{str_with_len_N};/23_cv 3.30 % 3.57 % 10 -std::string copy{str_with_len_N};/24_mean 83.8 ns 82.4 ns 10 -std::string copy{str_with_len_N};/24_median 83.3 ns 81.6 ns 10 -std::string copy{str_with_len_N};/24_stddev 3.68 ns 3.30 ns 10 -std::string copy{str_with_len_N};/24_cv 4.39 % 4.00 % 10 -std::string copy{str_with_len_N};/32_mean 88.0 ns 87.7 ns 10 -std::string copy{str_with_len_N};/32_median 87.0 ns 87.9 ns 10 -std::string copy{str_with_len_N};/32_stddev 2.48 ns 2.30 ns 10 -std::string copy{str_with_len_N};/32_cv 2.82 % 2.63 % 10 -std::string copy{str_with_len_N};/64_mean 84.3 ns 83.5 ns 10 -std::string copy{str_with_len_N};/64_median 83.4 ns 83.7 ns 10 -std::string copy{str_with_len_N};/64_stddev 2.69 ns 2.51 ns 10 -std::string copy{str_with_len_N};/64_cv 3.19 % 3.00 % 10 -std::string copy{str_with_len_N};/128_mean 87.8 ns 87.5 ns 10 -std::string copy{str_with_len_N};/128_median 87.3 ns 87.9 ns 10 -std::string copy{str_with_len_N};/128_stddev 1.32 ns 1.65 ns 10 -std::string copy{str_with_len_N};/128_cv 1.51 % 1.89 % 10 -std::string copy{str_with_len_N};/256_mean 88.5 ns 88.1 ns 10 -std::string copy{str_with_len_N};/256_median 88.5 ns 87.9 ns 10 -std::string copy{str_with_len_N};/256_stddev 1.91 ns 2.30 ns 10 -std::string copy{str_with_len_N};/256_cv 2.16 % 2.61 % 10 -std::string copy{str_with_len_N};/512_mean 91.6 ns 91.0 ns 10 -std::string copy{str_with_len_N};/512_median 90.9 ns 90.0 ns 10 -std::string copy{str_with_len_N};/512_stddev 3.32 ns 3.31 ns 10 -std::string copy{str_with_len_N};/512_cv 3.63 % 3.63 % 10 -std::string copy{str_with_len_N};/1024_mean 99.9 ns 99.6 ns 10 -std::string copy{str_with_len_N};/1024_median 101 ns 99.4 ns 10 -std::string copy{str_with_len_N};/1024_stddev 2.94 ns 2.65 ns 10 -std::string copy{str_with_len_N};/1024_cv 2.95 % 2.66 % 10 -std::string copy{str_with_len_N};/2048_mean 129 ns 128 ns 10 -std::string copy{str_with_len_N};/2048_median 129 ns 126 ns 10 -std::string copy{str_with_len_N};/2048_stddev 4.47 ns 5.43 ns 10 -std::string copy{str_with_len_N};/2048_cv 3.46 % 4.26 % 10 -std::string copy{str_with_len_N};/4096_mean 177 ns 174 ns 10 -std::string copy{str_with_len_N};/4096_median 177 ns 174 ns 10 -std::string copy{str_with_len_N};/4096_stddev 3.85 ns 3.68 ns 10 -std::string copy{str_with_len_N};/4096_cv 2.17 % 2.11 % 10 -stringa copy{str_with_len_N};/15_mean 4.05 ns 4.02 ns 10 -stringa copy{str_with_len_N};/15_median 4.03 ns 4.01 ns 10 -stringa copy{str_with_len_N};/15_stddev 0.115 ns 0.104 ns 10 -stringa copy{str_with_len_N};/15_cv 2.85 % 2.60 % 10 -stringa copy{str_with_len_N};/16_mean 4.03 ns 4.02 ns 10 -stringa copy{str_with_len_N};/16_median 4.01 ns 4.00 ns 10 -stringa copy{str_with_len_N};/16_stddev 0.090 ns 0.109 ns 10 -stringa copy{str_with_len_N};/16_cv 2.22 % 2.72 % 10 -stringa copy{str_with_len_N};/23_mean 4.10 ns 4.04 ns 10 -stringa copy{str_with_len_N};/23_median 4.05 ns 4.04 ns 10 -stringa copy{str_with_len_N};/23_stddev 0.096 ns 0.048 ns 10 -stringa copy{str_with_len_N};/23_cv 2.34 % 1.18 % 10 -stringa copy{str_with_len_N};/24_mean 18.5 ns 18.4 ns 10 -stringa copy{str_with_len_N};/24_median 18.5 ns 18.4 ns 10 -stringa copy{str_with_len_N};/24_stddev 0.254 ns 0.218 ns 10 -stringa copy{str_with_len_N};/24_cv 1.37 % 1.19 % 10 -stringa copy{str_with_len_N};/32_mean 18.5 ns 18.4 ns 10 -stringa copy{str_with_len_N};/32_median 18.5 ns 18.4 ns 10 -stringa copy{str_with_len_N};/32_stddev 0.251 ns 0.313 ns 10 -stringa copy{str_with_len_N};/32_cv 1.35 % 1.70 % 10 -stringa copy{str_with_len_N};/64_mean 18.6 ns 18.5 ns 10 -stringa copy{str_with_len_N};/64_median 18.5 ns 18.4 ns 10 -stringa copy{str_with_len_N};/64_stddev 0.532 ns 0.385 ns 10 -stringa copy{str_with_len_N};/64_cv 2.85 % 2.08 % 10 -stringa copy{str_with_len_N};/128_mean 18.5 ns 18.1 ns 10 -stringa copy{str_with_len_N};/128_median 18.5 ns 18.0 ns 10 -stringa copy{str_with_len_N};/128_stddev 0.403 ns 0.316 ns 10 -stringa copy{str_with_len_N};/128_cv 2.18 % 1.74 % 10 -stringa copy{str_with_len_N};/256_mean 18.5 ns 18.4 ns 10 -stringa copy{str_with_len_N};/256_median 18.5 ns 18.4 ns 10 -stringa copy{str_with_len_N};/256_stddev 0.340 ns 0.366 ns 10 -stringa copy{str_with_len_N};/256_cv 1.84 % 1.99 % 10 -stringa copy{str_with_len_N};/512_mean 18.4 ns 18.2 ns 10 -stringa copy{str_with_len_N};/512_median 18.3 ns 18.2 ns 10 -stringa copy{str_with_len_N};/512_stddev 0.276 ns 0.293 ns 10 -stringa copy{str_with_len_N};/512_cv 1.50 % 1.60 % 10 -stringa copy{str_with_len_N};/1024_mean 18.9 ns 18.8 ns 10 -stringa copy{str_with_len_N};/1024_median 18.7 ns 18.6 ns 10 -stringa copy{str_with_len_N};/1024_stddev 0.739 ns 0.711 ns 10 -stringa copy{str_with_len_N};/1024_cv 3.91 % 3.78 % 10 -stringa copy{str_with_len_N};/2048_mean 18.4 ns 18.2 ns 10 -stringa copy{str_with_len_N};/2048_median 18.3 ns 18.0 ns 10 -stringa copy{str_with_len_N};/2048_stddev 0.265 ns 0.296 ns 10 -stringa copy{str_with_len_N};/2048_cv 1.44 % 1.63 % 10 -stringa copy{str_with_len_N};/4096_mean 18.3 ns 18.3 ns 10 -stringa copy{str_with_len_N};/4096_median 18.3 ns 18.4 ns 10 -stringa copy{str_with_len_N};/4096_stddev 0.201 ns 0.324 ns 10 -stringa copy{str_with_len_N};/4096_cv 1.10 % 1.77 % 10 -lstringa<16> copy{str_with_len_N};/15_mean 7.84 ns 7.80 ns 10 -lstringa<16> copy{str_with_len_N};/15_median 7.79 ns 7.85 ns 10 -lstringa<16> copy{str_with_len_N};/15_stddev 0.204 ns 0.118 ns 10 -lstringa<16> copy{str_with_len_N};/15_cv 2.60 % 1.51 % 10 -lstringa<16> copy{str_with_len_N};/16_mean 7.89 ns 7.78 ns 10 -lstringa<16> copy{str_with_len_N};/16_median 7.82 ns 7.74 ns 10 -lstringa<16> copy{str_with_len_N};/16_stddev 0.209 ns 0.132 ns 10 -lstringa<16> copy{str_with_len_N};/16_cv 2.65 % 1.70 % 10 -lstringa<16> copy{str_with_len_N};/23_mean 7.73 ns 7.71 ns 10 -lstringa<16> copy{str_with_len_N};/23_median 7.68 ns 7.67 ns 10 -lstringa<16> copy{str_with_len_N};/23_stddev 0.151 ns 0.138 ns 10 -lstringa<16> copy{str_with_len_N};/23_cv 1.96 % 1.78 % 10 -lstringa<16> copy{str_with_len_N};/24_mean 82.1 ns 81.6 ns 10 -lstringa<16> copy{str_with_len_N};/24_median 81.9 ns 81.6 ns 10 -lstringa<16> copy{str_with_len_N};/24_stddev 3.09 ns 2.96 ns 10 -lstringa<16> copy{str_with_len_N};/24_cv 3.76 % 3.63 % 10 -lstringa<16> copy{str_with_len_N};/32_mean 84.1 ns 83.7 ns 10 -lstringa<16> copy{str_with_len_N};/32_median 83.9 ns 83.7 ns 10 -lstringa<16> copy{str_with_len_N};/32_stddev 1.82 ns 1.42 ns 10 -lstringa<16> copy{str_with_len_N};/32_cv 2.16 % 1.70 % 10 -lstringa<16> copy{str_with_len_N};/64_mean 84.8 ns 84.2 ns 10 -lstringa<16> copy{str_with_len_N};/64_median 82.9 ns 82.0 ns 10 -lstringa<16> copy{str_with_len_N};/64_stddev 4.78 ns 4.87 ns 10 -lstringa<16> copy{str_with_len_N};/64_cv 5.63 % 5.78 % 10 -lstringa<16> copy{str_with_len_N};/128_mean 84.7 ns 83.7 ns 10 -lstringa<16> copy{str_with_len_N};/128_median 83.8 ns 83.7 ns 10 -lstringa<16> copy{str_with_len_N};/128_stddev 2.94 ns 2.61 ns 10 -lstringa<16> copy{str_with_len_N};/128_cv 3.47 % 3.12 % 10 -lstringa<16> copy{str_with_len_N};/256_mean 649 ns 646 ns 10 -lstringa<16> copy{str_with_len_N};/256_median 643 ns 642 ns 10 -lstringa<16> copy{str_with_len_N};/256_stddev 15.9 ns 11.5 ns 10 -lstringa<16> copy{str_with_len_N};/256_cv 2.45 % 1.78 % 10 -lstringa<16> copy{str_with_len_N};/512_mean 91.6 ns 89.8 ns 10 -lstringa<16> copy{str_with_len_N};/512_median 89.9 ns 87.9 ns 10 -lstringa<16> copy{str_with_len_N};/512_stddev 4.09 ns 3.62 ns 10 -lstringa<16> copy{str_with_len_N};/512_cv 4.47 % 4.03 % 10 -lstringa<16> copy{str_with_len_N};/1024_mean 96.2 ns 95.8 ns 10 -lstringa<16> copy{str_with_len_N};/1024_median 97.3 ns 96.3 ns 10 -lstringa<16> copy{str_with_len_N};/1024_stddev 2.69 ns 1.92 ns 10 -lstringa<16> copy{str_with_len_N};/1024_cv 2.80 % 2.01 % 10 -lstringa<16> copy{str_with_len_N};/2048_mean 128 ns 127 ns 10 -lstringa<16> copy{str_with_len_N};/2048_median 129 ns 126 ns 10 -lstringa<16> copy{str_with_len_N};/2048_stddev 5.41 ns 5.62 ns 10 -lstringa<16> copy{str_with_len_N};/2048_cv 4.21 % 4.43 % 10 -lstringa<16> copy{str_with_len_N};/4096_mean 185 ns 182 ns 10 -lstringa<16> copy{str_with_len_N};/4096_median 185 ns 182 ns 10 -lstringa<16> copy{str_with_len_N};/4096_stddev 4.32 ns 6.00 ns 10 -lstringa<16> copy{str_with_len_N};/4096_cv 2.34 % 3.30 % 10 -lstringa<512> copy{str_with_len_N};/15_mean 8.54 ns 8.43 ns 10 -lstringa<512> copy{str_with_len_N};/15_median 8.50 ns 8.37 ns 10 -lstringa<512> copy{str_with_len_N};/15_stddev 0.107 ns 0.141 ns 10 -lstringa<512> copy{str_with_len_N};/15_cv 1.25 % 1.67 % 10 -lstringa<512> copy{str_with_len_N};/16_mean 8.63 ns 8.62 ns 10 -lstringa<512> copy{str_with_len_N};/16_median 8.50 ns 8.51 ns 10 -lstringa<512> copy{str_with_len_N};/16_stddev 0.377 ns 0.420 ns 10 -lstringa<512> copy{str_with_len_N};/16_cv 4.37 % 4.87 % 10 -lstringa<512> copy{str_with_len_N};/23_mean 8.58 ns 8.50 ns 10 -lstringa<512> copy{str_with_len_N};/23_median 8.56 ns 8.58 ns 10 -lstringa<512> copy{str_with_len_N};/23_stddev 0.136 ns 0.108 ns 10 -lstringa<512> copy{str_with_len_N};/23_cv 1.59 % 1.27 % 10 -lstringa<512> copy{str_with_len_N};/24_mean 8.55 ns 8.52 ns 10 -lstringa<512> copy{str_with_len_N};/24_median 8.49 ns 8.48 ns 10 -lstringa<512> copy{str_with_len_N};/24_stddev 0.246 ns 0.280 ns 10 -lstringa<512> copy{str_with_len_N};/24_cv 2.87 % 3.29 % 10 -lstringa<512> copy{str_with_len_N};/32_mean 11.5 ns 11.4 ns 10 -lstringa<512> copy{str_with_len_N};/32_median 11.4 ns 11.4 ns 10 -lstringa<512> copy{str_with_len_N};/32_stddev 0.298 ns 0.244 ns 10 -lstringa<512> copy{str_with_len_N};/32_cv 2.59 % 2.14 % 10 -lstringa<512> copy{str_with_len_N};/64_mean 11.9 ns 11.7 ns 10 -lstringa<512> copy{str_with_len_N};/64_median 11.9 ns 11.7 ns 10 -lstringa<512> copy{str_with_len_N};/64_stddev 0.441 ns 0.382 ns 10 -lstringa<512> copy{str_with_len_N};/64_cv 3.71 % 3.27 % 10 -lstringa<512> copy{str_with_len_N};/128_mean 12.1 ns 11.8 ns 10 -lstringa<512> copy{str_with_len_N};/128_median 12.1 ns 11.7 ns 10 -lstringa<512> copy{str_with_len_N};/128_stddev 0.349 ns 0.328 ns 10 -lstringa<512> copy{str_with_len_N};/128_cv 2.89 % 2.77 % 10 -lstringa<512> copy{str_with_len_N};/256_mean 13.0 ns 12.8 ns 10 -lstringa<512> copy{str_with_len_N};/256_median 12.9 ns 12.9 ns 10 -lstringa<512> copy{str_with_len_N};/256_stddev 0.254 ns 0.386 ns 10 -lstringa<512> copy{str_with_len_N};/256_cv 1.96 % 3.01 % 10 -lstringa<512> copy{str_with_len_N};/512_mean 14.3 ns 14.3 ns 10 -lstringa<512> copy{str_with_len_N};/512_median 14.3 ns 14.3 ns 10 -lstringa<512> copy{str_with_len_N};/512_stddev 0.162 ns 0.219 ns 10 -lstringa<512> copy{str_with_len_N};/512_cv 1.13 % 1.54 % 10 -lstringa<512> copy{str_with_len_N};/1024_mean 97.2 ns 97.3 ns 10 -lstringa<512> copy{str_with_len_N};/1024_median 95.8 ns 96.3 ns 10 -lstringa<512> copy{str_with_len_N};/1024_stddev 3.21 ns 3.45 ns 10 -lstringa<512> copy{str_with_len_N};/1024_cv 3.30 % 3.55 % 10 -lstringa<512> copy{str_with_len_N};/2048_mean 127 ns 126 ns 10 -lstringa<512> copy{str_with_len_N};/2048_median 125 ns 123 ns 10 -lstringa<512> copy{str_with_len_N};/2048_stddev 6.82 ns 7.42 ns 10 -lstringa<512> copy{str_with_len_N};/2048_cv 5.38 % 5.88 % 10 -lstringa<512> copy{str_with_len_N};/4096_mean 186 ns 184 ns 10 -lstringa<512> copy{str_with_len_N};/4096_median 187 ns 184 ns 10 -lstringa<512> copy{str_with_len_N};/4096_stddev 6.34 ns 7.34 ns 10 -lstringa<512> copy{str_with_len_N};/4096_cv 3.41 % 3.99 % 10 +std::string copy{str_with_len_N};/15_mean 4.91 ns 4.91 ns 10 +std::string copy{str_with_len_N};/15_median 4.85 ns 4.84 ns 10 +std::string copy{str_with_len_N};/15_stddev 0.278 ns 0.257 ns 10 +std::string copy{str_with_len_N};/15_cv 5.65 % 5.24 % 10 +std::string copy{str_with_len_N};/16_mean 107 ns 107 ns 10 +std::string copy{str_with_len_N};/16_median 103 ns 104 ns 10 +std::string copy{str_with_len_N};/16_stddev 11.9 ns 12.3 ns 10 +std::string copy{str_with_len_N};/16_cv 11.10 % 11.53 % 10 +std::string copy{str_with_len_N};/23_mean 100 ns 100 ns 10 +std::string copy{str_with_len_N};/23_median 101 ns 100 ns 10 +std::string copy{str_with_len_N};/23_stddev 7.26 ns 7.03 ns 10 +std::string copy{str_with_len_N};/23_cv 7.25 % 7.03 % 10 +std::string copy{str_with_len_N};/24_mean 104 ns 104 ns 10 +std::string copy{str_with_len_N};/24_median 103 ns 103 ns 10 +std::string copy{str_with_len_N};/24_stddev 9.08 ns 9.36 ns 10 +std::string copy{str_with_len_N};/24_cv 8.74 % 9.00 % 10 +std::string copy{str_with_len_N};/32_mean 108 ns 108 ns 10 +std::string copy{str_with_len_N};/32_median 106 ns 106 ns 10 +std::string copy{str_with_len_N};/32_stddev 8.69 ns 8.17 ns 10 +std::string copy{str_with_len_N};/32_cv 8.02 % 7.54 % 10 +std::string copy{str_with_len_N};/64_mean 113 ns 113 ns 10 +std::string copy{str_with_len_N};/64_median 113 ns 113 ns 10 +std::string copy{str_with_len_N};/64_stddev 6.57 ns 6.98 ns 10 +std::string copy{str_with_len_N};/64_cv 5.81 % 6.17 % 10 +std::string copy{str_with_len_N};/128_mean 104 ns 104 ns 10 +std::string copy{str_with_len_N};/128_median 104 ns 104 ns 10 +std::string copy{str_with_len_N};/128_stddev 5.20 ns 4.85 ns 10 +std::string copy{str_with_len_N};/128_cv 5.00 % 4.68 % 10 +std::string copy{str_with_len_N};/256_mean 110 ns 110 ns 10 +std::string copy{str_with_len_N};/256_median 111 ns 111 ns 10 +std::string copy{str_with_len_N};/256_stddev 9.71 ns 9.46 ns 10 +std::string copy{str_with_len_N};/256_cv 8.81 % 8.58 % 10 +std::string copy{str_with_len_N};/512_mean 110 ns 110 ns 10 +std::string copy{str_with_len_N};/512_median 111 ns 111 ns 10 +std::string copy{str_with_len_N};/512_stddev 10.2 ns 9.75 ns 10 +std::string copy{str_with_len_N};/512_cv 9.29 % 8.90 % 10 +std::string copy{str_with_len_N};/1024_mean 125 ns 125 ns 10 +std::string copy{str_with_len_N};/1024_median 127 ns 128 ns 10 +std::string copy{str_with_len_N};/1024_stddev 12.7 ns 12.4 ns 10 +std::string copy{str_with_len_N};/1024_cv 10.13 % 9.90 % 10 +std::string copy{str_with_len_N};/2048_mean 150 ns 150 ns 10 +std::string copy{str_with_len_N};/2048_median 148 ns 148 ns 10 +std::string copy{str_with_len_N};/2048_stddev 5.76 ns 6.25 ns 10 +std::string copy{str_with_len_N};/2048_cv 3.83 % 4.16 % 10 +std::string copy{str_with_len_N};/4096_mean 206 ns 206 ns 10 +std::string copy{str_with_len_N};/4096_median 207 ns 206 ns 10 +std::string copy{str_with_len_N};/4096_stddev 9.15 ns 9.11 ns 10 +std::string copy{str_with_len_N};/4096_cv 4.44 % 4.41 % 10 +stringa copy{str_with_len_N};/15_mean 4.44 ns 4.44 ns 10 +stringa copy{str_with_len_N};/15_median 4.44 ns 4.50 ns 10 +stringa copy{str_with_len_N};/15_stddev 0.187 ns 0.165 ns 10 +stringa copy{str_with_len_N};/15_cv 4.21 % 3.72 % 10 +stringa copy{str_with_len_N};/16_mean 4.43 ns 4.42 ns 10 +stringa copy{str_with_len_N};/16_median 4.39 ns 4.39 ns 10 +stringa copy{str_with_len_N};/16_stddev 0.235 ns 0.247 ns 10 +stringa copy{str_with_len_N};/16_cv 5.32 % 5.57 % 10 +stringa copy{str_with_len_N};/23_mean 4.45 ns 4.45 ns 10 +stringa copy{str_with_len_N};/23_median 4.51 ns 4.50 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.189 ns 0.186 ns 10 +stringa copy{str_with_len_N};/23_cv 4.24 % 4.19 % 10 +stringa copy{str_with_len_N};/24_mean 19.1 ns 19.0 ns 10 +stringa copy{str_with_len_N};/24_median 19.0 ns 19.0 ns 10 +stringa copy{str_with_len_N};/24_stddev 0.289 ns 0.302 ns 10 +stringa copy{str_with_len_N};/24_cv 1.51 % 1.59 % 10 +stringa copy{str_with_len_N};/32_mean 19.0 ns 19.0 ns 10 +stringa copy{str_with_len_N};/32_median 19.0 ns 19.0 ns 10 +stringa copy{str_with_len_N};/32_stddev 0.184 ns 0.335 ns 10 +stringa copy{str_with_len_N};/32_cv 0.96 % 1.76 % 10 +stringa copy{str_with_len_N};/64_mean 19.0 ns 19.0 ns 10 +stringa copy{str_with_len_N};/64_median 19.0 ns 18.8 ns 10 +stringa copy{str_with_len_N};/64_stddev 0.232 ns 0.202 ns 10 +stringa copy{str_with_len_N};/64_cv 1.22 % 1.07 % 10 +stringa copy{str_with_len_N};/128_mean 18.9 ns 18.9 ns 10 +stringa copy{str_with_len_N};/128_median 18.9 ns 18.8 ns 10 +stringa copy{str_with_len_N};/128_stddev 0.261 ns 0.309 ns 10 +stringa copy{str_with_len_N};/128_cv 1.38 % 1.64 % 10 +stringa copy{str_with_len_N};/256_mean 19.2 ns 19.2 ns 10 +stringa copy{str_with_len_N};/256_median 19.1 ns 18.8 ns 10 +stringa copy{str_with_len_N};/256_stddev 0.543 ns 0.607 ns 10 +stringa copy{str_with_len_N};/256_cv 2.82 % 3.16 % 10 +stringa copy{str_with_len_N};/512_mean 18.9 ns 18.9 ns 10 +stringa copy{str_with_len_N};/512_median 19.0 ns 18.8 ns 10 +stringa copy{str_with_len_N};/512_stddev 0.263 ns 0.309 ns 10 +stringa copy{str_with_len_N};/512_cv 1.39 % 1.64 % 10 +stringa copy{str_with_len_N};/1024_mean 19.1 ns 19.0 ns 10 +stringa copy{str_with_len_N};/1024_median 19.0 ns 18.8 ns 10 +stringa copy{str_with_len_N};/1024_stddev 0.218 ns 0.216 ns 10 +stringa copy{str_with_len_N};/1024_cv 1.15 % 1.14 % 10 +stringa copy{str_with_len_N};/2048_mean 18.9 ns 18.9 ns 10 +stringa copy{str_with_len_N};/2048_median 18.9 ns 19.0 ns 10 +stringa copy{str_with_len_N};/2048_stddev 0.252 ns 0.306 ns 10 +stringa copy{str_with_len_N};/2048_cv 1.33 % 1.62 % 10 +stringa copy{str_with_len_N};/4096_mean 19.1 ns 19.0 ns 10 +stringa copy{str_with_len_N};/4096_median 19.1 ns 19.3 ns 10 +stringa copy{str_with_len_N};/4096_stddev 0.188 ns 0.296 ns 10 +stringa copy{str_with_len_N};/4096_cv 0.98 % 1.55 % 10 +lstringa<16> copy{str_with_len_N};/15_mean 8.49 ns 8.50 ns 10 +lstringa<16> copy{str_with_len_N};/15_median 8.75 ns 8.65 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.621 ns 0.636 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 7.31 % 7.48 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 8.68 ns 8.66 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 8.65 ns 8.68 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 0.527 ns 0.585 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 6.07 % 6.76 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 9.22 ns 9.20 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 9.11 ns 9.16 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 0.524 ns 0.553 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 5.68 % 6.00 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 95.6 ns 95.7 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 96.9 ns 96.4 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 7.28 ns 7.79 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 7.61 % 8.14 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 103 ns 102 ns 10 +lstringa<16> copy{str_with_len_N};/32_median 103 ns 103 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 10.4 ns 10.6 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 10.18 % 10.40 % 10 +lstringa<16> copy{str_with_len_N};/64_mean 104 ns 104 ns 10 +lstringa<16> copy{str_with_len_N};/64_median 105 ns 105 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 7.78 ns 7.24 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 7.45 % 6.94 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 109 ns 109 ns 10 +lstringa<16> copy{str_with_len_N};/128_median 110 ns 110 ns 10 +lstringa<16> copy{str_with_len_N};/128_stddev 5.44 ns 5.96 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 4.99 % 5.48 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 706 ns 706 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 703 ns 705 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 18.9 ns 18.8 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 2.67 % 2.67 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 108 ns 108 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 110 ns 109 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 11.0 ns 10.7 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 10.16 % 9.91 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 122 ns 122 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 121 ns 120 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 7.40 ns 7.48 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 6.07 % 6.15 % 10 +lstringa<16> copy{str_with_len_N};/2048_mean 149 ns 149 ns 10 +lstringa<16> copy{str_with_len_N};/2048_median 152 ns 152 ns 10 +lstringa<16> copy{str_with_len_N};/2048_stddev 11.6 ns 12.2 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 7.76 % 8.19 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 211 ns 210 ns 10 +lstringa<16> copy{str_with_len_N};/4096_median 211 ns 213 ns 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 8.49 ns 8.95 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 4.03 % 4.25 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 9.83 ns 9.84 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 9.77 ns 9.73 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 0.527 ns 0.558 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 5.36 % 5.67 % 10 +lstringa<512> copy{str_with_len_N};/16_mean 10.2 ns 10.2 ns 10 +lstringa<512> copy{str_with_len_N};/16_median 10.2 ns 10.1 ns 10 +lstringa<512> copy{str_with_len_N};/16_stddev 0.632 ns 0.643 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 6.17 % 6.28 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 9.69 ns 9.69 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 9.76 ns 9.63 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 0.150 ns 0.141 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 1.55 % 1.46 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 10.2 ns 10.2 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 10.2 ns 10.3 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.558 ns 0.610 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 5.49 % 5.99 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 14.1 ns 14.2 ns 10 +lstringa<512> copy{str_with_len_N};/32_median 14.0 ns 14.0 ns 10 +lstringa<512> copy{str_with_len_N};/32_stddev 0.971 ns 0.964 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 6.86 % 6.81 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 13.7 ns 13.7 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 13.4 ns 13.5 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.932 ns 0.949 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 6.81 % 6.94 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 14.1 ns 14.1 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 14.1 ns 14.0 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 0.542 ns 0.529 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 3.85 % 3.76 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 15.2 ns 15.2 ns 10 +lstringa<512> copy{str_with_len_N};/256_median 15.2 ns 15.3 ns 10 +lstringa<512> copy{str_with_len_N};/256_stddev 1.06 ns 1.12 ns 10 +lstringa<512> copy{str_with_len_N};/256_cv 6.93 % 7.32 % 10 +lstringa<512> copy{str_with_len_N};/512_mean 16.7 ns 16.7 ns 10 +lstringa<512> copy{str_with_len_N};/512_median 16.6 ns 16.5 ns 10 +lstringa<512> copy{str_with_len_N};/512_stddev 0.918 ns 0.871 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 5.50 % 5.23 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 112 ns 112 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 112 ns 112 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 8.71 ns 9.16 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 7.75 % 8.18 % 10 +lstringa<512> copy{str_with_len_N};/2048_mean 153 ns 152 ns 10 +lstringa<512> copy{str_with_len_N};/2048_median 154 ns 153 ns 10 +lstringa<512> copy{str_with_len_N};/2048_stddev 13.7 ns 14.4 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 8.96 % 9.44 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 208 ns 208 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 206 ns 206 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 10.9 ns 11.6 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 5.24 % 5.57 % 10 ----- Convert to int '1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 32.2 ns 32.1 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 31.9 ns 32.1 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.839 ns 0.870 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 2.60 % 2.71 % 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 13.8 ns 13.7 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 13.7 ns 13.7 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.442 ns 0.359 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 3.21 % 2.62 % 10 -stringa s = "123456789"; int res = s.to_int_mean 15.7 ns 15.7 ns 10 -stringa s = "123456789"; int res = s.to_int_median 15.5 ns 15.5 ns 10 -stringa s = "123456789"; int res = s.to_int_stddev 0.567 ns 0.531 ns 10 -stringa s = "123456789"; int res = s.to_int_cv 3.61 % 3.39 % 10 -ssa s = "123456789"; int res = s.to_int_mean 15.1 ns 14.9 ns 10 -ssa s = "123456789"; int res = s.to_int_median 15.0 ns 14.8 ns 10 -ssa s = "123456789"; int res = s.to_int_stddev 0.325 ns 0.449 ns 10 -ssa s = "123456789"; int res = s.to_int_cv 2.16 % 3.00 % 10 -lstringa<20> s = "123456789"; int res = s.to_int_mean 16.1 ns 15.9 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_median 16.1 ns 15.9 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.287 ns 0.287 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_cv 1.79 % 1.80 % 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 38.8 ns 38.8 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 39.3 ns 39.3 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 2.58 ns 2.65 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 6.65 % 6.83 % 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 16.2 ns 16.2 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 16.5 ns 16.6 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.919 ns 0.915 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 5.68 % 5.65 % 10 +stringa s = "123456789"; int res = s.to_int_mean 17.3 ns 17.3 ns 10 +stringa s = "123456789"; int res = s.to_int_median 17.4 ns 17.3 ns 10 +stringa s = "123456789"; int res = s.to_int_stddev 0.643 ns 0.551 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 3.72 % 3.19 % 10 +ssa s = "123456789"; int res = s.to_int_mean 17.5 ns 17.5 ns 10 +ssa s = "123456789"; int res = s.to_int_median 17.7 ns 17.9 ns 10 +ssa s = "123456789"; int res = s.to_int_stddev 1.24 ns 1.34 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 7.06 % 7.61 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 17.4 ns 17.4 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 17.1 ns 17.3 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 1.07 ns 1.07 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 6.14 % 6.16 % 10 ----- Convert to unsigned 'abcDef' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 35.1 ns 34.8 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 34.9 ns 34.5 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 1.07 ns 1.04 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 3.04 % 2.97 % 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.56 ns 9.52 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.46 ns 9.42 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.246 ns 0.320 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 2.57 % 3.37 % 10 -stringa s = "abcDef"; int res = s.to_int_mean 13.5 ns 13.1 ns 10 -stringa s = "abcDef"; int res = s.to_int_median 13.3 ns 13.2 ns 10 -stringa s = "abcDef"; int res = s.to_int_stddev 0.431 ns 0.212 ns 10 -stringa s = "abcDef"; int res = s.to_int_cv 3.20 % 1.62 % 10 -ssa s = "abcDef"; int res = s.to_int_mean 13.0 ns 12.8 ns 10 -ssa s = "abcDef"; int res = s.to_int_median 12.8 ns 12.8 ns 10 -ssa s = "abcDef"; int res = s.to_int_stddev 0.294 ns 0.263 ns 10 -ssa s = "abcDef"; int res = s.to_int_cv 2.27 % 2.05 % 10 -lstringa<20> s = "abcDef"; int res = s.to_int_mean 13.3 ns 13.2 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_median 13.1 ns 13.1 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.427 ns 0.256 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_cv 3.22 % 1.95 % 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 40.8 ns 40.9 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 41.3 ns 41.5 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 4.02 ns 4.13 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 9.86 % 10.12 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 11.0 ns 11.0 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 10.9 ns 10.9 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.443 ns 0.503 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 4.02 % 4.57 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 15.6 ns 15.6 ns 10 +stringa s = "abcDef"; int res = s.to_int_median 15.6 ns 15.7 ns 10 +stringa s = "abcDef"; int res = s.to_int_stddev 0.596 ns 0.578 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 3.82 % 3.71 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 16.3 ns 16.3 ns 10 +ssa s = "abcDef"; int res = s.to_int_median 16.2 ns 16.3 ns 10 +ssa s = "abcDef"; int res = s.to_int_stddev 0.503 ns 0.529 ns 10 +ssa s = "abcDef"; int res = s.to_int_cv 3.09 % 3.26 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_mean 16.1 ns 16.1 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_median 16.0 ns 15.9 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.498 ns 0.543 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 3.09 % 3.37 % 10 ----- Convert to int ' 1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 45.3 ns 44.8 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 45.3 ns 44.9 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 1.32 ns 0.971 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 2.92 % 2.17 % 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 19.7 ns 19.5 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 19.6 ns 19.3 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.325 ns 0.356 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 1.65 % 1.83 % 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 17.7 ns 17.5 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 17.7 ns 17.6 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.306 ns 0.282 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 1.73 % 1.62 % 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 54.1 ns 53.7 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 53.8 ns 53.1 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 3.29 ns 2.96 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 6.09 % 5.52 % 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 22.6 ns 22.6 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 22.2 ns 22.2 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 1.22 ns 1.12 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 5.39 % 4.98 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 18.5 ns 18.5 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 18.4 ns 18.6 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.875 ns 0.824 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 4.74 % 4.46 % 10 ----- Convert to double '1234.567e10' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 102 ns 101 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 101 ns 100 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 2.49 ns 2.76 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 2.44 % 2.73 % 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 76.5 ns 76.2 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 75.7 ns 75.9 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 2.73 ns 2.73 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 3.57 % 3.59 % 10 -ssa s = "1234.567e10"; double res = *s.to_double()_mean 36.6 ns 36.3 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_median 36.1 ns 36.1 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_stddev 1.09 ns 0.986 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_cv 2.99 % 2.72 % 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 118 ns 118 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 117 ns 117 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 6.81 ns 7.42 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 5.79 % 6.30 % 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 95.8 ns 95.8 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 96.2 ns 95.6 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 3.72 ns 3.48 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 3.88 % 3.63 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_mean 41.0 ns 41.0 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_median 41.0 ns 41.0 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.677 ns 0.797 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 1.65 % 1.94 % 10 -- Append const literal of 16 bytes 64 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << "abbaabbaabbaabba";_mean 5705 ns 5706 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_median 5476 ns 5511 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 425 ns 443 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_cv 7.44 % 7.77 % 10 -std::string str; ... str += "abbaabbaabbaabba";_mean 1288 ns 1278 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_median 1272 ns 1270 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_stddev 52.8 ns 48.9 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_cv 4.10 % 3.82 % 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 923 ns 911 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_median 915 ns 903 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 34.1 ns 28.3 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 3.69 % 3.11 % 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 531 ns 527 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_median 525 ns 523 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 14.9 ns 16.6 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 2.81 % 3.14 % 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 349 ns 346 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_median 348 ns 345 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 5.90 ns 5.66 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 1.69 % 1.64 % 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 234 ns 232 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 234 ns 229 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 4.73 ns 4.75 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 2.02 % 2.05 % 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 7262 ns 7261 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 7250 ns 7220 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 681 ns 725 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 9.38 % 9.99 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 1589 ns 1581 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 1556 ns 1554 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 70.2 ns 67.2 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 4.42 % 4.25 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 1249 ns 1248 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 1254 ns 1245 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 63.9 ns 63.5 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 5.11 % 5.09 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 639 ns 638 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 622 ns 621 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 67.8 ns 64.1 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 10.61 % 10.06 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 511 ns 509 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 513 ns 508 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 16.7 ns 20.0 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 3.26 % 3.93 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 255 ns 254 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 255 ns 257 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 8.45 ns 10.4 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 3.32 % 4.07 % 10 -- Append string of 16 bytes and const literal of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 5637 ns 5500 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 5631 ns 5469 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 259 ns 123 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 4.60 % 2.24 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 3881 ns 3845 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_median 3863 ns 3836 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 85.9 ns 49.5 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 2.21 % 1.29 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 839 ns 828 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 835 ns 828 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 18.8 ns 18.8 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.24 % 2.27 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 533 ns 527 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 526 ns 523 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 27.6 ns 23.4 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.18 % 4.43 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 387 ns 379 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 390 ns 377 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 13.0 ns 11.8 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.35 % 3.13 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 285 ns 279 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 286 ns 276 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 9.43 ns 10.1 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.31 % 3.62 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 6865 ns 6878 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 6905 ns 6975 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 557 ns 577 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 8.11 % 8.39 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 4507 ns 4491 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 4459 ns 4400 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 324 ns 351 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 7.20 % 7.82 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 1082 ns 1083 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 1075 ns 1067 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 63.4 ns 68.2 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.86 % 6.30 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 664 ns 664 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 654 ns 656 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 39.3 ns 38.5 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.91 % 5.79 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 538 ns 538 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 548 ns 547 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 28.6 ns 30.5 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.31 % 5.68 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 319 ns 319 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 322 ns 321 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 17.1 ns 17.7 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.36 % 5.56 % 10 -- Append string of 16 bytes and const literal of 16 bytes 2048 times, 65536 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 274181 ns 271821 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 272079 ns 269938 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 6678 ns 7279 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 2.44 % 2.68 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 196295 ns 193795 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 196074 ns 192540 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 5109 ns 6559 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.60 % 3.38 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 23926 ns 23242 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 23566 ns 22949 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1393 ns 573 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.82 % 2.47 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 22113 ns 21777 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 22164 ns 21484 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 539 ns 573 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.44 % 2.63 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 23784 ns 23646 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 23238 ns 23019 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1312 ns 1369 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.51 % 5.79 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 22963 ns 22851 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 22728 ns 22670 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 784 ns 805 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.42 % 3.52 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 323116 ns 323248 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 326460 ns 324852 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 32689 ns 34665 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 10.12 % 10.72 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 236019 ns 236006 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 238283 ns 240157 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 15984 ns 17635 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 6.77 % 7.47 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 26277 ns 26241 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 25999 ns 26088 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1262 ns 1344 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.80 % 5.12 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 24737 ns 24745 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 24685 ns 24588 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 873 ns 782 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.53 % 3.16 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 23810 ns 23699 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 23793 ns 23542 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 755 ns 782 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.17 % 3.30 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 24103 ns 24023 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 23564 ns 23438 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2106 ns 2241 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 8.74 % 9.33 % 10 -- Append 2 string of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var1 << str_var2;_mean 5373 ns 5281 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_median 5528 ns 5234 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_stddev 262 ns 231 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_cv 4.88 % 4.37 % 10 -std::string str; ... str += str_var1 + str_var2;_mean 3964 ns 3889 ns 10 -std::string str; ... str += str_var1 + str_var2;_median 3945 ns 3861 ns 10 -std::string str; ... str += str_var1 + str_var2;_stddev 102 ns 89.3 ns 10 -std::string str; ... str += str_var1 + str_var2;_cv 2.57 % 2.30 % 10 -lstringa<16> str; ... str += str_var1 + str_var2;_mean 932 ns 914 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_median 922 ns 889 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_stddev 45.8 ns 47.4 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_cv 4.91 % 5.18 % 10 -lstringa<128> str; ... str += str_var1 + str_var2;_mean 597 ns 596 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_median 596 ns 600 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_stddev 9.11 ns 9.42 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_cv 1.53 % 1.58 % 10 -lstringa<512> str; ... str += str_var1 + str_var2;_mean 449 ns 448 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_median 446 ns 449 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_stddev 7.41 ns 9.71 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_cv 1.65 % 2.17 % 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_mean 353 ns 350 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_median 351 ns 349 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 6.61 ns 8.67 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_cv 1.87 % 2.48 % 10 +std::stringstream str; ... str << str_var1 << str_var2;_mean 6233 ns 6222 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 6133 ns 6069 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 467 ns 466 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 7.49 % 7.49 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 4436 ns 4436 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 4418 ns 4447 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 210 ns 199 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 4.74 % 4.47 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 1198 ns 1193 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_median 1189 ns 1193 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_stddev 64.2 ns 69.4 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 5.36 % 5.82 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 673 ns 672 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 677 ns 677 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 33.7 ns 35.3 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 5.00 % 5.25 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 595 ns 593 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 594 ns 593 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 41.4 ns 42.2 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 6.95 % 7.12 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 399 ns 399 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 396 ns 391 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 47.6 ns 46.5 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 11.92 % 11.64 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; str << "test = " << k << " times";_mean 11252 ns 11143 ns 10 -std::stringstream str; str << "test = " << k << " times";_median 11193 ns 10986 ns 10 -std::stringstream str; str << "test = " << k << " times";_stddev 294 ns 398 ns 10 -std::stringstream str; str << "test = " << k << " times";_cv 2.61 % 3.58 % 10 -std::string str = "test = " + std::to_string(k) + " times";_mean 1222 ns 1216 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_median 1221 ns 1221 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_stddev 22.2 ns 22.4 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_cv 1.82 % 1.85 % 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 2807 ns 2800 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 2814 ns 2825 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 48.0 ns 43.9 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 1.71 % 1.57 % 10 -std::string str = std::format("test = {} times", k);_mean 2421 ns 2412 ns 10 -std::string str = std::format("test = {} times", k);_median 2380 ns 2407 ns 10 -std::string str = std::format("test = {} times", k);_stddev 88.1 ns 71.7 ns 10 -std::string str = std::format("test = {} times", k);_cv 3.64 % 2.97 % 10 -lstringa<8> str; str.format("test = {} times", k);_mean 2671 ns 2633 ns 10 -lstringa<8> str; str.format("test = {} times", k);_median 2648 ns 2609 ns 10 -lstringa<8> str; str.format("test = {} times", k);_stddev 70.0 ns 50.0 ns 10 -lstringa<8> str; str.format("test = {} times", k);_cv 2.62 % 1.90 % 10 -lstringa<32> str; str.format("test = {} times", k);_mean 1531 ns 1523 ns 10 -lstringa<32> str; str.format("test = {} times", k);_median 1522 ns 1515 ns 10 -lstringa<32> str; str.format("test = {} times", k);_stddev 32.6 ns 44.5 ns 10 -lstringa<32> str; str.format("test = {} times", k);_cv 2.13 % 2.92 % 10 -lstringa<8> str = "test = " + k + " times";_mean 880 ns 872 ns 10 -lstringa<8> str = "test = " + k + " times";_median 880 ns 872 ns 10 -lstringa<8> str = "test = " + k + " times";_stddev 19.1 ns 16.4 ns 10 -lstringa<8> str = "test = " + k + " times";_cv 2.17 % 1.89 % 10 -lstringa<32> str = "test = " + k + " times";_mean 187 ns 182 ns 10 -lstringa<32> str = "test = " + k + " times";_median 188 ns 181 ns 10 -lstringa<32> str = "test = " + k + " times";_stddev 5.30 ns 4.63 ns 10 -lstringa<32> str = "test = " + k + " times";_cv 2.84 % 2.54 % 10 -stringa str = "test = " + k + " times";_mean 236 ns 234 ns 10 -stringa str = "test = " + k + " times";_median 231 ns 232 ns 10 -stringa str = "test = " + k + " times";_stddev 10.9 ns 9.21 ns 10 -stringa str = "test = " + k + " times";_cv 4.62 % 3.93 % 10 +std::stringstream str; str << "test = " << k << " times";_mean 13240 ns 13225 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 13019 ns 13114 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 877 ns 923 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 6.62 % 6.98 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 1404 ns 1403 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 1356 ns 1350 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 168 ns 162 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 11.94 % 11.55 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 3209 ns 3214 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 3134 ns 3139 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 232 ns 221 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 7.24 % 6.88 % 10 +std::string str = std::format("test = {} times", k);_mean 2539 ns 2536 ns 10 +std::string str = std::format("test = {} times", k);_median 2526 ns 2511 ns 10 +std::string str = std::format("test = {} times", k);_stddev 150 ns 171 ns 10 +std::string str = std::format("test = {} times", k);_cv 5.89 % 6.72 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 3193 ns 3192 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 3180 ns 3146 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 119 ns 146 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 3.73 % 4.56 % 10 +lstringa<32> str; str.format("test = {} times", k);_mean 1659 ns 1660 ns 10 +lstringa<32> str; str.format("test = {} times", k);_median 1658 ns 1657 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 51.1 ns 52.5 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 3.08 % 3.16 % 10 +lstringa<8> str = "test = " + k + " times";_mean 975 ns 974 ns 10 +lstringa<8> str = "test = " + k + " times";_median 959 ns 963 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 42.9 ns 44.5 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 4.40 % 4.57 % 10 +lstringa<32> str = "test = " + k + " times";_mean 217 ns 217 ns 10 +lstringa<32> str = "test = " + k + " times";_median 214 ns 213 ns 10 +lstringa<32> str = "test = " + k + " times";_stddev 16.3 ns 17.2 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 7.49 % 7.94 % 10 +stringa str = "test = " + k + " times";_mean 276 ns 276 ns 10 +stringa str = "test = " + k + " times";_median 277 ns 277 ns 10 +stringa str = "test = " + k + " times";_stddev 24.4 ns 25.0 ns 10 +stringa str = "test = " + k + " times";_cv 8.82 % 9.08 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find + substr + std::strtol_mean 550 ns 539 ns 10 -std::string::find + substr + std::strtol_median 544 ns 530 ns 10 -std::string::find + substr + std::strtol_stddev 21.9 ns 13.5 ns 10 -std::string::find + substr + std::strtol_cv 3.99 % 2.50 % 10 -ssa::splitter + ssa::as_int_mean 303 ns 300 ns 10 -ssa::splitter + ssa::as_int_median 303 ns 295 ns 10 -ssa::splitter + ssa::as_int_stddev 15.1 ns 17.4 ns 10 -ssa::splitter + ssa::as_int_cv 4.98 % 5.80 % 10 -ssa::splitf + functor_mean 217 ns 214 ns 10 -ssa::splitf + functor_median 217 ns 212 ns 10 -ssa::splitf + functor_stddev 5.38 ns 6.73 ns 10 -ssa::splitf + functor_cv 2.49 % 3.15 % 10 +std::string::find + substr + std::strtol_mean 633 ns 631 ns 10 +std::string::find + substr + std::strtol_median 620 ns 625 ns 10 +std::string::find + substr + std::strtol_stddev 39.1 ns 39.8 ns 10 +std::string::find + substr + std::strtol_cv 6.19 % 6.31 % 10 +ssa::splitter + ssa::as_int_mean 329 ns 328 ns 10 +ssa::splitter + ssa::as_int_median 325 ns 322 ns 10 +ssa::splitter + ssa::as_int_stddev 19.3 ns 19.7 ns 10 +ssa::splitter + ssa::as_int_cv 5.88 % 6.01 % 10 +ssa::splitf + functor_mean 240 ns 239 ns 10 +ssa::splitf + functor_median 237 ns 237 ns 10 +ssa::splitf + functor_stddev 10.6 ns 9.77 ns 10 +ssa::splitf + functor_cv 4.43 % 4.09 % 10 -- Replace symbols in text ~400 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Naive (and wrong) replace symbols with std::string find + replace_mean 1298 ns 1292 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_median 1287 ns 1270 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_stddev 82.0 ns 86.3 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_cv 6.32 % 6.68 % 10 -replace symbols with std::string find_first_of + replace_mean 2231 ns 2212 ns 10 -replace symbols with std::string find_first_of + replace_median 2235 ns 2197 ns 10 -replace symbols with std::string find_first_of + replace_stddev 86.8 ns 97.8 ns 10 -replace symbols with std::string find_first_of + replace_cv 3.89 % 4.42 % 10 -replace symbols with std::string_view find_first_of + copy_mean 2520 ns 2517 ns 10 -replace symbols with std::string_view find_first_of + copy_median 2524 ns 2511 ns 10 -replace symbols with std::string_view find_first_of + copy_stddev 31.7 ns 31.7 ns 10 -replace symbols with std::string_view find_first_of + copy_cv 1.26 % 1.26 % 10 -replace runtime symbols with string expressions and without remembering all search results_mean 1580 ns 1573 ns 10 -replace runtime symbols with string expressions and without remembering all search results_median 1559 ns 1554 ns 10 -replace runtime symbols with string expressions and without remembering all search results_stddev 51.1 ns 56.2 ns 10 -replace runtime symbols with string expressions and without remembering all search results_cv 3.23 % 3.58 % 10 -replace runtime symbols with simstr and memorization of all search results_mean 1389 ns 1384 ns 10 -replace runtime symbols with simstr and memorization of all search results_median 1377 ns 1381 ns 10 -replace runtime symbols with simstr and memorization of all search results_stddev 36.5 ns 31.2 ns 10 -replace runtime symbols with simstr and memorization of all search results_cv 2.63 % 2.25 % 10 -replace const symbols with string expressions and without remembering all search results_mean 1283 ns 1271 ns 10 -replace const symbols with string expressions and without remembering all search results_median 1270 ns 1256 ns 10 -replace const symbols with string expressions and without remembering all search results_stddev 31.2 ns 22.2 ns 10 -replace const symbols with string expressions and without remembering all search results_cv 2.43 % 1.75 % 10 -replace const symbols with string expressions and memorization of all search results_mean 1242 ns 1233 ns 10 -replace const symbols with string expressions and memorization of all search results_median 1240 ns 1228 ns 10 -replace const symbols with string expressions and memorization of all search results_stddev 39.7 ns 31.7 ns 10 -replace const symbols with string expressions and memorization of all search results_cv 3.20 % 2.57 % 10 +Naive (and wrong) replace symbols with std::string find + replace_mean 1428 ns 1423 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 1429 ns 1423 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 97.9 ns 97.5 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 6.86 % 6.85 % 10 +replace symbols with std::string find_first_of + replace_mean 2443 ns 2438 ns 10 +replace symbols with std::string find_first_of + replace_median 2468 ns 2459 ns 10 +replace symbols with std::string find_first_of + replace_stddev 120 ns 129 ns 10 +replace symbols with std::string find_first_of + replace_cv 4.92 % 5.28 % 10 +replace symbols with std::string_view find_first_of + copy_mean 2948 ns 2951 ns 10 +replace symbols with std::string_view find_first_of + copy_median 2852 ns 2877 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 295 ns 290 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 9.99 % 9.83 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 1804 ns 1803 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 1822 ns 1814 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 89.1 ns 97.3 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 4.94 % 5.40 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 1612 ns 1611 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 1615 ns 1622 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 124 ns 118 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 7.68 % 7.34 % 10 +replace const symbols with string expressions and without remembering all search results_mean 1441 ns 1441 ns 10 +replace const symbols with string expressions and without remembering all search results_median 1401 ns 1397 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 96.6 ns 101 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 6.70 % 7.00 % 10 +replace const symbols with string expressions and memorization of all search results_mean 1438 ns 1437 ns 10 +replace const symbols with string expressions and memorization of all search results_median 1402 ns 1409 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 86.9 ns 83.4 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 6.04 % 5.81 % 10 -- Replace symbols in text ~40 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Short Naive (and wrong) replace symbols with std::string find + replace_mean 339 ns 338 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_median 335 ns 338 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_stddev 9.07 ns 6.26 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_cv 2.67 % 1.86 % 10 -Short replace symbols with std::string find_first_of + replace_mean 431 ns 429 ns 10 -Short replace symbols with std::string find_first_of + replace_median 429 ns 425 ns 10 -Short replace symbols with std::string find_first_of + replace_stddev 15.6 ns 15.2 ns 10 -Short replace symbols with std::string find_first_of + replace_cv 3.63 % 3.55 % 10 -Short replace symbols with std::string_view find_first_of + copy_mean 357 ns 356 ns 10 -Short replace symbols with std::string_view find_first_of + copy_median 356 ns 356 ns 10 -Short replace symbols with std::string_view find_first_of + copy_stddev 8.94 ns 9.86 ns 10 -Short replace symbols with std::string_view find_first_of + copy_cv 2.50 % 2.77 % 10 -Short replace runtime symbols with string expressions and without remembering all search results_mean 315 ns 313 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_median 313 ns 311 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_stddev 8.27 ns 7.56 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_cv 2.62 % 2.41 % 10 -Short replace runtime symbols with simstr and memorization of all search results_mean 393 ns 390 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_median 386 ns 388 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_stddev 14.7 ns 8.27 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_cv 3.74 % 2.12 % 10 -Short replace const symbols with string expressions and without remembering all search results_mean 253 ns 250 ns 10 -Short replace const symbols with string expressions and without remembering all search results_median 254 ns 249 ns 10 -Short replace const symbols with string expressions and without remembering all search results_stddev 8.12 ns 7.82 ns 10 -Short replace const symbols with string expressions and without remembering all search results_cv 3.21 % 3.13 % 10 -Short replace const symbols with string expressions and memorization of all search results_mean 359 ns 352 ns 10 -Short replace const symbols with string expressions and memorization of all search results_median 359 ns 352 ns 10 -Short replace const symbols with string expressions and memorization of all search results_stddev 12.2 ns 9.21 ns 10 -Short replace const symbols with string expressions and memorization of all search results_cv 3.41 % 2.61 % 10 +Short Naive (and wrong) replace symbols with std::string find + replace_mean 384 ns 384 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 388 ns 385 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 23.9 ns 23.2 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 6.22 % 6.03 % 10 +Short replace symbols with std::string find_first_of + replace_mean 475 ns 474 ns 10 +Short replace symbols with std::string find_first_of + replace_median 490 ns 488 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 35.4 ns 37.2 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 7.44 % 7.84 % 10 +Short replace symbols with std::string_view find_first_of + copy_mean 388 ns 385 ns 10 +Short replace symbols with std::string_view find_first_of + copy_median 381 ns 377 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 26.8 ns 28.2 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 6.91 % 7.32 % 10 +Short replace runtime symbols with string expressions and without remembering all search results_mean 302 ns 301 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_median 298 ns 300 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 10.2 ns 8.35 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 3.39 % 2.78 % 10 +Short replace runtime symbols with simstr and memorization of all search results_mean 434 ns 433 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_median 429 ns 431 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 36.0 ns 34.4 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 8.30 % 7.94 % 10 +Short replace const symbols with string expressions and without remembering all search results_mean 260 ns 259 ns 10 +Short replace const symbols with string expressions and without remembering all search results_median 259 ns 262 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 4.81 ns 6.17 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 1.85 % 2.38 % 10 +Short replace const symbols with string expressions and memorization of all search results_mean 345 ns 344 ns 10 +Short replace const symbols with string expressions and memorization of all search results_median 345 ns 341 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 11.0 ns 11.9 ns 10 +Short replace const symbols with string expressions and memorization of all search results_cv 3.20 % 3.46 % 10 ----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to ---- in std::string|64_mean 251 ns 247 ns 10 -replace bb to ---- in std::string|64_median 250 ns 248 ns 10 -replace bb to ---- in std::string|64_stddev 10.6 ns 8.74 ns 10 -replace bb to ---- in std::string|64_cv 4.24 % 3.54 % 10 -replace bb to ---- in std::string|256_mean 825 ns 814 ns 10 -replace bb to ---- in std::string|256_median 835 ns 802 ns 10 -replace bb to ---- in std::string|256_stddev 29.2 ns 26.1 ns 10 -replace bb to ---- in std::string|256_cv 3.54 % 3.20 % 10 -replace bb to ---- in std::string|512_mean 1501 ns 1482 ns 10 -replace bb to ---- in std::string|512_median 1483 ns 1475 ns 10 -replace bb to ---- in std::string|512_stddev 55.0 ns 32.4 ns 10 -replace bb to ---- in std::string|512_cv 3.67 % 2.19 % 10 -replace bb to ---- in std::string|1024_mean 3319 ns 3289 ns 10 -replace bb to ---- in std::string|1024_median 3344 ns 3333 ns 10 -replace bb to ---- in std::string|1024_stddev 93.5 ns 94.2 ns 10 -replace bb to ---- in std::string|1024_cv 2.82 % 2.87 % 10 -replace bb to ---- in std::string|2048_mean 8393 ns 8119 ns 10 -replace bb to ---- in std::string|2048_median 8442 ns 8161 ns 10 -replace bb to ---- in std::string|2048_stddev 245 ns 276 ns 10 -replace bb to ---- in std::string|2048_cv 2.92 % 3.39 % 10 -replace bb to ---- in lstringa<8>|64_mean 330 ns 325 ns 10 -replace bb to ---- in lstringa<8>|64_median 329 ns 326 ns 10 -replace bb to ---- in lstringa<8>|64_stddev 7.25 ns 5.12 ns 10 -replace bb to ---- in lstringa<8>|64_cv 2.20 % 1.57 % 10 -replace bb to ---- in lstringa<8>|256_mean 692 ns 681 ns 10 -replace bb to ---- in lstringa<8>|256_median 694 ns 677 ns 10 -replace bb to ---- in lstringa<8>|256_stddev 33.0 ns 31.4 ns 10 -replace bb to ---- in lstringa<8>|256_cv 4.78 % 4.61 % 10 -replace bb to ---- in lstringa<8>|512_mean 1154 ns 1133 ns 10 -replace bb to ---- in lstringa<8>|512_median 1142 ns 1123 ns 10 -replace bb to ---- in lstringa<8>|512_stddev 32.8 ns 12.6 ns 10 -replace bb to ---- in lstringa<8>|512_cv 2.84 % 1.11 % 10 -replace bb to ---- in lstringa<8>|1024_mean 2102 ns 2049 ns 10 -replace bb to ---- in lstringa<8>|1024_median 2110 ns 2018 ns 10 -replace bb to ---- in lstringa<8>|1024_stddev 83.2 ns 66.9 ns 10 -replace bb to ---- in lstringa<8>|1024_cv 3.96 % 3.26 % 10 -replace bb to ---- in lstringa<8>|2048_mean 3939 ns 3884 ns 10 -replace bb to ---- in lstringa<8>|2048_median 3968 ns 3934 ns 10 -replace bb to ---- in lstringa<8>|2048_stddev 92.9 ns 90.0 ns 10 -replace bb to ---- in lstringa<8>|2048_cv 2.36 % 2.32 % 10 -replace bb to ---- by init stringa|64_mean 209 ns 206 ns 10 -replace bb to ---- by init stringa|64_median 208 ns 205 ns 10 -replace bb to ---- by init stringa|64_stddev 9.63 ns 7.56 ns 10 -replace bb to ---- by init stringa|64_cv 4.60 % 3.67 % 10 -replace bb to ---- by init stringa|256_mean 485 ns 477 ns 10 -replace bb to ---- by init stringa|256_median 485 ns 470 ns 10 -replace bb to ---- by init stringa|256_stddev 14.8 ns 18.7 ns 10 -replace bb to ---- by init stringa|256_cv 3.05 % 3.92 % 10 -replace bb to ---- by init stringa|512_mean 1086 ns 1078 ns 10 -replace bb to ---- by init stringa|512_median 1076 ns 1078 ns 10 -replace bb to ---- by init stringa|512_stddev 17.4 ns 28.3 ns 10 -replace bb to ---- by init stringa|512_cv 1.60 % 2.63 % 10 -replace bb to ---- by init stringa|1024_mean 2232 ns 2226 ns 10 -replace bb to ---- by init stringa|1024_median 2210 ns 2222 ns 10 -replace bb to ---- by init stringa|1024_stddev 51.5 ns 49.9 ns 10 -replace bb to ---- by init stringa|1024_cv 2.31 % 2.24 % 10 -replace bb to ---- by init stringa|2048_mean 4615 ns 4541 ns 10 -replace bb to ---- by init stringa|2048_median 4603 ns 4551 ns 10 -replace bb to ---- by init stringa|2048_stddev 99.7 ns 121 ns 10 -replace bb to ---- by init stringa|2048_cv 2.16 % 2.67 % 10 +replace bb to ---- in std::string|64_mean 249 ns 248 ns 10 +replace bb to ---- in std::string|64_median 246 ns 248 ns 10 +replace bb to ---- in std::string|64_stddev 9.44 ns 10.9 ns 10 +replace bb to ---- in std::string|64_cv 3.79 % 4.40 % 10 +replace bb to ---- in std::string|256_mean 810 ns 811 ns 10 +replace bb to ---- in std::string|256_median 803 ns 802 ns 10 +replace bb to ---- in std::string|256_stddev 18.3 ns 16.9 ns 10 +replace bb to ---- in std::string|256_cv 2.25 % 2.09 % 10 +replace bb to ---- in std::string|512_mean 1556 ns 1551 ns 10 +replace bb to ---- in std::string|512_median 1544 ns 1538 ns 10 +replace bb to ---- in std::string|512_stddev 60.5 ns 57.7 ns 10 +replace bb to ---- in std::string|512_cv 3.89 % 3.72 % 10 +replace bb to ---- in std::string|1024_mean 3229 ns 3208 ns 10 +replace bb to ---- in std::string|1024_median 3191 ns 3149 ns 10 +replace bb to ---- in std::string|1024_stddev 125 ns 146 ns 10 +replace bb to ---- in std::string|1024_cv 3.86 % 4.54 % 10 +replace bb to ---- in std::string|2048_mean 8174 ns 8126 ns 10 +replace bb to ---- in std::string|2048_median 8102 ns 8022 ns 10 +replace bb to ---- in std::string|2048_stddev 363 ns 413 ns 10 +replace bb to ---- in std::string|2048_cv 4.44 % 5.08 % 10 +replace bb to ---- in lstringa<8>|64_mean 312 ns 312 ns 10 +replace bb to ---- in lstringa<8>|64_median 312 ns 310 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 7.11 ns 10.5 ns 10 +replace bb to ---- in lstringa<8>|64_cv 2.28 % 3.36 % 10 +replace bb to ---- in lstringa<8>|256_mean 660 ns 659 ns 10 +replace bb to ---- in lstringa<8>|256_median 662 ns 663 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 17.2 ns 18.0 ns 10 +replace bb to ---- in lstringa<8>|256_cv 2.61 % 2.73 % 10 +replace bb to ---- in lstringa<8>|512_mean 1138 ns 1137 ns 10 +replace bb to ---- in lstringa<8>|512_median 1139 ns 1134 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 31.0 ns 37.5 ns 10 +replace bb to ---- in lstringa<8>|512_cv 2.72 % 3.30 % 10 +replace bb to ---- in lstringa<8>|1024_mean 2056 ns 2049 ns 10 +replace bb to ---- in lstringa<8>|1024_median 2060 ns 2040 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 39.7 ns 46.8 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 1.93 % 2.28 % 10 +replace bb to ---- in lstringa<8>|2048_mean 3917 ns 3901 ns 10 +replace bb to ---- in lstringa<8>|2048_median 3889 ns 3850 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 87.2 ns 90.0 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 2.23 % 2.31 % 10 +replace bb to ---- by init stringa|64_mean 206 ns 205 ns 10 +replace bb to ---- by init stringa|64_median 207 ns 203 ns 10 +replace bb to ---- by init stringa|64_stddev 4.03 ns 5.64 ns 10 +replace bb to ---- by init stringa|64_cv 1.96 % 2.75 % 10 +replace bb to ---- by init stringa|256_mean 475 ns 474 ns 10 +replace bb to ---- by init stringa|256_median 476 ns 474 ns 10 +replace bb to ---- by init stringa|256_stddev 5.16 ns 9.30 ns 10 +replace bb to ---- by init stringa|256_cv 1.09 % 1.96 % 10 +replace bb to ---- by init stringa|512_mean 1056 ns 1052 ns 10 +replace bb to ---- by init stringa|512_median 1058 ns 1050 ns 10 +replace bb to ---- by init stringa|512_stddev 16.3 ns 24.3 ns 10 +replace bb to ---- by init stringa|512_cv 1.54 % 2.31 % 10 +replace bb to ---- by init stringa|1024_mean 2152 ns 2148 ns 10 +replace bb to ---- by init stringa|1024_median 2141 ns 2148 ns 10 +replace bb to ---- by init stringa|1024_stddev 28.6 ns 39.9 ns 10 +replace bb to ---- by init stringa|1024_cv 1.33 % 1.86 % 10 +replace bb to ---- by init stringa|2048_mean 4321 ns 4322 ns 10 +replace bb to ---- by init stringa|2048_median 4309 ns 4332 ns 10 +replace bb to ---- by init stringa|2048_stddev 76.0 ns 53.5 ns 10 +replace bb to ---- by init stringa|2048_cv 1.76 % 1.24 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to -- in std::string|64_mean 209 ns 207 ns 10 -replace bb to -- in std::string|64_median 206 ns 207 ns 10 -replace bb to -- in std::string|64_stddev 6.33 ns 4.45 ns 10 -replace bb to -- in std::string|64_cv 3.04 % 2.15 % 10 -replace bb to -- in std::string|256_mean 553 ns 548 ns 10 -replace bb to -- in std::string|256_median 530 ns 530 ns 10 -replace bb to -- in std::string|256_stddev 61.0 ns 55.0 ns 10 -replace bb to -- in std::string|256_cv 11.03 % 10.04 % 10 -replace bb to -- in std::string|512_mean 975 ns 971 ns 10 -replace bb to -- in std::string|512_median 971 ns 963 ns 10 -replace bb to -- in std::string|512_stddev 24.3 ns 26.5 ns 10 -replace bb to -- in std::string|512_cv 2.50 % 2.73 % 10 -replace bb to -- in std::string|1024_mean 1826 ns 1807 ns 10 +replace bb to -- in std::string|64_mean 215 ns 214 ns 10 +replace bb to -- in std::string|64_median 211 ns 210 ns 10 +replace bb to -- in std::string|64_stddev 9.19 ns 7.21 ns 10 +replace bb to -- in std::string|64_cv 4.28 % 3.37 % 10 +replace bb to -- in std::string|256_mean 552 ns 552 ns 10 +replace bb to -- in std::string|256_median 542 ns 544 ns 10 +replace bb to -- in std::string|256_stddev 35.0 ns 34.9 ns 10 +replace bb to -- in std::string|256_cv 6.34 % 6.32 % 10 +replace bb to -- in std::string|512_mean 969 ns 969 ns 10 +replace bb to -- in std::string|512_median 964 ns 963 ns 10 +replace bb to -- in std::string|512_stddev 34.9 ns 34.2 ns 10 +replace bb to -- in std::string|512_cv 3.60 % 3.53 % 10 +replace bb to -- in std::string|1024_mean 1820 ns 1818 ns 10 replace bb to -- in std::string|1024_median 1812 ns 1803 ns 10 -replace bb to -- in std::string|1024_stddev 36.9 ns 38.2 ns 10 -replace bb to -- in std::string|1024_cv 2.02 % 2.11 % 10 -replace bb to -- in std::string|2048_mean 3547 ns 3489 ns 10 -replace bb to -- in std::string|2048_median 3532 ns 3449 ns 10 -replace bb to -- in std::string|2048_stddev 60.2 ns 86.6 ns 10 -replace bb to -- in std::string|2048_cv 1.70 % 2.48 % 10 -replace bb to -- in lstringa<8>|64_mean 189 ns 189 ns 10 -replace bb to -- in lstringa<8>|64_median 189 ns 188 ns 10 -replace bb to -- in lstringa<8>|64_stddev 1.39 ns 3.09 ns 10 -replace bb to -- in lstringa<8>|64_cv 0.73 % 1.64 % 10 -replace bb to -- in lstringa<8>|256_mean 470 ns 464 ns 10 -replace bb to -- in lstringa<8>|256_median 461 ns 460 ns 10 -replace bb to -- in lstringa<8>|256_stddev 18.8 ns 18.1 ns 10 -replace bb to -- in lstringa<8>|256_cv 4.00 % 3.90 % 10 -replace bb to -- in lstringa<8>|512_mean 807 ns 802 ns 10 -replace bb to -- in lstringa<8>|512_median 807 ns 802 ns 10 -replace bb to -- in lstringa<8>|512_stddev 11.3 ns 16.4 ns 10 -replace bb to -- in lstringa<8>|512_cv 1.40 % 2.05 % 10 -replace bb to -- in lstringa<8>|1024_mean 1515 ns 1489 ns 10 -replace bb to -- in lstringa<8>|1024_median 1490 ns 1500 ns 10 -replace bb to -- in lstringa<8>|1024_stddev 62.7 ns 43.7 ns 10 -replace bb to -- in lstringa<8>|1024_cv 4.14 % 2.93 % 10 -replace bb to -- in lstringa<8>|2048_mean 2967 ns 2929 ns 10 -replace bb to -- in lstringa<8>|2048_median 2937 ns 2883 ns 10 -replace bb to -- in lstringa<8>|2048_stddev 134 ns 128 ns 10 -replace bb to -- in lstringa<8>|2048_cv 4.53 % 4.37 % 10 -replace bb to -- by init stringa|64_mean 179 ns 176 ns 10 -replace bb to -- by init stringa|64_median 178 ns 176 ns 10 -replace bb to -- by init stringa|64_stddev 3.89 ns 3.36 ns 10 -replace bb to -- by init stringa|64_cv 2.18 % 1.91 % 10 -replace bb to -- by init stringa|256_mean 392 ns 385 ns 10 -replace bb to -- by init stringa|256_median 391 ns 385 ns 10 -replace bb to -- by init stringa|256_stddev 13.1 ns 8.82 ns 10 -replace bb to -- by init stringa|256_cv 3.34 % 2.29 % 10 -replace bb to -- by init stringa|512_mean 642 ns 633 ns 10 -replace bb to -- by init stringa|512_median 643 ns 635 ns 10 -replace bb to -- by init stringa|512_stddev 21.2 ns 13.5 ns 10 -replace bb to -- by init stringa|512_cv 3.30 % 2.13 % 10 -replace bb to -- by init stringa|1024_mean 1151 ns 1138 ns 10 -replace bb to -- by init stringa|1024_median 1144 ns 1144 ns 10 -replace bb to -- by init stringa|1024_stddev 26.9 ns 34.3 ns 10 -replace bb to -- by init stringa|1024_cv 2.34 % 3.01 % 10 -replace bb to -- by init stringa|2048_mean 2264 ns 2223 ns 10 -replace bb to -- by init stringa|2048_median 2276 ns 2197 ns 10 -replace bb to -- by init stringa|2048_stddev 52.5 ns 37.0 ns 10 -replace bb to -- by init stringa|2048_cv 2.32 % 1.66 % 10 +replace bb to -- in std::string|1024_stddev 38.8 ns 45.0 ns 10 +replace bb to -- in std::string|1024_cv 2.13 % 2.48 % 10 +replace bb to -- in std::string|2048_mean 3593 ns 3594 ns 10 +replace bb to -- in std::string|2048_median 3586 ns 3610 ns 10 +replace bb to -- in std::string|2048_stddev 58.5 ns 73.7 ns 10 +replace bb to -- in std::string|2048_cv 1.63 % 2.05 % 10 +replace bb to -- in lstringa<8>|64_mean 193 ns 194 ns 10 +replace bb to -- in lstringa<8>|64_median 189 ns 190 ns 10 +replace bb to -- in lstringa<8>|64_stddev 10.6 ns 10.7 ns 10 +replace bb to -- in lstringa<8>|64_cv 5.49 % 5.54 % 10 +replace bb to -- in lstringa<8>|256_mean 465 ns 464 ns 10 +replace bb to -- in lstringa<8>|256_median 450 ns 449 ns 10 +replace bb to -- in lstringa<8>|256_stddev 38.5 ns 39.7 ns 10 +replace bb to -- in lstringa<8>|256_cv 8.27 % 8.55 % 10 +replace bb to -- in lstringa<8>|512_mean 788 ns 786 ns 10 +replace bb to -- in lstringa<8>|512_median 789 ns 785 ns 10 +replace bb to -- in lstringa<8>|512_stddev 11.4 ns 9.90 ns 10 +replace bb to -- in lstringa<8>|512_cv 1.45 % 1.26 % 10 +replace bb to -- in lstringa<8>|1024_mean 1447 ns 1447 ns 10 +replace bb to -- in lstringa<8>|1024_median 1451 ns 1444 ns 10 +replace bb to -- in lstringa<8>|1024_stddev 20.8 ns 27.5 ns 10 +replace bb to -- in lstringa<8>|1024_cv 1.44 % 1.90 % 10 +replace bb to -- in lstringa<8>|2048_mean 2857 ns 2856 ns 10 +replace bb to -- in lstringa<8>|2048_median 2859 ns 2888 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 44.1 ns 44.4 ns 10 +replace bb to -- in lstringa<8>|2048_cv 1.54 % 1.55 % 10 +replace bb to -- by init stringa|64_mean 185 ns 184 ns 10 +replace bb to -- by init stringa|64_median 184 ns 184 ns 10 +replace bb to -- by init stringa|64_stddev 4.08 ns 3.13 ns 10 +replace bb to -- by init stringa|64_cv 2.21 % 1.70 % 10 +replace bb to -- by init stringa|256_mean 387 ns 387 ns 10 +replace bb to -- by init stringa|256_median 386 ns 389 ns 10 +replace bb to -- by init stringa|256_stddev 5.42 ns 7.69 ns 10 +replace bb to -- by init stringa|256_cv 1.40 % 1.99 % 10 +replace bb to -- by init stringa|512_mean 651 ns 652 ns 10 +replace bb to -- by init stringa|512_median 649 ns 649 ns 10 +replace bb to -- by init stringa|512_stddev 10.7 ns 11.5 ns 10 +replace bb to -- by init stringa|512_cv 1.65 % 1.76 % 10 +replace bb to -- by init stringa|1024_mean 1196 ns 1191 ns 10 +replace bb to -- by init stringa|1024_median 1185 ns 1196 ns 10 +replace bb to -- by init stringa|1024_stddev 37.6 ns 41.2 ns 10 +replace bb to -- by init stringa|1024_cv 3.15 % 3.46 % 10 +replace bb to -- by init stringa|2048_mean 2408 ns 2401 ns 10 +replace bb to -- by init stringa|2048_median 2306 ns 2312 ns 10 +replace bb to -- by init stringa|2048_stddev 218 ns 202 ns 10 +replace bb to -- by init stringa|2048_cv 9.04 % 8.41 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -hashStrMapA emplace & find stringa;_mean 4203983 ns 4208984 ns 10 -hashStrMapA emplace & find stringa;_median 4228262 ns 4199219 ns 10 -hashStrMapA emplace & find stringa;_stddev 226508 ns 222928 ns 10 -hashStrMapA emplace & find stringa;_cv 5.39 % 5.30 % 10 -std::unordered_map emplace & find std::string;_mean 5344121 ns 5281250 ns 10 -std::unordered_map emplace & find std::string;_median 5268283 ns 5312500 ns 10 -std::unordered_map emplace & find std::string;_stddev 149555 ns 123252 ns 10 -std::unordered_map emplace & find std::string;_cv 2.80 % 2.33 % 10 -hashStrMapA emplace & find ssa;_mean 4011248 ns 3928073 ns 10 -hashStrMapA emplace & find ssa;_median 4025866 ns 3928073 ns 10 -hashStrMapA emplace & find ssa;_stddev 92509 ns 130125 ns 10 -hashStrMapA emplace & find ssa;_cv 2.31 % 3.31 % 10 -std::unordered_map emplace & find std::string_view;_mean 6304499 ns 6236049 ns 10 -std::unordered_map emplace & find std::string_view;_median 6292092 ns 6208147 ns 10 -std::unordered_map emplace & find std::string_view;_stddev 163281 ns 114854 ns 10 -std::unordered_map emplace & find std::string_view;_cv 2.59 % 1.84 % 10 +hashStrMapA emplace & find stringa;_mean 4239554 ns 4220779 ns 10 +hashStrMapA emplace & find stringa;_median 4290226 ns 4312094 ns 10 +hashStrMapA emplace & find stringa;_stddev 183556 ns 173772 ns 10 +hashStrMapA emplace & find stringa;_cv 4.33 % 4.12 % 10 +std::unordered_map emplace & find std::string;_mean 5843669 ns 5843750 ns 10 +std::unordered_map emplace & find std::string;_median 5784634 ns 5781250 ns 10 +std::unordered_map emplace & find std::string;_stddev 244035 ns 277561 ns 10 +std::unordered_map emplace & find std::string;_cv 4.18 % 4.75 % 10 +hashStrMapA emplace & find ssa;_mean 3963034 ns 3936802 ns 10 +hashStrMapA emplace & find ssa;_median 3979594 ns 3971718 ns 10 +hashStrMapA emplace & find ssa;_stddev 101647 ns 96064 ns 10 +hashStrMapA emplace & find ssa;_cv 2.56 % 2.44 % 10 +std::unordered_map emplace & find std::string_view;_mean 6280080 ns 6277902 ns 10 +std::unordered_map emplace & find std::string_view;_median 6250248 ns 6277902 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 160517 ns 113909 ns 10 +std::unordered_map emplace & find std::string_view;_cv 2.56 % 1.81 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Build func full name std::string;_mean 1645 ns 1627 ns 10 -Build func full name std::string;_median 1625 ns 1611 ns 10 -Build func full name std::string;_stddev 59.7 ns 41.2 ns 10 -Build func full name std::string;_cv 3.63 % 2.54 % 10 -Build func full name std::string 1;_mean 1711 ns 1692 ns 10 -Build func full name std::string 1;_median 1687 ns 1669 ns 10 -Build func full name std::string 1;_stddev 73.4 ns 73.4 ns 10 -Build func full name std::string 1;_cv 4.29 % 4.34 % 10 -Build func full name std::stream;_mean 10110 ns 10128 ns 10 -Build func full name std::stream;_median 9848 ns 9835 ns 10 -Build func full name std::stream;_stddev 970 ns 932 ns 10 -Build func full name std::stream;_cv 9.59 % 9.20 % 10 -Build func full name stringa;_mean 924 ns 910 ns 10 -Build func full name stringa;_median 906 ns 902 ns 10 -Build func full name stringa;_stddev 43.8 ns 24.8 ns 10 -Build func full name stringa;_cv 4.74 % 2.73 % 10 -Build func full name stringa 1;_mean 1020 ns 1002 ns 10 -Build func full name stringa 1;_median 1020 ns 1004 ns 10 -Build func full name stringa 1;_stddev 29.0 ns 23.0 ns 10 -Build func full name stringa 1;_cv 2.85 % 2.30 % 10 +Build func full name std::string;_mean 1716 ns 1715 ns 10 +Build func full name std::string;_median 1681 ns 1688 ns 10 +Build func full name std::string;_stddev 108 ns 117 ns 10 +Build func full name std::string;_cv 6.31 % 6.84 % 10 +Build func full name std::string 1;_mean 1802 ns 1799 ns 10 +Build func full name std::string 1;_median 1758 ns 1765 ns 10 +Build func full name std::string 1;_stddev 124 ns 116 ns 10 +Build func full name std::string 1;_cv 6.88 % 6.47 % 10 +Build func full name std::stream;_mean 10011 ns 9950 ns 10 +Build func full name std::stream;_median 9867 ns 9888 ns 10 +Build func full name std::stream;_stddev 460 ns 445 ns 10 +Build func full name std::stream;_cv 4.60 % 4.47 % 10 +Build func full name stringa;_mean 1061 ns 1060 ns 10 +Build func full name stringa;_median 1053 ns 1050 ns 10 +Build func full name stringa;_stddev 35.1 ns 34.9 ns 10 +Build func full name stringa;_cv 3.31 % 3.29 % 10 +Build func full name stringa 1;_mean 1245 ns 1240 ns 10 +Build func full name stringa 1;_median 1243 ns 1224 ns 10 +Build func full name stringa 1;_stddev 25.8 ns 22.2 ns 10 +Build func full name stringa 1;_cv 2.07 % 1.79 % 10 diff --git a/bench/results/004-Xeon E5-2682 v4, WASM Firefox, Clang-21.txt b/bench/results/004-Xeon E5-2682 v4, WASM Firefox, Clang-21.txt index 9c135e2..5c44835 100644 --- a/bench/results/004-Xeon E5-2682 v4, WASM Firefox, Clang-21.txt +++ b/bench/results/004-Xeon E5-2682 v4, WASM Firefox, Clang-21.txt @@ -4,867 +4,879 @@ Firefox: 146.0.1.60 webasm Benchmark Time CPU Iterations -------------------------------------------------------------------------------------------------------------------------------------------------------- ----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and number by std to std::string_mean 925 ns 925 ns 10 -Concat std::string and number by std to std::string_median 933 ns 933 ns 10 -Concat std::string and number by std to std::string_stddev 46.4 ns 46.4 ns 10 -Concat std::string and number by std to std::string_cv 5.01 % 5.01 % 10 -Concat std::string and number by StrExpr to std::string_mean 415 ns 415 ns 10 -Concat std::string and number by StrExpr to std::string_median 418 ns 418 ns 10 -Concat std::string and number by StrExpr to std::string_stddev 14.1 ns 14.1 ns 10 -Concat std::string and number by StrExpr to std::string_cv 3.39 % 3.39 % 10 -Concat stringa and number by StrExpr to simstr::stringa_mean 211 ns 211 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_median 213 ns 213 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_stddev 11.8 ns 11.8 ns 10 -Concat stringa and number by StrExpr to simstr::stringa_cv 5.56 % 5.56 % 10 +Concat std::string and number by std to std::string_mean 862 ns 862 ns 10 +Concat std::string and number by std to std::string_median 868 ns 868 ns 10 +Concat std::string and number by std to std::string_stddev 26.5 ns 26.5 ns 10 +Concat std::string and number by std to std::string_cv 3.07 % 3.07 % 10 +Concat std::string and number by StrExpr to std::string_mean 384 ns 384 ns 10 +Concat std::string and number by StrExpr to std::string_median 382 ns 382 ns 10 +Concat std::string and number by StrExpr to std::string_stddev 19.5 ns 19.5 ns 10 +Concat std::string and number by StrExpr to std::string_cv 5.09 % 5.09 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 196 ns 196 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_median 195 ns 195 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_stddev 9.25 ns 9.25 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 4.71 % 4.71 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 193 ns 193 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 194 ns 194 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 3.88 ns 3.88 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 2.01 % 2.01 % 10 ----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string and hex number by std to std::string_mean 1446 ns 1446 ns 10 -Concat std::string and hex number by std to std::string_median 1429 ns 1429 ns 10 -Concat std::string and hex number by std to std::string_stddev 81.6 ns 81.6 ns 10 -Concat std::string and hex number by std to std::string_cv 5.64 % 5.64 % 10 -Concat std::string and hex number by StrExpr to std::string_mean 365 ns 365 ns 10 -Concat std::string and hex number by StrExpr to std::string_median 367 ns 367 ns 10 -Concat std::string and hex number by StrExpr to std::string_stddev 17.7 ns 17.7 ns 10 -Concat std::string and hex number by StrExpr to std::string_cv 4.87 % 4.87 % 10 -Concat stringa and hex number by StrExpr to simstr::stringa_mean 196 ns 196 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_median 188 ns 188 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_stddev 17.3 ns 17.3 ns 10 -Concat stringa and hex number by StrExpr to simstr::stringa_cv 8.84 % 8.84 % 10 +Concat std::string and hex number by std to std::string_mean 1594 ns 1594 ns 10 +Concat std::string and hex number by std to std::string_median 1589 ns 1589 ns 10 +Concat std::string and hex number by std to std::string_stddev 28.2 ns 28.2 ns 10 +Concat std::string and hex number by std to std::string_cv 1.77 % 1.77 % 10 +Concat std::string and hex number by StrExpr to std::string_mean 371 ns 371 ns 10 +Concat std::string and hex number by StrExpr to std::string_median 370 ns 370 ns 10 +Concat std::string and hex number by StrExpr to std::string_stddev 7.74 ns 7.72 ns 10 +Concat std::string and hex number by StrExpr to std::string_cv 2.08 % 2.08 % 10 +Concat stringa and hex number by StrExpr to simstr::stringa_mean 185 ns 185 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_median 182 ns 182 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_stddev 10.6 ns 10.6 ns 10 +Concat stringa and hex number by StrExpr to simstr::stringa_cv 5.71 % 5.71 % 10 +Concat stringa and hex number by e_concat to simstr::stringa_mean 197 ns 197 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_median 193 ns 193 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_stddev 15.5 ns 15.5 ns 10 +Concat stringa and hex number by e_concat to simstr::stringa_cv 7.84 % 7.84 % 10 +Concat stringa and hex number by e_subst to simstr::stringa_mean 402 ns 402 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_median 399 ns 399 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_stddev 13.2 ns 13.2 ns 10 +Concat stringa and hex number by e_subst to simstr::stringa_cv 3.28 % 3.28 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat std::string by std to std::string_mean 111 ns 111 ns 10 -Concat std::string by std to std::string_median 109 ns 109 ns 10 -Concat std::string by std to std::string_stddev 4.84 ns 4.84 ns 10 -Concat std::string by std to std::string_cv 4.37 % 4.37 % 10 -Concat std::string by StrExpr to std::string_mean 113 ns 113 ns 10 -Concat std::string by StrExpr to std::string_median 113 ns 113 ns 10 -Concat std::string by StrExpr to std::string_stddev 5.81 ns 5.80 ns 10 -Concat std::string by StrExpr to std::string_cv 5.13 % 5.13 % 10 -Concat stringa by StrExpr to stringa_mean 95.9 ns 95.9 ns 10 -Concat stringa by StrExpr to stringa_median 95.0 ns 95.0 ns 10 -Concat stringa by StrExpr to stringa_stddev 6.99 ns 6.99 ns 10 -Concat stringa by StrExpr to stringa_cv 7.29 % 7.29 % 10 +Concat std::string by std to std::string_mean 87.7 ns 87.7 ns 10 +Concat std::string by std to std::string_median 87.3 ns 87.3 ns 10 +Concat std::string by std to std::string_stddev 2.91 ns 2.91 ns 10 +Concat std::string by std to std::string_cv 3.32 % 3.32 % 10 +Concat std::string by StrExpr to std::string_mean 97.9 ns 97.9 ns 10 +Concat std::string by StrExpr to std::string_median 97.4 ns 97.4 ns 10 +Concat std::string by StrExpr to std::string_stddev 2.40 ns 2.40 ns 10 +Concat std::string by StrExpr to std::string_cv 2.45 % 2.45 % 10 +Concat stringa by StrExpr to stringa_mean 91.9 ns 91.9 ns 10 +Concat stringa by StrExpr to stringa_median 91.3 ns 91.3 ns 10 +Concat stringa by StrExpr to stringa_stddev 2.61 ns 2.61 ns 10 +Concat stringa by StrExpr to stringa_cv 2.84 % 2.84 % 10 ----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Find concat three std::string_mean 178 ns 178 ns 10 +Find concat three std::string_mean 173 ns 173 ns 10 Find concat three std::string_median 174 ns 174 ns 10 -Find concat three std::string_stddev 11.0 ns 11.0 ns 10 -Find concat three std::string_cv 6.19 % 6.19 % 10 -Find concat three strexpr_mean 106 ns 106 ns 10 -Find concat three strexpr_median 105 ns 105 ns 10 -Find concat three strexpr_stddev 3.62 ns 3.62 ns 10 -Find concat three strexpr_cv 3.42 % 3.43 % 10 -Find concat three simstr_mean 73.7 ns 73.7 ns 10 -Find concat three simstr_median 73.7 ns 73.7 ns 10 -Find concat three simstr_stddev 2.09 ns 2.08 ns 10 -Find concat three simstr_cv 2.83 % 2.83 % 10 +Find concat three std::string_stddev 5.37 ns 5.37 ns 10 +Find concat three std::string_cv 3.10 % 3.10 % 10 +Find concat three strexpr_mean 110 ns 110 ns 10 +Find concat three strexpr_median 108 ns 108 ns 10 +Find concat three strexpr_stddev 8.76 ns 8.76 ns 10 +Find concat three strexpr_cv 7.97 % 7.97 % 10 +Find concat three simstr_mean 76.2 ns 76.2 ns 10 +Find concat three simstr_median 74.2 ns 74.2 ns 10 +Find concat three simstr_stddev 5.68 ns 5.68 ns 10 +Find concat three simstr_cv 7.46 % 7.46 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -BuildTypeNameStr 0/0_mean 18.2 ns 18.2 ns 10 -BuildTypeNameStr 0/0_median 18.5 ns 18.5 ns 10 -BuildTypeNameStr 0/0_stddev 1.29 ns 1.29 ns 10 -BuildTypeNameStr 0/0_cv 7.06 % 7.06 % 10 -BuildTypeNameExp 0/0_mean 17.0 ns 17.0 ns 10 -BuildTypeNameExp 0/0_median 17.1 ns 17.1 ns 10 -BuildTypeNameExp 0/0_stddev 0.847 ns 0.847 ns 10 -BuildTypeNameExp 0/0_cv 4.98 % 4.98 % 10 -BuildTypeNameSim 0/0_mean 17.0 ns 17.0 ns 10 -BuildTypeNameSim 0/0_median 16.7 ns 16.7 ns 10 -BuildTypeNameSim 0/0_stddev 1.17 ns 1.17 ns 10 -BuildTypeNameSim 0/0_cv 6.90 % 6.90 % 10 -BuildTypeNameStr 10/10_mean 275 ns 275 ns 10 -BuildTypeNameStr 10/10_median 276 ns 276 ns 10 -BuildTypeNameStr 10/10_stddev 13.0 ns 13.0 ns 10 -BuildTypeNameStr 10/10_cv 4.72 % 4.72 % 10 -BuildTypeNameExp 10/10_mean 99.6 ns 99.6 ns 10 -BuildTypeNameExp 10/10_median 101 ns 101 ns 10 -BuildTypeNameExp 10/10_stddev 6.85 ns 6.85 ns 10 -BuildTypeNameExp 10/10_cv 6.88 % 6.88 % 10 -BuildTypeNameSim 10/10_mean 71.2 ns 71.2 ns 10 -BuildTypeNameSim 10/10_median 69.2 ns 69.2 ns 10 -BuildTypeNameSim 10/10_stddev 6.72 ns 6.72 ns 10 -BuildTypeNameSim 10/10_cv 9.44 % 9.44 % 10 +BuildTypeNameStr 0/0_mean 15.2 ns 15.2 ns 10 +BuildTypeNameStr 0/0_median 15.2 ns 15.2 ns 10 +BuildTypeNameStr 0/0_stddev 0.301 ns 0.301 ns 10 +BuildTypeNameStr 0/0_cv 1.97 % 1.97 % 10 +BuildTypeNameExp 0/0_mean 15.8 ns 15.8 ns 10 +BuildTypeNameExp 0/0_median 15.7 ns 15.7 ns 10 +BuildTypeNameExp 0/0_stddev 0.531 ns 0.531 ns 10 +BuildTypeNameExp 0/0_cv 3.35 % 3.35 % 10 +BuildTypeNameSim 0/0_mean 15.6 ns 15.6 ns 10 +BuildTypeNameSim 0/0_median 15.5 ns 15.5 ns 10 +BuildTypeNameSim 0/0_stddev 0.458 ns 0.458 ns 10 +BuildTypeNameSim 0/0_cv 2.94 % 2.94 % 10 +BuildTypeNameStr 10/10_mean 253 ns 253 ns 10 +BuildTypeNameStr 10/10_median 251 ns 251 ns 10 +BuildTypeNameStr 10/10_stddev 16.1 ns 16.1 ns 10 +BuildTypeNameStr 10/10_cv 6.36 % 6.36 % 10 +BuildTypeNameExp 10/10_mean 92.7 ns 92.7 ns 10 +BuildTypeNameExp 10/10_median 89.0 ns 89.0 ns 10 +BuildTypeNameExp 10/10_stddev 7.74 ns 7.74 ns 10 +BuildTypeNameExp 10/10_cv 8.35 % 8.35 % 10 +BuildTypeNameSim 10/10_mean 65.5 ns 65.5 ns 10 +BuildTypeNameSim 10/10_median 62.8 ns 62.8 ns 10 +BuildTypeNameSim 10/10_stddev 5.31 ns 5.31 ns 10 +BuildTypeNameSim 10/10_cv 8.11 % 8.11 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat with replace str_mean 451 ns 451 ns 10 -Concat with replace str_median 450 ns 450 ns 10 -Concat with replace str_stddev 36.0 ns 36.0 ns 10 -Concat with replace str_cv 7.98 % 7.98 % 10 -Concat with replace exp_mean 248 ns 248 ns 10 -Concat with replace exp_median 246 ns 246 ns 10 -Concat with replace exp_stddev 15.1 ns 15.1 ns 10 -Concat with replace exp_cv 6.07 % 6.07 % 10 +Concat with replace str_mean 411 ns 411 ns 10 +Concat with replace str_median 406 ns 406 ns 10 +Concat with replace str_stddev 11.3 ns 11.3 ns 10 +Concat with replace str_cv 2.74 % 2.74 % 10 +Concat with replace exp_mean 243 ns 243 ns 10 +Concat with replace exp_median 240 ns 240 ns 10 +Concat with replace exp_stddev 7.23 ns 7.23 ns 10 +Concat with replace exp_cv 2.98 % 2.98 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e;_mean 2.18 ns 2.18 ns 10 -std::string e;_median 2.18 ns 2.18 ns 10 -std::string e;_stddev 0.025 ns 0.025 ns 10 -std::string e;_cv 1.16 % 1.16 % 10 -std::string_view e;_mean 0.993 ns 0.993 ns 10 -std::string_view e;_median 0.994 ns 0.994 ns 10 -std::string_view e;_stddev 0.012 ns 0.012 ns 10 -std::string_view e;_cv 1.18 % 1.18 % 10 -ssa e;_mean 0.952 ns 0.952 ns 10 -ssa e;_median 0.952 ns 0.952 ns 10 -ssa e;_stddev 0.008 ns 0.008 ns 10 -ssa e;_cv 0.85 % 0.85 % 10 -stringa e;_mean 2.19 ns 2.19 ns 10 -stringa e;_median 2.18 ns 2.18 ns 10 -stringa e;_stddev 0.048 ns 0.048 ns 10 -stringa e;_cv 2.19 % 2.19 % 10 -lstringa<20> e;_mean 2.26 ns 2.26 ns 10 -lstringa<20> e;_median 2.27 ns 2.27 ns 10 -lstringa<20> e;_stddev 0.039 ns 0.039 ns 10 -lstringa<20> e;_cv 1.74 % 1.74 % 10 -lstringa<40> e;_mean 2.60 ns 2.60 ns 10 -lstringa<40> e;_median 2.60 ns 2.60 ns 10 -lstringa<40> e;_stddev 0.032 ns 0.032 ns 10 -lstringa<40> e;_cv 1.22 % 1.22 % 10 +std::string e;_mean 2.14 ns 2.14 ns 10 +std::string e;_median 2.13 ns 2.13 ns 10 +std::string e;_stddev 0.033 ns 0.033 ns 10 +std::string e;_cv 1.54 % 1.54 % 10 +std::string_view e;_mean 0.972 ns 0.972 ns 10 +std::string_view e;_median 0.965 ns 0.965 ns 10 +std::string_view e;_stddev 0.021 ns 0.021 ns 10 +std::string_view e;_cv 2.16 % 2.16 % 10 +ssa e;_mean 0.939 ns 0.939 ns 10 +ssa e;_median 0.936 ns 0.936 ns 10 +ssa e;_stddev 0.014 ns 0.014 ns 10 +ssa e;_cv 1.51 % 1.51 % 10 +stringa e;_mean 2.15 ns 2.15 ns 10 +stringa e;_median 2.14 ns 2.14 ns 10 +stringa e;_stddev 0.040 ns 0.040 ns 10 +stringa e;_cv 1.84 % 1.84 % 10 +lstringa<20> e;_mean 2.19 ns 2.19 ns 10 +lstringa<20> e;_median 2.17 ns 2.17 ns 10 +lstringa<20> e;_stddev 0.042 ns 0.042 ns 10 +lstringa<20> e;_cv 1.91 % 1.91 % 10 +lstringa<40> e;_mean 2.58 ns 2.58 ns 10 +lstringa<40> e;_median 2.55 ns 2.55 ns 10 +lstringa<40> e;_stddev 0.085 ns 0.085 ns 10 +lstringa<40> e;_cv 3.28 % 3.28 % 10 ----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "Test text";_mean 2.37 ns 2.37 ns 10 -std::string e = "Test text";_median 2.37 ns 2.37 ns 10 -std::string e = "Test text";_stddev 0.060 ns 0.060 ns 10 -std::string e = "Test text";_cv 2.54 % 2.54 % 10 -std::string_view e = "Test text";_mean 1.29 ns 1.29 ns 10 -std::string_view e = "Test text";_median 1.27 ns 1.27 ns 10 -std::string_view e = "Test text";_stddev 0.057 ns 0.057 ns 10 -std::string_view e = "Test text";_cv 4.41 % 4.41 % 10 -ssa e = "Test text";_mean 1.01 ns 1.01 ns 10 -ssa e = "Test text";_median 1.00 ns 1.00 ns 10 -ssa e = "Test text";_stddev 0.034 ns 0.034 ns 10 -ssa e = "Test text";_cv 3.32 % 3.32 % 10 -stringa e = "Test text";_mean 2.63 ns 2.63 ns 10 -stringa e = "Test text";_median 2.63 ns 2.63 ns 10 -stringa e = "Test text";_stddev 0.059 ns 0.059 ns 10 -stringa e = "Test text";_cv 2.24 % 2.24 % 10 -lstringa<20> e = "Test text";_mean 2.77 ns 2.77 ns 10 -lstringa<20> e = "Test text";_median 2.77 ns 2.77 ns 10 -lstringa<20> e = "Test text";_stddev 0.092 ns 0.092 ns 10 -lstringa<20> e = "Test text";_cv 3.31 % 3.31 % 10 -lstringa<40> e = "Test text";_mean 2.78 ns 2.78 ns 10 -lstringa<40> e = "Test text";_median 2.78 ns 2.78 ns 10 -lstringa<40> e = "Test text";_stddev 0.038 ns 0.038 ns 10 -lstringa<40> e = "Test text";_cv 1.37 % 1.37 % 10 +std::string e = "Test text";_mean 2.33 ns 2.33 ns 10 +std::string e = "Test text";_median 2.28 ns 2.28 ns 10 +std::string e = "Test text";_stddev 0.103 ns 0.103 ns 10 +std::string e = "Test text";_cv 4.44 % 4.44 % 10 +std::string_view e = "Test text";_mean 1.24 ns 1.24 ns 10 +std::string_view e = "Test text";_median 1.24 ns 1.24 ns 10 +std::string_view e = "Test text";_stddev 0.033 ns 0.033 ns 10 +std::string_view e = "Test text";_cv 2.66 % 2.66 % 10 +ssa e = "Test text";_mean 0.968 ns 0.968 ns 10 +ssa e = "Test text";_median 0.970 ns 0.970 ns 10 +ssa e = "Test text";_stddev 0.013 ns 0.013 ns 10 +ssa e = "Test text";_cv 1.32 % 1.35 % 10 +stringa e = "Test text";_mean 2.16 ns 2.16 ns 10 +stringa e = "Test text";_median 2.16 ns 2.16 ns 10 +stringa e = "Test text";_stddev 0.021 ns 0.021 ns 10 +stringa e = "Test text";_cv 0.99 % 0.99 % 10 +lstringa<20> e = "Test text";_mean 2.65 ns 2.65 ns 10 +lstringa<20> e = "Test text";_median 2.63 ns 2.63 ns 10 +lstringa<20> e = "Test text";_stddev 0.073 ns 0.073 ns 10 +lstringa<20> e = "Test text";_cv 2.74 % 2.74 % 10 +lstringa<40> e = "Test text";_mean 2.61 ns 2.61 ns 10 +lstringa<40> e = "Test text";_median 2.59 ns 2.59 ns 10 +lstringa<40> e = "Test text";_stddev 0.059 ns 0.059 ns 10 +lstringa<40> e = "Test text";_cv 2.25 % 2.25 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890";_mean 16.5 ns 16.5 ns 10 -std::string e = "123456789012345678901234567890";_median 16.6 ns 16.6 ns 10 -std::string e = "123456789012345678901234567890";_stddev 0.412 ns 0.412 ns 10 -std::string e = "123456789012345678901234567890";_cv 2.50 % 2.50 % 10 -std::string_view e = "123456789012345678901234567890";_mean 1.26 ns 1.26 ns 10 -std::string_view e = "123456789012345678901234567890";_median 1.27 ns 1.27 ns 10 -std::string_view e = "123456789012345678901234567890";_stddev 0.034 ns 0.034 ns 10 -std::string_view e = "123456789012345678901234567890";_cv 2.66 % 2.66 % 10 -ssa e = "123456789012345678901234567890";_mean 1.01 ns 1.01 ns 10 -ssa e = "123456789012345678901234567890";_median 1.01 ns 1.01 ns 10 -ssa e = "123456789012345678901234567890";_stddev 0.030 ns 0.030 ns 10 -ssa e = "123456789012345678901234567890";_cv 3.03 % 3.03 % 10 -stringa e = "123456789012345678901234567890";_mean 2.67 ns 2.67 ns 10 -stringa e = "123456789012345678901234567890";_median 2.66 ns 2.66 ns 10 -stringa e = "123456789012345678901234567890";_stddev 0.058 ns 0.058 ns 10 -stringa e = "123456789012345678901234567890";_cv 2.15 % 2.15 % 10 -lstringa<20> e = "123456789012345678901234567890";_mean 16.9 ns 16.9 ns 10 -lstringa<20> e = "123456789012345678901234567890";_median 17.0 ns 17.0 ns 10 -lstringa<20> e = "123456789012345678901234567890";_stddev 0.396 ns 0.395 ns 10 -lstringa<20> e = "123456789012345678901234567890";_cv 2.34 % 2.33 % 10 -lstringa<40> e = "123456789012345678901234567890";_mean 3.01 ns 3.01 ns 10 -lstringa<40> e = "123456789012345678901234567890";_median 3.02 ns 3.02 ns 10 -lstringa<40> e = "123456789012345678901234567890";_stddev 0.056 ns 0.056 ns 10 -lstringa<40> e = "123456789012345678901234567890";_cv 1.85 % 1.85 % 10 +std::string e = "123456789012345678901234567890";_mean 16.0 ns 16.0 ns 10 +std::string e = "123456789012345678901234567890";_median 15.9 ns 15.9 ns 10 +std::string e = "123456789012345678901234567890";_stddev 0.497 ns 0.497 ns 10 +std::string e = "123456789012345678901234567890";_cv 3.10 % 3.10 % 10 +std::string_view e = "123456789012345678901234567890";_mean 1.28 ns 1.28 ns 10 +std::string_view e = "123456789012345678901234567890";_median 1.28 ns 1.28 ns 10 +std::string_view e = "123456789012345678901234567890";_stddev 0.039 ns 0.039 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 3.02 % 3.02 % 10 +ssa e = "123456789012345678901234567890";_mean 0.971 ns 0.971 ns 10 +ssa e = "123456789012345678901234567890";_median 0.971 ns 0.971 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.020 ns 0.020 ns 10 +ssa e = "123456789012345678901234567890";_cv 2.03 % 2.03 % 10 +stringa e = "123456789012345678901234567890";_mean 2.18 ns 2.18 ns 10 +stringa e = "123456789012345678901234567890";_median 2.16 ns 2.16 ns 10 +stringa e = "123456789012345678901234567890";_stddev 0.043 ns 0.042 ns 10 +stringa e = "123456789012345678901234567890";_cv 1.97 % 1.92 % 10 +lstringa<20> e = "123456789012345678901234567890";_mean 16.5 ns 16.5 ns 10 +lstringa<20> e = "123456789012345678901234567890";_median 16.4 ns 16.4 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 0.319 ns 0.319 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 1.94 % 1.94 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 3.00 ns 3.00 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 2.97 ns 2.97 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.111 ns 0.111 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 3.70 % 3.70 % 10 ----- Create copy of Str with 9 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "Test text"; auto c{e};_mean 2.27 ns 2.27 ns 10 -std::string e = "Test text"; auto c{e};_median 2.25 ns 2.25 ns 10 -std::string e = "Test text"; auto c{e};_stddev 0.050 ns 0.050 ns 10 -std::string e = "Test text"; auto c{e};_cv 2.19 % 2.19 % 10 +std::string e = "Test text"; auto c{e};_mean 2.21 ns 2.21 ns 10 +std::string e = "Test text"; auto c{e};_median 2.21 ns 2.21 ns 10 +std::string e = "Test text"; auto c{e};_stddev 0.053 ns 0.053 ns 10 +std::string e = "Test text"; auto c{e};_cv 2.39 % 2.39 % 10 std::string_view e = "Test text"; auto c{e};_mean 1.26 ns 1.26 ns 10 -std::string_view e = "Test text"; auto c{e};_median 1.25 ns 1.25 ns 10 -std::string_view e = "Test text"; auto c{e};_stddev 0.035 ns 0.035 ns 10 -std::string_view e = "Test text"; auto c{e};_cv 2.77 % 2.77 % 10 -ssa e = "Test text"; auto c{e};_mean 1.27 ns 1.27 ns 10 -ssa e = "Test text"; auto c{e};_median 1.26 ns 1.26 ns 10 -ssa e = "Test text"; auto c{e};_stddev 0.042 ns 0.042 ns 10 -ssa e = "Test text"; auto c{e};_cv 3.31 % 3.31 % 10 -stringa e = "Test text"; auto c{e};_mean 2.64 ns 2.64 ns 10 -stringa e = "Test text"; auto c{e};_median 2.64 ns 2.64 ns 10 -stringa e = "Test text"; auto c{e};_stddev 0.056 ns 0.056 ns 10 -stringa e = "Test text"; auto c{e};_cv 2.12 % 2.12 % 10 -lstringa<20> e = "Test text"; auto c{e};_mean 14.1 ns 14.1 ns 10 -lstringa<20> e = "Test text"; auto c{e};_median 14.0 ns 14.0 ns 10 -lstringa<20> e = "Test text"; auto c{e};_stddev 0.634 ns 0.634 ns 10 -lstringa<20> e = "Test text"; auto c{e};_cv 4.49 % 4.49 % 10 -lstringa<40> e = "Test text"; auto c{e};_mean 14.2 ns 14.2 ns 10 +std::string_view e = "Test text"; auto c{e};_median 1.24 ns 1.24 ns 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.067 ns 0.067 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 5.29 % 5.29 % 10 +ssa e = "Test text"; auto c{e};_mean 1.24 ns 1.24 ns 10 +ssa e = "Test text"; auto c{e};_median 1.24 ns 1.24 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.031 ns 0.031 ns 10 +ssa e = "Test text"; auto c{e};_cv 2.46 % 2.46 % 10 +stringa e = "Test text"; auto c{e};_mean 2.55 ns 2.55 ns 10 +stringa e = "Test text"; auto c{e};_median 2.53 ns 2.53 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.047 ns 0.047 ns 10 +stringa e = "Test text"; auto c{e};_cv 1.84 % 1.84 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 15.2 ns 15.2 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 15.1 ns 15.1 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.760 ns 0.760 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 4.99 % 4.99 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 14.5 ns 14.5 ns 10 lstringa<40> e = "Test text"; auto c{e};_median 14.3 ns 14.3 ns 10 -lstringa<40> e = "Test text"; auto c{e};_stddev 0.671 ns 0.671 ns 10 -lstringa<40> e = "Test text"; auto c{e};_cv 4.73 % 4.73 % 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 1.50 ns 1.50 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 10.34 % 10.34 % 10 ----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string e = "123456789012345678901234567890"; auto c{e};_mean 34.3 ns 34.3 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_median 34.4 ns 34.4 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_stddev 2.04 ns 2.04 ns 10 -std::string e = "123456789012345678901234567890"; auto c{e};_cv 5.95 % 5.95 % 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 1.25 ns 1.25 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_median 1.24 ns 1.24 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.021 ns 0.021 ns 10 -std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.68 % 1.68 % 10 -ssa e = "123456789012345678901234567890"; auto c{e};_mean 1.01 ns 1.01 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_median 1.01 ns 1.01 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.018 ns 0.018 ns 10 -ssa e = "123456789012345678901234567890"; auto c{e};_cv 1.78 % 1.78 % 10 -stringa e = "123456789012345678901234567890"; auto c{e};_mean 2.66 ns 2.66 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_median 2.66 ns 2.66 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.041 ns 0.041 ns 10 -stringa e = "123456789012345678901234567890"; auto c{e};_cv 1.53 % 1.53 % 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 17.2 ns 17.2 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 17.3 ns 17.3 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.371 ns 0.371 ns 10 -lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 2.15 % 2.15 % 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 13.9 ns 13.9 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 13.7 ns 13.7 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 1.21 ns 1.21 ns 10 -lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 8.68 % 8.68 % 10 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 33.3 ns 33.3 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 33.1 ns 33.1 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 1.32 ns 1.32 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 3.96 % 3.96 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 1.27 ns 1.27 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 1.25 ns 1.25 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.062 ns 0.062 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 4.85 % 4.85 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.981 ns 0.981 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 0.976 ns 0.976 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.022 ns 0.022 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 2.21 % 2.21 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 2.19 ns 2.19 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 2.17 ns 2.17 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.053 ns 0.053 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 2.41 % 2.41 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 15.7 ns 15.7 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 15.6 ns 15.6 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.562 ns 0.562 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 3.57 % 3.57 % 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 14.2 ns 14.2 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 14.1 ns 14.1 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.971 ns 0.971 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 6.85 % 6.85 % 10 ----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find;_mean 54.3 ns 54.3 ns 10 -std::string::find;_median 54.4 ns 54.4 ns 10 -std::string::find;_stddev 1.00 ns 1.00 ns 10 -std::string::find;_cv 1.85 % 1.85 % 10 -std::string_view::find;_mean 53.4 ns 53.4 ns 10 -std::string_view::find;_median 53.3 ns 53.3 ns 10 -std::string_view::find;_stddev 0.764 ns 0.764 ns 10 -std::string_view::find;_cv 1.43 % 1.43 % 10 -ssa::find;_mean 52.7 ns 52.7 ns 10 -ssa::find;_median 52.9 ns 52.9 ns 10 -ssa::find;_stddev 0.944 ns 0.944 ns 10 -ssa::find;_cv 1.79 % 1.79 % 10 -stringa::find;_mean 53.8 ns 53.8 ns 10 -stringa::find;_median 53.7 ns 53.7 ns 10 -stringa::find;_stddev 1.24 ns 1.24 ns 10 -stringa::find;_cv 2.30 % 2.30 % 10 -lstringa<20>::find;_mean 52.5 ns 52.5 ns 10 -lstringa<20>::find;_median 52.3 ns 52.3 ns 10 -lstringa<20>::find;_stddev 1.02 ns 1.02 ns 10 -lstringa<20>::find;_cv 1.94 % 1.94 % 10 -lstringa<40>::find;_mean 52.6 ns 52.6 ns 10 -lstringa<40>::find;_median 52.8 ns 52.8 ns 10 -lstringa<40>::find;_stddev 0.944 ns 0.944 ns 10 -lstringa<40>::find;_cv 1.79 % 1.79 % 10 +std::string::find;_mean 54.4 ns 54.4 ns 10 +std::string::find;_median 53.5 ns 53.5 ns 10 +std::string::find;_stddev 3.42 ns 3.42 ns 10 +std::string::find;_cv 6.30 % 6.30 % 10 +std::string_view::find;_mean 56.9 ns 56.9 ns 10 +std::string_view::find;_median 56.5 ns 56.5 ns 10 +std::string_view::find;_stddev 1.38 ns 1.38 ns 10 +std::string_view::find;_cv 2.42 % 2.42 % 10 +ssa::find;_mean 56.5 ns 56.5 ns 10 +ssa::find;_median 55.9 ns 55.9 ns 10 +ssa::find;_stddev 1.78 ns 1.78 ns 10 +ssa::find;_cv 3.15 % 3.15 % 10 +stringa::find;_mean 60.3 ns 60.3 ns 10 +stringa::find;_median 60.4 ns 60.4 ns 10 +stringa::find;_stddev 2.93 ns 2.93 ns 10 +stringa::find;_cv 4.85 % 4.85 % 10 +lstringa<20>::find;_mean 52.4 ns 52.4 ns 10 +lstringa<20>::find;_median 52.4 ns 52.4 ns 10 +lstringa<20>::find;_stddev 1.79 ns 1.79 ns 10 +lstringa<20>::find;_cv 3.42 % 3.42 % 10 +lstringa<40>::find;_mean 51.0 ns 51.0 ns 10 +lstringa<40>::find;_median 50.5 ns 50.5 ns 10 +lstringa<40>::find;_stddev 1.15 ns 1.15 ns 10 +lstringa<40>::find;_cv 2.26 % 2.26 % 10 ------- Copy not literal Str with N symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string copy{str_with_len_N};/15_mean 35.9 ns 35.9 ns 10 -std::string copy{str_with_len_N};/15_median 35.7 ns 35.7 ns 10 -std::string copy{str_with_len_N};/15_stddev 2.19 ns 2.19 ns 10 -std::string copy{str_with_len_N};/15_cv 6.10 % 6.10 % 10 -std::string copy{str_with_len_N};/16_mean 35.4 ns 35.4 ns 10 -std::string copy{str_with_len_N};/16_median 35.0 ns 35.0 ns 10 -std::string copy{str_with_len_N};/16_stddev 2.38 ns 2.38 ns 10 -std::string copy{str_with_len_N};/16_cv 6.72 % 6.72 % 10 -std::string copy{str_with_len_N};/23_mean 36.3 ns 36.3 ns 10 -std::string copy{str_with_len_N};/23_median 36.1 ns 36.1 ns 10 -std::string copy{str_with_len_N};/23_stddev 2.00 ns 2.00 ns 10 -std::string copy{str_with_len_N};/23_cv 5.51 % 5.51 % 10 -std::string copy{str_with_len_N};/24_mean 35.6 ns 35.6 ns 10 -std::string copy{str_with_len_N};/24_median 36.2 ns 36.2 ns 10 -std::string copy{str_with_len_N};/24_stddev 2.33 ns 2.33 ns 10 -std::string copy{str_with_len_N};/24_cv 6.53 % 6.53 % 10 -std::string copy{str_with_len_N};/32_mean 39.4 ns 39.4 ns 10 -std::string copy{str_with_len_N};/32_median 38.5 ns 38.5 ns 10 -std::string copy{str_with_len_N};/32_stddev 3.37 ns 3.37 ns 10 -std::string copy{str_with_len_N};/32_cv 8.55 % 8.55 % 10 -std::string copy{str_with_len_N};/64_mean 39.6 ns 39.6 ns 10 -std::string copy{str_with_len_N};/64_median 38.5 ns 38.5 ns 10 -std::string copy{str_with_len_N};/64_stddev 3.59 ns 3.59 ns 10 -std::string copy{str_with_len_N};/64_cv 9.06 % 9.06 % 10 -std::string copy{str_with_len_N};/128_mean 41.3 ns 41.3 ns 10 -std::string copy{str_with_len_N};/128_median 41.4 ns 41.4 ns 10 -std::string copy{str_with_len_N};/128_stddev 2.50 ns 2.50 ns 10 -std::string copy{str_with_len_N};/128_cv 6.05 % 6.05 % 10 -std::string copy{str_with_len_N};/256_mean 58.6 ns 58.6 ns 10 -std::string copy{str_with_len_N};/256_median 64.1 ns 64.1 ns 10 -std::string copy{str_with_len_N};/256_stddev 13.0 ns 13.0 ns 10 -std::string copy{str_with_len_N};/256_cv 22.24 % 22.24 % 10 -std::string copy{str_with_len_N};/512_mean 53.9 ns 53.9 ns 10 -std::string copy{str_with_len_N};/512_median 53.5 ns 53.5 ns 10 -std::string copy{str_with_len_N};/512_stddev 11.7 ns 11.7 ns 10 -std::string copy{str_with_len_N};/512_cv 21.69 % 21.69 % 10 -std::string copy{str_with_len_N};/1024_mean 53.1 ns 53.1 ns 10 -std::string copy{str_with_len_N};/1024_median 51.3 ns 51.3 ns 10 -std::string copy{str_with_len_N};/1024_stddev 7.15 ns 7.15 ns 10 -std::string copy{str_with_len_N};/1024_cv 13.46 % 13.46 % 10 -std::string copy{str_with_len_N};/2048_mean 77.9 ns 77.9 ns 10 -std::string copy{str_with_len_N};/2048_median 77.8 ns 77.8 ns 10 -std::string copy{str_with_len_N};/2048_stddev 3.38 ns 3.38 ns 10 -std::string copy{str_with_len_N};/2048_cv 4.34 % 4.34 % 10 -std::string copy{str_with_len_N};/4096_mean 130 ns 130 ns 10 -std::string copy{str_with_len_N};/4096_median 132 ns 132 ns 10 -std::string copy{str_with_len_N};/4096_stddev 7.79 ns 7.79 ns 10 -std::string copy{str_with_len_N};/4096_cv 5.99 % 5.99 % 10 -stringa copy{str_with_len_N};/15_mean 2.64 ns 2.64 ns 10 -stringa copy{str_with_len_N};/15_median 2.63 ns 2.63 ns 10 -stringa copy{str_with_len_N};/15_stddev 0.060 ns 0.060 ns 10 -stringa copy{str_with_len_N};/15_cv 2.26 % 2.27 % 10 -stringa copy{str_with_len_N};/16_mean 4.98 ns 4.98 ns 10 -stringa copy{str_with_len_N};/16_median 5.00 ns 5.00 ns 10 -stringa copy{str_with_len_N};/16_stddev 0.113 ns 0.113 ns 10 -stringa copy{str_with_len_N};/16_cv 2.27 % 2.27 % 10 -stringa copy{str_with_len_N};/23_mean 5.00 ns 5.00 ns 10 -stringa copy{str_with_len_N};/23_median 4.95 ns 4.95 ns 10 -stringa copy{str_with_len_N};/23_stddev 0.234 ns 0.234 ns 10 -stringa copy{str_with_len_N};/23_cv 4.68 % 4.68 % 10 -stringa copy{str_with_len_N};/24_mean 5.02 ns 5.02 ns 10 -stringa copy{str_with_len_N};/24_median 4.98 ns 4.98 ns 10 -stringa copy{str_with_len_N};/24_stddev 0.122 ns 0.122 ns 10 -stringa copy{str_with_len_N};/24_cv 2.43 % 2.43 % 10 -stringa copy{str_with_len_N};/32_mean 4.98 ns 4.98 ns 10 -stringa copy{str_with_len_N};/32_median 4.92 ns 4.92 ns 10 -stringa copy{str_with_len_N};/32_stddev 0.146 ns 0.146 ns 10 -stringa copy{str_with_len_N};/32_cv 2.93 % 2.93 % 10 -stringa copy{str_with_len_N};/64_mean 4.94 ns 4.94 ns 10 -stringa copy{str_with_len_N};/64_median 4.97 ns 4.97 ns 10 -stringa copy{str_with_len_N};/64_stddev 0.094 ns 0.092 ns 10 -stringa copy{str_with_len_N};/64_cv 1.90 % 1.87 % 10 -stringa copy{str_with_len_N};/128_mean 4.99 ns 4.99 ns 10 -stringa copy{str_with_len_N};/128_median 4.98 ns 4.98 ns 10 -stringa copy{str_with_len_N};/128_stddev 0.139 ns 0.139 ns 10 -stringa copy{str_with_len_N};/128_cv 2.79 % 2.79 % 10 -stringa copy{str_with_len_N};/256_mean 4.90 ns 4.90 ns 10 -stringa copy{str_with_len_N};/256_median 4.90 ns 4.90 ns 10 -stringa copy{str_with_len_N};/256_stddev 0.092 ns 0.092 ns 10 -stringa copy{str_with_len_N};/256_cv 1.89 % 1.89 % 10 -stringa copy{str_with_len_N};/512_mean 5.01 ns 5.01 ns 10 -stringa copy{str_with_len_N};/512_median 5.00 ns 5.00 ns 10 -stringa copy{str_with_len_N};/512_stddev 0.119 ns 0.119 ns 10 -stringa copy{str_with_len_N};/512_cv 2.37 % 2.37 % 10 -stringa copy{str_with_len_N};/1024_mean 5.07 ns 5.07 ns 10 -stringa copy{str_with_len_N};/1024_median 5.06 ns 5.06 ns 10 -stringa copy{str_with_len_N};/1024_stddev 0.146 ns 0.146 ns 10 -stringa copy{str_with_len_N};/1024_cv 2.87 % 2.87 % 10 -stringa copy{str_with_len_N};/2048_mean 5.01 ns 5.01 ns 10 -stringa copy{str_with_len_N};/2048_median 5.00 ns 5.00 ns 10 -stringa copy{str_with_len_N};/2048_stddev 0.095 ns 0.095 ns 10 -stringa copy{str_with_len_N};/2048_cv 1.91 % 1.91 % 10 -stringa copy{str_with_len_N};/4096_mean 4.92 ns 4.92 ns 10 -stringa copy{str_with_len_N};/4096_median 4.89 ns 4.89 ns 10 -stringa copy{str_with_len_N};/4096_stddev 0.137 ns 0.137 ns 10 -stringa copy{str_with_len_N};/4096_cv 2.80 % 2.80 % 10 +std::string copy{str_with_len_N};/15_mean 34.4 ns 34.4 ns 10 +std::string copy{str_with_len_N};/15_median 34.6 ns 34.6 ns 10 +std::string copy{str_with_len_N};/15_stddev 0.999 ns 0.999 ns 10 +std::string copy{str_with_len_N};/15_cv 2.90 % 2.90 % 10 +std::string copy{str_with_len_N};/16_mean 34.6 ns 34.6 ns 10 +std::string copy{str_with_len_N};/16_median 34.4 ns 34.4 ns 10 +std::string copy{str_with_len_N};/16_stddev 1.60 ns 1.60 ns 10 +std::string copy{str_with_len_N};/16_cv 4.62 % 4.62 % 10 +std::string copy{str_with_len_N};/23_mean 35.2 ns 35.2 ns 10 +std::string copy{str_with_len_N};/23_median 34.7 ns 34.7 ns 10 +std::string copy{str_with_len_N};/23_stddev 1.39 ns 1.39 ns 10 +std::string copy{str_with_len_N};/23_cv 3.94 % 3.94 % 10 +std::string copy{str_with_len_N};/24_mean 34.8 ns 34.8 ns 10 +std::string copy{str_with_len_N};/24_median 34.4 ns 34.4 ns 10 +std::string copy{str_with_len_N};/24_stddev 1.29 ns 1.29 ns 10 +std::string copy{str_with_len_N};/24_cv 3.71 % 3.71 % 10 +std::string copy{str_with_len_N};/32_mean 41.2 ns 41.2 ns 10 +std::string copy{str_with_len_N};/32_median 41.2 ns 41.2 ns 10 +std::string copy{str_with_len_N};/32_stddev 2.51 ns 2.51 ns 10 +std::string copy{str_with_len_N};/32_cv 6.07 % 6.07 % 10 +std::string copy{str_with_len_N};/64_mean 37.9 ns 37.9 ns 10 +std::string copy{str_with_len_N};/64_median 37.8 ns 37.8 ns 10 +std::string copy{str_with_len_N};/64_stddev 1.26 ns 1.26 ns 10 +std::string copy{str_with_len_N};/64_cv 3.32 % 3.32 % 10 +std::string copy{str_with_len_N};/128_mean 39.8 ns 39.8 ns 10 +std::string copy{str_with_len_N};/128_median 39.7 ns 39.7 ns 10 +std::string copy{str_with_len_N};/128_stddev 1.49 ns 1.49 ns 10 +std::string copy{str_with_len_N};/128_cv 3.75 % 3.75 % 10 +std::string copy{str_with_len_N};/256_mean 59.6 ns 59.6 ns 10 +std::string copy{str_with_len_N};/256_median 65.9 ns 65.9 ns 10 +std::string copy{str_with_len_N};/256_stddev 13.9 ns 13.9 ns 10 +std::string copy{str_with_len_N};/256_cv 23.29 % 23.29 % 10 +std::string copy{str_with_len_N};/512_mean 57.3 ns 57.3 ns 10 +std::string copy{str_with_len_N};/512_median 57.0 ns 57.0 ns 10 +std::string copy{str_with_len_N};/512_stddev 13.0 ns 13.0 ns 10 +std::string copy{str_with_len_N};/512_cv 22.77 % 22.77 % 10 +std::string copy{str_with_len_N};/1024_mean 59.5 ns 59.5 ns 10 +std::string copy{str_with_len_N};/1024_median 60.6 ns 60.6 ns 10 +std::string copy{str_with_len_N};/1024_stddev 6.40 ns 6.40 ns 10 +std::string copy{str_with_len_N};/1024_cv 10.74 % 10.74 % 10 +std::string copy{str_with_len_N};/2048_mean 82.2 ns 82.2 ns 10 +std::string copy{str_with_len_N};/2048_median 79.7 ns 79.7 ns 10 +std::string copy{str_with_len_N};/2048_stddev 11.1 ns 11.1 ns 10 +std::string copy{str_with_len_N};/2048_cv 13.46 % 13.46 % 10 +std::string copy{str_with_len_N};/4096_mean 111 ns 111 ns 10 +std::string copy{str_with_len_N};/4096_median 116 ns 116 ns 10 +std::string copy{str_with_len_N};/4096_stddev 14.4 ns 14.4 ns 10 +std::string copy{str_with_len_N};/4096_cv 12.95 % 12.95 % 10 +stringa copy{str_with_len_N};/15_mean 2.54 ns 2.54 ns 10 +stringa copy{str_with_len_N};/15_median 2.52 ns 2.52 ns 10 +stringa copy{str_with_len_N};/15_stddev 0.042 ns 0.042 ns 10 +stringa copy{str_with_len_N};/15_cv 1.66 % 1.66 % 10 +stringa copy{str_with_len_N};/16_mean 4.81 ns 4.81 ns 10 +stringa copy{str_with_len_N};/16_median 4.77 ns 4.77 ns 10 +stringa copy{str_with_len_N};/16_stddev 0.102 ns 0.102 ns 10 +stringa copy{str_with_len_N};/16_cv 2.13 % 2.13 % 10 +stringa copy{str_with_len_N};/23_mean 4.84 ns 4.84 ns 10 +stringa copy{str_with_len_N};/23_median 4.80 ns 4.80 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.102 ns 0.102 ns 10 +stringa copy{str_with_len_N};/23_cv 2.11 % 2.11 % 10 +stringa copy{str_with_len_N};/24_mean 4.89 ns 4.89 ns 10 +stringa copy{str_with_len_N};/24_median 4.87 ns 4.87 ns 10 +stringa copy{str_with_len_N};/24_stddev 0.117 ns 0.117 ns 10 +stringa copy{str_with_len_N};/24_cv 2.39 % 2.39 % 10 +stringa copy{str_with_len_N};/32_mean 4.85 ns 4.85 ns 10 +stringa copy{str_with_len_N};/32_median 4.85 ns 4.85 ns 10 +stringa copy{str_with_len_N};/32_stddev 0.095 ns 0.095 ns 10 +stringa copy{str_with_len_N};/32_cv 1.95 % 1.95 % 10 +stringa copy{str_with_len_N};/64_mean 4.83 ns 4.83 ns 10 +stringa copy{str_with_len_N};/64_median 4.81 ns 4.81 ns 10 +stringa copy{str_with_len_N};/64_stddev 0.049 ns 0.049 ns 10 +stringa copy{str_with_len_N};/64_cv 1.01 % 1.01 % 10 +stringa copy{str_with_len_N};/128_mean 4.93 ns 4.93 ns 10 +stringa copy{str_with_len_N};/128_median 4.87 ns 4.87 ns 10 +stringa copy{str_with_len_N};/128_stddev 0.219 ns 0.219 ns 10 +stringa copy{str_with_len_N};/128_cv 4.43 % 4.43 % 10 +stringa copy{str_with_len_N};/256_mean 4.97 ns 4.97 ns 10 +stringa copy{str_with_len_N};/256_median 4.92 ns 4.92 ns 10 +stringa copy{str_with_len_N};/256_stddev 0.172 ns 0.172 ns 10 +stringa copy{str_with_len_N};/256_cv 3.46 % 3.46 % 10 +stringa copy{str_with_len_N};/512_mean 5.06 ns 5.06 ns 10 +stringa copy{str_with_len_N};/512_median 4.98 ns 4.98 ns 10 +stringa copy{str_with_len_N};/512_stddev 0.242 ns 0.242 ns 10 +stringa copy{str_with_len_N};/512_cv 4.78 % 4.78 % 10 +stringa copy{str_with_len_N};/1024_mean 4.81 ns 4.81 ns 10 +stringa copy{str_with_len_N};/1024_median 4.75 ns 4.75 ns 10 +stringa copy{str_with_len_N};/1024_stddev 0.134 ns 0.134 ns 10 +stringa copy{str_with_len_N};/1024_cv 2.79 % 2.79 % 10 +stringa copy{str_with_len_N};/2048_mean 4.86 ns 4.86 ns 10 +stringa copy{str_with_len_N};/2048_median 4.77 ns 4.77 ns 10 +stringa copy{str_with_len_N};/2048_stddev 0.167 ns 0.167 ns 10 +stringa copy{str_with_len_N};/2048_cv 3.44 % 3.44 % 10 +stringa copy{str_with_len_N};/4096_mean 4.76 ns 4.76 ns 10 +stringa copy{str_with_len_N};/4096_median 4.72 ns 4.72 ns 10 +stringa copy{str_with_len_N};/4096_stddev 0.085 ns 0.085 ns 10 +stringa copy{str_with_len_N};/4096_cv 1.79 % 1.79 % 10 lstringa<16> copy{str_with_len_N};/15_mean 14.1 ns 14.1 ns 10 -lstringa<16> copy{str_with_len_N};/15_median 14.2 ns 14.2 ns 10 -lstringa<16> copy{str_with_len_N};/15_stddev 0.738 ns 0.738 ns 10 -lstringa<16> copy{str_with_len_N};/15_cv 5.24 % 5.24 % 10 -lstringa<16> copy{str_with_len_N};/16_mean 14.6 ns 14.6 ns 10 -lstringa<16> copy{str_with_len_N};/16_median 14.7 ns 14.7 ns 10 -lstringa<16> copy{str_with_len_N};/16_stddev 0.858 ns 0.858 ns 10 -lstringa<16> copy{str_with_len_N};/16_cv 5.88 % 5.88 % 10 -lstringa<16> copy{str_with_len_N};/23_mean 31.6 ns 31.6 ns 10 -lstringa<16> copy{str_with_len_N};/23_median 31.4 ns 31.4 ns 10 -lstringa<16> copy{str_with_len_N};/23_stddev 1.59 ns 1.59 ns 10 -lstringa<16> copy{str_with_len_N};/23_cv 5.04 % 5.04 % 10 -lstringa<16> copy{str_with_len_N};/24_mean 30.9 ns 30.9 ns 10 -lstringa<16> copy{str_with_len_N};/24_median 31.3 ns 31.3 ns 10 -lstringa<16> copy{str_with_len_N};/24_stddev 0.895 ns 0.895 ns 10 -lstringa<16> copy{str_with_len_N};/24_cv 2.89 % 2.89 % 10 -lstringa<16> copy{str_with_len_N};/32_mean 35.1 ns 35.1 ns 10 -lstringa<16> copy{str_with_len_N};/32_median 35.5 ns 35.5 ns 10 -lstringa<16> copy{str_with_len_N};/32_stddev 1.74 ns 1.74 ns 10 -lstringa<16> copy{str_with_len_N};/32_cv 4.96 % 4.96 % 10 -lstringa<16> copy{str_with_len_N};/64_mean 34.9 ns 34.9 ns 10 -lstringa<16> copy{str_with_len_N};/64_median 34.9 ns 34.9 ns 10 -lstringa<16> copy{str_with_len_N};/64_stddev 1.80 ns 1.80 ns 10 -lstringa<16> copy{str_with_len_N};/64_cv 5.16 % 5.16 % 10 -lstringa<16> copy{str_with_len_N};/128_mean 35.5 ns 35.5 ns 10 -lstringa<16> copy{str_with_len_N};/128_median 34.9 ns 34.9 ns 10 -lstringa<16> copy{str_with_len_N};/128_stddev 2.20 ns 2.20 ns 10 -lstringa<16> copy{str_with_len_N};/128_cv 6.19 % 6.19 % 10 -lstringa<16> copy{str_with_len_N};/256_mean 54.3 ns 54.3 ns 10 -lstringa<16> copy{str_with_len_N};/256_median 60.1 ns 60.1 ns 10 -lstringa<16> copy{str_with_len_N};/256_stddev 13.2 ns 13.2 ns 10 -lstringa<16> copy{str_with_len_N};/256_cv 24.32 % 24.32 % 10 -lstringa<16> copy{str_with_len_N};/512_mean 48.8 ns 48.8 ns 10 -lstringa<16> copy{str_with_len_N};/512_median 48.2 ns 48.2 ns 10 -lstringa<16> copy{str_with_len_N};/512_stddev 12.5 ns 12.5 ns 10 -lstringa<16> copy{str_with_len_N};/512_cv 25.63 % 25.63 % 10 -lstringa<16> copy{str_with_len_N};/1024_mean 48.6 ns 48.6 ns 10 -lstringa<16> copy{str_with_len_N};/1024_median 44.8 ns 44.8 ns 10 -lstringa<16> copy{str_with_len_N};/1024_stddev 9.55 ns 9.55 ns 10 -lstringa<16> copy{str_with_len_N};/1024_cv 19.65 % 19.65 % 10 -lstringa<16> copy{str_with_len_N};/2048_mean 71.5 ns 71.5 ns 10 -lstringa<16> copy{str_with_len_N};/2048_median 72.0 ns 72.0 ns 10 -lstringa<16> copy{str_with_len_N};/2048_stddev 2.92 ns 2.92 ns 10 -lstringa<16> copy{str_with_len_N};/2048_cv 4.09 % 4.09 % 10 -lstringa<16> copy{str_with_len_N};/4096_mean 118 ns 118 ns 10 -lstringa<16> copy{str_with_len_N};/4096_median 119 ns 119 ns 10 -lstringa<16> copy{str_with_len_N};/4096_stddev 4.85 ns 4.85 ns 10 -lstringa<16> copy{str_with_len_N};/4096_cv 4.12 % 4.12 % 10 -lstringa<512> copy{str_with_len_N};/15_mean 15.2 ns 15.2 ns 10 -lstringa<512> copy{str_with_len_N};/15_median 15.5 ns 15.5 ns 10 -lstringa<512> copy{str_with_len_N};/15_stddev 0.706 ns 0.706 ns 10 -lstringa<512> copy{str_with_len_N};/15_cv 4.63 % 4.63 % 10 -lstringa<512> copy{str_with_len_N};/16_mean 15.3 ns 15.3 ns 10 -lstringa<512> copy{str_with_len_N};/16_median 15.2 ns 15.2 ns 10 -lstringa<512> copy{str_with_len_N};/16_stddev 1.27 ns 1.27 ns 10 -lstringa<512> copy{str_with_len_N};/16_cv 8.27 % 8.27 % 10 -lstringa<512> copy{str_with_len_N};/23_mean 14.6 ns 14.6 ns 10 -lstringa<512> copy{str_with_len_N};/23_median 14.5 ns 14.5 ns 10 -lstringa<512> copy{str_with_len_N};/23_stddev 1.07 ns 1.07 ns 10 -lstringa<512> copy{str_with_len_N};/23_cv 7.30 % 7.30 % 10 -lstringa<512> copy{str_with_len_N};/24_mean 15.2 ns 15.2 ns 10 -lstringa<512> copy{str_with_len_N};/24_median 15.0 ns 15.0 ns 10 -lstringa<512> copy{str_with_len_N};/24_stddev 0.835 ns 0.835 ns 10 -lstringa<512> copy{str_with_len_N};/24_cv 5.50 % 5.50 % 10 -lstringa<512> copy{str_with_len_N};/32_mean 17.8 ns 17.8 ns 10 -lstringa<512> copy{str_with_len_N};/32_median 18.1 ns 18.1 ns 10 -lstringa<512> copy{str_with_len_N};/32_stddev 0.989 ns 0.989 ns 10 -lstringa<512> copy{str_with_len_N};/32_cv 5.55 % 5.55 % 10 -lstringa<512> copy{str_with_len_N};/64_mean 18.3 ns 18.3 ns 10 -lstringa<512> copy{str_with_len_N};/64_median 18.5 ns 18.5 ns 10 -lstringa<512> copy{str_with_len_N};/64_stddev 0.865 ns 0.864 ns 10 -lstringa<512> copy{str_with_len_N};/64_cv 4.72 % 4.72 % 10 -lstringa<512> copy{str_with_len_N};/128_mean 18.8 ns 18.8 ns 10 -lstringa<512> copy{str_with_len_N};/128_median 18.3 ns 18.3 ns 10 -lstringa<512> copy{str_with_len_N};/128_stddev 1.22 ns 1.22 ns 10 -lstringa<512> copy{str_with_len_N};/128_cv 6.45 % 6.45 % 10 -lstringa<512> copy{str_with_len_N};/256_mean 20.1 ns 20.1 ns 10 -lstringa<512> copy{str_with_len_N};/256_median 19.9 ns 19.9 ns 10 -lstringa<512> copy{str_with_len_N};/256_stddev 1.24 ns 1.24 ns 10 -lstringa<512> copy{str_with_len_N};/256_cv 6.16 % 6.16 % 10 -lstringa<512> copy{str_with_len_N};/512_mean 26.9 ns 26.9 ns 10 -lstringa<512> copy{str_with_len_N};/512_median 26.8 ns 26.8 ns 10 -lstringa<512> copy{str_with_len_N};/512_stddev 0.929 ns 0.929 ns 10 -lstringa<512> copy{str_with_len_N};/512_cv 3.45 % 3.45 % 10 -lstringa<512> copy{str_with_len_N};/1024_mean 48.0 ns 48.0 ns 10 -lstringa<512> copy{str_with_len_N};/1024_median 44.6 ns 44.6 ns 10 -lstringa<512> copy{str_with_len_N};/1024_stddev 7.96 ns 7.96 ns 10 -lstringa<512> copy{str_with_len_N};/1024_cv 16.59 % 16.59 % 10 -lstringa<512> copy{str_with_len_N};/2048_mean 71.3 ns 71.3 ns 10 -lstringa<512> copy{str_with_len_N};/2048_median 71.0 ns 71.0 ns 10 -lstringa<512> copy{str_with_len_N};/2048_stddev 3.84 ns 3.84 ns 10 -lstringa<512> copy{str_with_len_N};/2048_cv 5.38 % 5.38 % 10 -lstringa<512> copy{str_with_len_N};/4096_mean 120 ns 120 ns 10 -lstringa<512> copy{str_with_len_N};/4096_median 122 ns 122 ns 10 -lstringa<512> copy{str_with_len_N};/4096_stddev 5.12 ns 5.12 ns 10 -lstringa<512> copy{str_with_len_N};/4096_cv 4.27 % 4.27 % 10 +lstringa<16> copy{str_with_len_N};/15_median 14.0 ns 14.0 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.730 ns 0.730 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 5.17 % 5.17 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 13.9 ns 13.9 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 13.9 ns 13.9 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 1.03 ns 1.03 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 7.46 % 7.44 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 28.7 ns 28.7 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 28.4 ns 28.4 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 0.790 ns 0.787 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 2.75 % 2.74 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 29.4 ns 29.4 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 29.5 ns 29.5 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 1.20 ns 1.20 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 4.09 % 4.09 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 31.9 ns 31.9 ns 10 +lstringa<16> copy{str_with_len_N};/32_median 31.5 ns 31.5 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 1.91 ns 1.91 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 6.00 % 6.00 % 10 +lstringa<16> copy{str_with_len_N};/64_mean 32.0 ns 32.0 ns 10 +lstringa<16> copy{str_with_len_N};/64_median 32.0 ns 32.0 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 0.922 ns 0.922 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 2.88 % 2.88 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 32.6 ns 32.6 ns 10 +lstringa<16> copy{str_with_len_N};/128_median 32.5 ns 32.5 ns 10 +lstringa<16> copy{str_with_len_N};/128_stddev 1.68 ns 1.68 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 5.15 % 5.15 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 55.0 ns 55.0 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 62.8 ns 62.8 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 14.9 ns 14.9 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 27.01 % 27.01 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 51.9 ns 51.9 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 53.9 ns 53.9 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 13.3 ns 13.3 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 25.56 % 25.56 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 54.2 ns 54.2 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 56.7 ns 56.7 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 6.95 ns 6.95 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 12.83 % 12.83 % 10 +lstringa<16> copy{str_with_len_N};/2048_mean 79.1 ns 79.1 ns 10 +lstringa<16> copy{str_with_len_N};/2048_median 78.0 ns 78.0 ns 10 +lstringa<16> copy{str_with_len_N};/2048_stddev 9.81 ns 9.81 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 12.40 % 12.40 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 106 ns 106 ns 10 +lstringa<16> copy{str_with_len_N};/4096_median 109 ns 109 ns 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 13.9 ns 13.9 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 13.10 % 13.10 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 15.4 ns 15.4 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 15.3 ns 15.3 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 0.790 ns 0.790 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 5.14 % 5.14 % 10 +lstringa<512> copy{str_with_len_N};/16_mean 15.5 ns 15.5 ns 10 +lstringa<512> copy{str_with_len_N};/16_median 15.6 ns 15.6 ns 10 +lstringa<512> copy{str_with_len_N};/16_stddev 0.812 ns 0.812 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 5.24 % 5.24 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 15.2 ns 15.2 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 15.2 ns 15.2 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 0.914 ns 0.914 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 6.01 % 6.01 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 15.0 ns 15.0 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 14.7 ns 14.7 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.730 ns 0.730 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 4.86 % 4.86 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 18.3 ns 18.3 ns 10 +lstringa<512> copy{str_with_len_N};/32_median 18.3 ns 18.3 ns 10 +lstringa<512> copy{str_with_len_N};/32_stddev 0.844 ns 0.844 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 4.62 % 4.62 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 17.7 ns 17.7 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 17.8 ns 17.8 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.642 ns 0.642 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 3.63 % 3.63 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 18.1 ns 18.1 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 17.9 ns 17.9 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 1.19 ns 1.19 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 6.57 % 6.57 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 20.7 ns 20.7 ns 10 +lstringa<512> copy{str_with_len_N};/256_median 20.5 ns 20.5 ns 10 +lstringa<512> copy{str_with_len_N};/256_stddev 1.27 ns 1.27 ns 10 +lstringa<512> copy{str_with_len_N};/256_cv 6.13 % 6.13 % 10 +lstringa<512> copy{str_with_len_N};/512_mean 21.8 ns 21.8 ns 10 +lstringa<512> copy{str_with_len_N};/512_median 21.5 ns 21.5 ns 10 +lstringa<512> copy{str_with_len_N};/512_stddev 1.27 ns 1.27 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 5.82 % 5.82 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 52.9 ns 52.9 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 54.8 ns 54.8 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 5.68 ns 5.68 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 10.73 % 10.73 % 10 +lstringa<512> copy{str_with_len_N};/2048_mean 76.5 ns 76.5 ns 10 +lstringa<512> copy{str_with_len_N};/2048_median 75.0 ns 75.0 ns 10 +lstringa<512> copy{str_with_len_N};/2048_stddev 8.56 ns 8.56 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 11.19 % 11.19 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 105 ns 105 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 111 ns 111 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 13.7 ns 13.7 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 13.00 % 13.00 % 10 ----- Convert to int '1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 69.5 ns 69.5 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 69.6 ns 69.6 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 2.36 ns 2.36 ns 10 -std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 3.39 % 3.39 % 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 28.4 ns 28.4 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 28.0 ns 28.0 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.994 ns 0.994 ns 10 -std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 3.51 % 3.51 % 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 73.0 ns 73.0 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 72.8 ns 72.8 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 3.50 ns 3.50 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 4.80 % 4.80 % 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 27.8 ns 27.8 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 27.5 ns 27.5 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.926 ns 0.926 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 3.33 % 3.33 % 10 stringa s = "123456789"; int res = s.to_int_mean 19.0 ns 19.0 ns 10 -stringa s = "123456789"; int res = s.to_int_median 19.0 ns 19.0 ns 10 -stringa s = "123456789"; int res = s.to_int_stddev 0.550 ns 0.550 ns 10 -stringa s = "123456789"; int res = s.to_int_cv 2.89 % 2.89 % 10 -ssa s = "123456789"; int res = s.to_int_mean 17.3 ns 17.3 ns 10 -ssa s = "123456789"; int res = s.to_int_median 17.2 ns 17.2 ns 10 -ssa s = "123456789"; int res = s.to_int_stddev 0.520 ns 0.520 ns 10 -ssa s = "123456789"; int res = s.to_int_cv 3.00 % 3.00 % 10 -lstringa<20> s = "123456789"; int res = s.to_int_mean 17.4 ns 17.4 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_median 17.4 ns 17.4 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.349 ns 0.349 ns 10 -lstringa<20> s = "123456789"; int res = s.to_int_cv 2.00 % 2.00 % 10 +stringa s = "123456789"; int res = s.to_int_median 18.9 ns 18.9 ns 10 +stringa s = "123456789"; int res = s.to_int_stddev 0.420 ns 0.420 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 2.21 % 2.21 % 10 +ssa s = "123456789"; int res = s.to_int_mean 17.0 ns 17.0 ns 10 +ssa s = "123456789"; int res = s.to_int_median 16.8 ns 16.8 ns 10 +ssa s = "123456789"; int res = s.to_int_stddev 0.388 ns 0.388 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 2.29 % 2.29 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 17.0 ns 17.0 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 16.9 ns 16.9 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.302 ns 0.302 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 1.78 % 1.78 % 10 ----- Convert to unsigned 'abcDef' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 54.6 ns 54.6 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 54.5 ns 54.5 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 1.46 ns 1.46 ns 10 -std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 2.67 % 2.67 % 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 30.6 ns 30.6 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 30.6 ns 30.6 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.742 ns 0.742 ns 10 -std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 2.43 % 2.43 % 10 -stringa s = "abcDef"; int res = s.to_int_mean 17.9 ns 17.9 ns 10 -stringa s = "abcDef"; int res = s.to_int_median 18.0 ns 18.0 ns 10 -stringa s = "abcDef"; int res = s.to_int_stddev 0.451 ns 0.451 ns 10 -stringa s = "abcDef"; int res = s.to_int_cv 2.51 % 2.51 % 10 -ssa s = "abcDef"; int res = s.to_int_mean 16.8 ns 16.8 ns 10 -ssa s = "abcDef"; int res = s.to_int_median 16.8 ns 16.8 ns 10 -ssa s = "abcDef"; int res = s.to_int_stddev 0.368 ns 0.368 ns 10 -ssa s = "abcDef"; int res = s.to_int_cv 2.19 % 2.19 % 10 -lstringa<20> s = "abcDef"; int res = s.to_int_mean 16.8 ns 16.8 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_median 16.8 ns 16.8 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.494 ns 0.494 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_cv 2.94 % 2.94 % 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 56.5 ns 56.5 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 56.4 ns 56.4 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 2.24 ns 2.24 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 3.97 % 3.97 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 28.3 ns 28.3 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 27.9 ns 27.9 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 1.03 ns 1.03 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 3.64 % 3.64 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 17.3 ns 17.3 ns 10 +stringa s = "abcDef"; int res = s.to_int_median 17.1 ns 17.1 ns 10 +stringa s = "abcDef"; int res = s.to_int_stddev 0.548 ns 0.548 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 3.16 % 3.16 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 16.2 ns 16.2 ns 10 +ssa s = "abcDef"; int res = s.to_int_median 16.2 ns 16.2 ns 10 +ssa s = "abcDef"; int res = s.to_int_stddev 0.141 ns 0.141 ns 10 +ssa s = "abcDef"; int res = s.to_int_cv 0.87 % 0.87 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_mean 16.7 ns 16.7 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_median 16.2 ns 16.2 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 1.00 ns 1.00 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 5.99 % 5.99 % 10 ----- Convert to int ' 1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 74.6 ns 74.6 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 74.7 ns 74.7 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 1.85 ns 1.85 ns 10 -std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 2.48 % 2.48 % 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 25.4 ns 25.4 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 25.3 ns 25.3 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.670 ns 0.670 ns 10 -stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 2.64 % 2.64 % 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 23.4 ns 23.4 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 23.3 ns 23.3 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.974 ns 0.974 ns 10 -ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 4.15 % 4.15 % 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 77.7 ns 77.7 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 78.0 ns 78.0 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 2.26 ns 2.26 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 2.91 % 2.91 % 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 24.6 ns 24.6 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 24.7 ns 24.7 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.605 ns 0.605 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 2.46 % 2.46 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 23.6 ns 23.6 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 23.2 ns 23.2 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 1.29 ns 1.29 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 5.46 % 5.46 % 10 ----- Convert to double '1234.567e10' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 200 ns 200 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 200 ns 200 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 3.85 ns 3.85 ns 10 -std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 1.93 % 1.93 % 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 111 ns 111 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 112 ns 112 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 2.42 ns 2.42 ns 10 -std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 2.17 % 2.17 % 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 196 ns 196 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 194 ns 194 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 4.37 ns 4.37 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 2.23 % 2.23 % 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 106 ns 106 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 106 ns 106 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 1.03 ns 1.03 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 0.97 % 0.97 % 10 ssa s = "1234.567e10"; double res = *s.to_double()_mean 43.1 ns 43.1 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_median 43.3 ns 43.3 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.975 ns 0.975 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_cv 2.26 % 2.26 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_median 42.5 ns 42.5 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_stddev 1.58 ns 1.58 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 3.67 % 3.67 % 10 -- Append const literal of 16 bytes 64 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << "abbaabbaabbaabba";_mean 4383 ns 4383 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_median 4377 ns 4377 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 152 ns 152 ns 10 -std::stringstream str; ... str << "abbaabbaabbaabba";_cv 3.46 % 3.46 % 10 -std::string str; ... str += "abbaabbaabbaabba";_mean 587 ns 587 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_median 587 ns 587 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_stddev 25.0 ns 25.0 ns 10 -std::string str; ... str += "abbaabbaabbaabba";_cv 4.25 % 4.25 % 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 704 ns 704 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_median 696 ns 696 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 32.7 ns 32.7 ns 10 -lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 4.65 % 4.65 % 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 569 ns 569 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_median 564 ns 564 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 27.9 ns 27.9 ns 10 -lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 4.90 % 4.90 % 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 516 ns 516 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_median 521 ns 521 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 20.9 ns 20.9 ns 10 -lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 4.05 % 4.05 % 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 403 ns 403 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 400 ns 400 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 11.2 ns 11.2 ns 10 -lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 2.77 % 2.77 % 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 4557 ns 4557 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 4565 ns 4565 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 189 ns 189 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 4.14 % 4.14 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 598 ns 598 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 591 ns 591 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 37.5 ns 37.5 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 6.28 % 6.28 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 705 ns 705 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 707 ns 707 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 19.5 ns 19.5 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 2.77 % 2.77 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 564 ns 564 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 560 ns 560 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 30.2 ns 30.2 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 5.35 % 5.35 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 472 ns 472 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 474 ns 474 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 16.7 ns 16.7 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 3.53 % 3.53 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 396 ns 396 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 391 ns 391 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 9.22 ns 9.22 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 2.33 % 2.33 % 10 -- Append string of 16 bytes and const literal of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 4402 ns 4402 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 4457 ns 4457 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 133 ns 133 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 3.02 % 3.02 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1940 ns 1940 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1930 ns 1930 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 97.4 ns 97.4 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 5.02 % 5.02 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 834 ns 834 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 817 ns 817 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 59.4 ns 59.4 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 7.12 % 7.12 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 698 ns 698 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 718 ns 718 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 46.3 ns 46.3 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 6.62 % 6.62 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 592 ns 592 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 594 ns 594 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 26.6 ns 26.6 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 4.49 % 4.49 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 546 ns 546 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 541 ns 541 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 30.4 ns 30.4 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.56 % 5.56 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 4433 ns 4433 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 4365 ns 4365 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 180 ns 180 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 4.06 % 4.06 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1926 ns 1926 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1941 ns 1941 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 79.8 ns 79.8 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 4.14 % 4.14 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 804 ns 804 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 799 ns 799 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 61.3 ns 61.3 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 7.63 % 7.63 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 726 ns 726 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 713 ns 713 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 52.6 ns 52.6 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 7.24 % 7.24 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 597 ns 597 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 587 ns 587 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 33.1 ns 33.1 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.55 % 5.55 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 523 ns 523 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 513 ns 513 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 25.4 ns 25.4 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 4.86 % 4.86 % 10 -- Append string of 16 bytes and const literal of 16 bytes 2048 times, 65536 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 227747 ns 227748 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 227780 ns 227780 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 7201 ns 7203 ns 10 -std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 3.16 % 3.16 % 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 107590 ns 107591 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 109011 ns 109011 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 4697 ns 4696 ns 10 -std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.37 % 4.37 % 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 39528 ns 39528 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 38718 ns 38718 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2165 ns 2165 ns 10 -lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.48 % 5.48 % 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 38289 ns 38289 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 38168 ns 38168 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 3141 ns 3141 ns 10 -lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 8.20 % 8.20 % 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 39586 ns 39586 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 39363 ns 39363 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2349 ns 2349 ns 10 -lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.93 % 5.93 % 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 38827 ns 38828 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 38977 ns 38977 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2031 ns 2031 ns 10 -lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.23 % 5.23 % 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 218832 ns 218832 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 217525 ns 217525 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 4729 ns 4729 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 2.16 % 2.16 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 104650 ns 104650 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 104179 ns 104179 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 4753 ns 4753 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.54 % 4.54 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 39563 ns 39563 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 38899 ns 38899 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1909 ns 1909 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.83 % 4.83 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 38589 ns 38589 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 38157 ns 38157 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1799 ns 1799 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.66 % 4.66 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 37622 ns 37622 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 37332 ns 37332 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1772 ns 1772 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.71 % 4.71 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 38473 ns 38473 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 38927 ns 38927 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1938 ns 1938 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.04 % 5.04 % 10 -- Append 2 string of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; ... str << str_var1 << str_var2;_mean 4714 ns 4714 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_median 4708 ns 4708 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_stddev 244 ns 244 ns 10 -std::stringstream str; ... str << str_var1 << str_var2;_cv 5.18 % 5.18 % 10 -std::string str; ... str += str_var1 + str_var2;_mean 2421 ns 2421 ns 10 -std::string str; ... str += str_var1 + str_var2;_median 2435 ns 2435 ns 10 -std::string str; ... str += str_var1 + str_var2;_stddev 152 ns 152 ns 10 -std::string str; ... str += str_var1 + str_var2;_cv 6.28 % 6.28 % 10 -lstringa<16> str; ... str += str_var1 + str_var2;_mean 1187 ns 1187 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_median 1189 ns 1189 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_stddev 55.5 ns 55.5 ns 10 -lstringa<16> str; ... str += str_var1 + str_var2;_cv 4.68 % 4.68 % 10 -lstringa<128> str; ... str += str_var1 + str_var2;_mean 1062 ns 1062 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_median 1057 ns 1057 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_stddev 70.9 ns 70.9 ns 10 -lstringa<128> str; ... str += str_var1 + str_var2;_cv 6.68 % 6.68 % 10 -lstringa<512> str; ... str += str_var1 + str_var2;_mean 907 ns 907 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_median 916 ns 916 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_stddev 60.9 ns 60.9 ns 10 -lstringa<512> str; ... str += str_var1 + str_var2;_cv 6.72 % 6.72 % 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_mean 856 ns 856 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_median 833 ns 833 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 61.9 ns 61.9 ns 10 -lstringa<1024> str; ... str += str_var1 + str_var2;_cv 7.23 % 7.23 % 10 +std::stringstream str; ... str << str_var1 << str_var2;_mean 4648 ns 4648 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 4459 ns 4459 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 319 ns 319 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 6.87 % 6.87 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 2346 ns 2346 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 2351 ns 2351 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 83.3 ns 83.3 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 3.55 % 3.55 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 1150 ns 1150 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_median 1133 ns 1133 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_stddev 84.2 ns 84.2 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 7.32 % 7.32 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 1100 ns 1100 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 1084 ns 1084 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 70.7 ns 70.7 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 6.43 % 6.43 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 934 ns 934 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 951 ns 951 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 76.9 ns 76.9 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 8.24 % 8.24 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 867 ns 867 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 874 ns 874 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 52.8 ns 52.8 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 6.09 % 6.09 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::stringstream str; str << "test = " << k << " times";_mean 6369 ns 6369 ns 10 -std::stringstream str; str << "test = " << k << " times";_median 6276 ns 6276 ns 10 -std::stringstream str; str << "test = " << k << " times";_stddev 289 ns 289 ns 10 -std::stringstream str; str << "test = " << k << " times";_cv 4.54 % 4.54 % 10 -std::string str = "test = " + std::to_string(k) + " times";_mean 1655 ns 1655 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_median 1661 ns 1661 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_stddev 74.1 ns 74.2 ns 10 -std::string str = "test = " + std::to_string(k) + " times";_cv 4.48 % 4.48 % 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 2916 ns 2916 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 2922 ns 2922 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 76.1 ns 76.1 ns 10 -char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 2.61 % 2.61 % 10 -std::string str = std::format("test = {} times", k);_mean 2078 ns 2078 ns 10 -std::string str = std::format("test = {} times", k);_median 2061 ns 2061 ns 10 -std::string str = std::format("test = {} times", k);_stddev 65.7 ns 65.7 ns 10 -std::string str = std::format("test = {} times", k);_cv 3.16 % 3.16 % 10 -lstringa<8> str; str.format("test = {} times", k);_mean 3396 ns 3396 ns 10 -lstringa<8> str; str.format("test = {} times", k);_median 3379 ns 3379 ns 10 -lstringa<8> str; str.format("test = {} times", k);_stddev 168 ns 168 ns 10 -lstringa<8> str; str.format("test = {} times", k);_cv 4.93 % 4.93 % 10 -lstringa<32> str; str.format("test = {} times", k);_mean 2581 ns 2581 ns 10 -lstringa<32> str; str.format("test = {} times", k);_median 2579 ns 2579 ns 10 -lstringa<32> str; str.format("test = {} times", k);_stddev 62.8 ns 62.8 ns 10 -lstringa<32> str; str.format("test = {} times", k);_cv 2.43 % 2.43 % 10 -lstringa<8> str = "test = " + k + " times";_mean 610 ns 610 ns 10 -lstringa<8> str = "test = " + k + " times";_median 613 ns 613 ns 10 -lstringa<8> str = "test = " + k + " times";_stddev 30.4 ns 30.4 ns 10 -lstringa<8> str = "test = " + k + " times";_cv 4.99 % 4.99 % 10 -lstringa<32> str = "test = " + k + " times";_mean 342 ns 342 ns 10 -lstringa<32> str = "test = " + k + " times";_median 345 ns 345 ns 10 -lstringa<32> str = "test = " + k + " times";_stddev 26.2 ns 26.2 ns 10 -lstringa<32> str = "test = " + k + " times";_cv 7.68 % 7.68 % 10 -stringa str = "test = " + k + " times";_mean 562 ns 562 ns 10 -stringa str = "test = " + k + " times";_median 563 ns 563 ns 10 -stringa str = "test = " + k + " times";_stddev 23.1 ns 23.1 ns 10 -stringa str = "test = " + k + " times";_cv 4.11 % 4.11 % 10 +std::stringstream str; str << "test = " << k << " times";_mean 6486 ns 6486 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 6485 ns 6485 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 403 ns 403 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 6.21 % 6.21 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 1576 ns 1576 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 1562 ns 1562 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 69.5 ns 69.5 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 4.41 % 4.41 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 2894 ns 2894 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 2879 ns 2879 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 93.1 ns 93.1 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 3.22 % 3.22 % 10 +std::string str = std::format("test = {} times", k);_mean 2063 ns 2063 ns 10 +std::string str = std::format("test = {} times", k);_median 2031 ns 2031 ns 10 +std::string str = std::format("test = {} times", k);_stddev 98.0 ns 98.0 ns 10 +std::string str = std::format("test = {} times", k);_cv 4.75 % 4.75 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 3409 ns 3409 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 3354 ns 3354 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 236 ns 236 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 6.91 % 6.91 % 10 +lstringa<32> str; str.format("test = {} times", k);_mean 2460 ns 2460 ns 10 +lstringa<32> str; str.format("test = {} times", k);_median 2424 ns 2424 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 99.3 ns 99.3 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 4.04 % 4.04 % 10 +lstringa<8> str = "test = " + k + " times";_mean 611 ns 611 ns 10 +lstringa<8> str = "test = " + k + " times";_median 620 ns 620 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 26.4 ns 26.4 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 4.32 % 4.32 % 10 +lstringa<32> str = "test = " + k + " times";_mean 345 ns 345 ns 10 +lstringa<32> str = "test = " + k + " times";_median 327 ns 327 ns 10 +lstringa<32> str = "test = " + k + " times";_stddev 42.0 ns 42.0 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 12.19 % 12.19 % 10 +stringa str = "test = " + k + " times";_mean 541 ns 541 ns 10 +stringa str = "test = " + k + " times";_median 536 ns 536 ns 10 +stringa str = "test = " + k + " times";_stddev 29.8 ns 29.8 ns 10 +stringa str = "test = " + k + " times";_cv 5.51 % 5.51 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -std::string::find + substr + std::strtol_mean 651 ns 651 ns 10 -std::string::find + substr + std::strtol_median 654 ns 654 ns 10 -std::string::find + substr + std::strtol_stddev 41.4 ns 41.4 ns 10 -std::string::find + substr + std::strtol_cv 6.36 % 6.36 % 10 -ssa::splitter + ssa::as_int_mean 279 ns 279 ns 10 -ssa::splitter + ssa::as_int_median 275 ns 275 ns 10 -ssa::splitter + ssa::as_int_stddev 11.4 ns 11.4 ns 10 -ssa::splitter + ssa::as_int_cv 4.09 % 4.09 % 10 -ssa::splitf + functor_mean 346 ns 346 ns 10 -ssa::splitf + functor_median 346 ns 346 ns 10 -ssa::splitf + functor_stddev 5.25 ns 5.25 ns 10 -ssa::splitf + functor_cv 1.52 % 1.51 % 10 +std::string::find + substr + std::strtol_mean 609 ns 609 ns 10 +std::string::find + substr + std::strtol_median 616 ns 616 ns 10 +std::string::find + substr + std::strtol_stddev 23.9 ns 23.9 ns 10 +std::string::find + substr + std::strtol_cv 3.93 % 3.93 % 10 +ssa::splitter + ssa::as_int_mean 269 ns 269 ns 10 +ssa::splitter + ssa::as_int_median 263 ns 263 ns 10 +ssa::splitter + ssa::as_int_stddev 14.1 ns 14.1 ns 10 +ssa::splitter + ssa::as_int_cv 5.25 % 5.25 % 10 +ssa::splitf + functor_mean 338 ns 338 ns 10 +ssa::splitf + functor_median 330 ns 330 ns 10 +ssa::splitf + functor_stddev 23.1 ns 23.1 ns 10 +ssa::splitf + functor_cv 6.82 % 6.82 % 10 -- Replace symbols in text ~400 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Naive (and wrong) replace symbols with std::string find + replace_mean 3588 ns 3588 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_median 3598 ns 3598 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_stddev 118 ns 118 ns 10 -Naive (and wrong) replace symbols with std::string find + replace_cv 3.28 % 3.28 % 10 -replace symbols with std::string find_first_of + replace_mean 4762 ns 4762 ns 10 -replace symbols with std::string find_first_of + replace_median 4760 ns 4760 ns 10 -replace symbols with std::string find_first_of + replace_stddev 186 ns 186 ns 10 -replace symbols with std::string find_first_of + replace_cv 3.90 % 3.90 % 10 -replace symbols with std::string_view find_first_of + copy_mean 3410 ns 3410 ns 10 -replace symbols with std::string_view find_first_of + copy_median 3378 ns 3378 ns 10 -replace symbols with std::string_view find_first_of + copy_stddev 157 ns 157 ns 10 -replace symbols with std::string_view find_first_of + copy_cv 4.62 % 4.62 % 10 -replace runtime symbols with string expressions and without remembering all search results_mean 3466 ns 3466 ns 10 -replace runtime symbols with string expressions and without remembering all search results_median 3401 ns 3401 ns 10 -replace runtime symbols with string expressions and without remembering all search results_stddev 160 ns 160 ns 10 -replace runtime symbols with string expressions and without remembering all search results_cv 4.62 % 4.62 % 10 -replace runtime symbols with simstr and memorization of all search results_mean 3059 ns 3059 ns 10 -replace runtime symbols with simstr and memorization of all search results_median 3055 ns 3055 ns 10 -replace runtime symbols with simstr and memorization of all search results_stddev 133 ns 133 ns 10 -replace runtime symbols with simstr and memorization of all search results_cv 4.35 % 4.35 % 10 -replace const symbols with string expressions and without remembering all search results_mean 2820 ns 2820 ns 10 -replace const symbols with string expressions and without remembering all search results_median 2814 ns 2814 ns 10 -replace const symbols with string expressions and without remembering all search results_stddev 135 ns 135 ns 10 -replace const symbols with string expressions and without remembering all search results_cv 4.77 % 4.78 % 10 -replace const symbols with string expressions and memorization of all search results_mean 2715 ns 2715 ns 10 -replace const symbols with string expressions and memorization of all search results_median 2703 ns 2703 ns 10 -replace const symbols with string expressions and memorization of all search results_stddev 105 ns 105 ns 10 -replace const symbols with string expressions and memorization of all search results_cv 3.89 % 3.89 % 10 +Naive (and wrong) replace symbols with std::string find + replace_mean 3726 ns 3726 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 3773 ns 3773 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 174 ns 174 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 4.67 % 4.67 % 10 +replace symbols with std::string find_first_of + replace_mean 5016 ns 5016 ns 10 +replace symbols with std::string find_first_of + replace_median 4980 ns 4980 ns 10 +replace symbols with std::string find_first_of + replace_stddev 316 ns 316 ns 10 +replace symbols with std::string find_first_of + replace_cv 6.30 % 6.30 % 10 +replace symbols with std::string_view find_first_of + copy_mean 3479 ns 3479 ns 10 +replace symbols with std::string_view find_first_of + copy_median 3504 ns 3504 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 138 ns 138 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 3.96 % 3.96 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 3472 ns 3472 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 3473 ns 3473 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 117 ns 117 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 3.36 % 3.36 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 3043 ns 3043 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 3054 ns 3054 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 89.1 ns 89.1 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 2.93 % 2.93 % 10 +replace const symbols with string expressions and without remembering all search results_mean 2845 ns 2845 ns 10 +replace const symbols with string expressions and without remembering all search results_median 2832 ns 2832 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 111 ns 111 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 3.91 % 3.91 % 10 +replace const symbols with string expressions and memorization of all search results_mean 2739 ns 2739 ns 10 +replace const symbols with string expressions and memorization of all search results_median 2679 ns 2679 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 178 ns 178 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 6.50 % 6.50 % 10 -- Replace symbols in text ~40 symbols --/repeats:1 0.000 ns 0.000 ns 1000000000000 -Short Naive (and wrong) replace symbols with std::string find + replace_mean 475 ns 475 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_median 469 ns 469 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_stddev 21.6 ns 21.6 ns 10 -Short Naive (and wrong) replace symbols with std::string find + replace_cv 4.55 % 4.55 % 10 -Short replace symbols with std::string find_first_of + replace_mean 518 ns 518 ns 10 -Short replace symbols with std::string find_first_of + replace_median 511 ns 511 ns 10 -Short replace symbols with std::string find_first_of + replace_stddev 19.0 ns 19.0 ns 10 -Short replace symbols with std::string find_first_of + replace_cv 3.68 % 3.68 % 10 -Short replace symbols with std::string_view find_first_of + copy_mean 391 ns 391 ns 10 -Short replace symbols with std::string_view find_first_of + copy_median 389 ns 389 ns 10 -Short replace symbols with std::string_view find_first_of + copy_stddev 12.7 ns 12.7 ns 10 -Short replace symbols with std::string_view find_first_of + copy_cv 3.26 % 3.26 % 10 -Short replace runtime symbols with string expressions and without remembering all search results_mean 397 ns 397 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_median 393 ns 393 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_stddev 19.6 ns 19.6 ns 10 -Short replace runtime symbols with string expressions and without remembering all search results_cv 4.93 % 4.93 % 10 -Short replace runtime symbols with simstr and memorization of all search results_mean 405 ns 405 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_median 405 ns 405 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_stddev 18.7 ns 18.7 ns 10 -Short replace runtime symbols with simstr and memorization of all search results_cv 4.61 % 4.61 % 10 -Short replace const symbols with string expressions and without remembering all search results_mean 250 ns 250 ns 10 -Short replace const symbols with string expressions and without remembering all search results_median 249 ns 249 ns 10 -Short replace const symbols with string expressions and without remembering all search results_stddev 13.6 ns 13.6 ns 10 -Short replace const symbols with string expressions and without remembering all search results_cv 5.44 % 5.44 % 10 -Short replace const symbols with string expressions and memorization of all search results_mean 297 ns 297 ns 10 -Short replace const symbols with string expressions and memorization of all search results_median 295 ns 295 ns 10 -Short replace const symbols with string expressions and memorization of all search results_stddev 11.4 ns 11.4 ns 10 -Short replace const symbols with string expressions and memorization of all search results_cv 3.84 % 3.84 % 10 +Short Naive (and wrong) replace symbols with std::string find + replace_mean 470 ns 470 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 472 ns 472 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 24.7 ns 24.7 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 5.25 % 5.25 % 10 +Short replace symbols with std::string find_first_of + replace_mean 494 ns 494 ns 10 +Short replace symbols with std::string find_first_of + replace_median 485 ns 485 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 34.2 ns 34.2 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 6.92 % 6.92 % 10 +Short replace symbols with std::string_view find_first_of + copy_mean 413 ns 413 ns 10 +Short replace symbols with std::string_view find_first_of + copy_median 420 ns 420 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 28.4 ns 28.4 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 6.86 % 6.86 % 10 +Short replace runtime symbols with string expressions and without remembering all search results_mean 380 ns 380 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_median 378 ns 378 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 16.7 ns 16.7 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 4.40 % 4.40 % 10 +Short replace runtime symbols with simstr and memorization of all search results_mean 401 ns 401 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_median 396 ns 396 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 20.1 ns 20.0 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 5.01 % 5.00 % 10 +Short replace const symbols with string expressions and without remembering all search results_mean 257 ns 257 ns 10 +Short replace const symbols with string expressions and without remembering all search results_median 255 ns 255 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 10.0 ns 10.0 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 3.89 % 3.89 % 10 +Short replace const symbols with string expressions and memorization of all search results_mean 302 ns 302 ns 10 +Short replace const symbols with string expressions and memorization of all search results_median 300 ns 300 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 13.1 ns 13.1 ns 10 +Short replace const symbols with string expressions and memorization of all search results_cv 4.32 % 4.32 % 10 ----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to ---- in std::string|64_mean 382 ns 382 ns 10 -replace bb to ---- in std::string|64_median 383 ns 383 ns 10 -replace bb to ---- in std::string|64_stddev 15.2 ns 15.2 ns 10 -replace bb to ---- in std::string|64_cv 3.99 % 3.99 % 10 -replace bb to ---- in std::string|256_mean 1410 ns 1410 ns 10 -replace bb to ---- in std::string|256_median 1390 ns 1390 ns 10 -replace bb to ---- in std::string|256_stddev 82.5 ns 82.5 ns 10 -replace bb to ---- in std::string|256_cv 5.85 % 5.85 % 10 -replace bb to ---- in std::string|512_mean 2725 ns 2725 ns 10 -replace bb to ---- in std::string|512_median 2729 ns 2729 ns 10 -replace bb to ---- in std::string|512_stddev 113 ns 113 ns 10 -replace bb to ---- in std::string|512_cv 4.16 % 4.16 % 10 -replace bb to ---- in std::string|1024_mean 5829 ns 5829 ns 10 -replace bb to ---- in std::string|1024_median 5693 ns 5693 ns 10 -replace bb to ---- in std::string|1024_stddev 352 ns 352 ns 10 -replace bb to ---- in std::string|1024_cv 6.04 % 6.04 % 10 -replace bb to ---- in std::string|2048_mean 12920 ns 12920 ns 10 -replace bb to ---- in std::string|2048_median 12631 ns 12631 ns 10 -replace bb to ---- in std::string|2048_stddev 610 ns 610 ns 10 -replace bb to ---- in std::string|2048_cv 4.72 % 4.72 % 10 -replace bb to ---- in lstringa<8>|64_mean 339 ns 339 ns 10 -replace bb to ---- in lstringa<8>|64_median 337 ns 337 ns 10 -replace bb to ---- in lstringa<8>|64_stddev 19.7 ns 19.7 ns 10 -replace bb to ---- in lstringa<8>|64_cv 5.82 % 5.82 % 10 -replace bb to ---- in lstringa<8>|256_mean 1065 ns 1065 ns 10 -replace bb to ---- in lstringa<8>|256_median 1068 ns 1068 ns 10 -replace bb to ---- in lstringa<8>|256_stddev 44.3 ns 44.3 ns 10 -replace bb to ---- in lstringa<8>|256_cv 4.16 % 4.16 % 10 -replace bb to ---- in lstringa<8>|512_mean 1968 ns 1968 ns 10 -replace bb to ---- in lstringa<8>|512_median 1941 ns 1941 ns 10 -replace bb to ---- in lstringa<8>|512_stddev 116 ns 116 ns 10 -replace bb to ---- in lstringa<8>|512_cv 5.89 % 5.89 % 10 -replace bb to ---- in lstringa<8>|1024_mean 3761 ns 3761 ns 10 -replace bb to ---- in lstringa<8>|1024_median 3764 ns 3764 ns 10 -replace bb to ---- in lstringa<8>|1024_stddev 154 ns 154 ns 10 -replace bb to ---- in lstringa<8>|1024_cv 4.09 % 4.09 % 10 -replace bb to ---- in lstringa<8>|2048_mean 7335 ns 7335 ns 10 -replace bb to ---- in lstringa<8>|2048_median 7333 ns 7333 ns 10 -replace bb to ---- in lstringa<8>|2048_stddev 313 ns 313 ns 10 -replace bb to ---- in lstringa<8>|2048_cv 4.27 % 4.27 % 10 -replace bb to ---- by init stringa|64_mean 220 ns 220 ns 10 -replace bb to ---- by init stringa|64_median 217 ns 217 ns 10 -replace bb to ---- by init stringa|64_stddev 10.4 ns 10.4 ns 10 -replace bb to ---- by init stringa|64_cv 4.75 % 4.75 % 10 -replace bb to ---- by init stringa|256_mean 738 ns 738 ns 10 -replace bb to ---- by init stringa|256_median 734 ns 734 ns 10 -replace bb to ---- by init stringa|256_stddev 43.6 ns 43.6 ns 10 -replace bb to ---- by init stringa|256_cv 5.90 % 5.90 % 10 -replace bb to ---- by init stringa|512_mean 1733 ns 1733 ns 10 -replace bb to ---- by init stringa|512_median 1728 ns 1728 ns 10 -replace bb to ---- by init stringa|512_stddev 54.1 ns 54.1 ns 10 -replace bb to ---- by init stringa|512_cv 3.12 % 3.12 % 10 -replace bb to ---- by init stringa|1024_mean 3695 ns 3695 ns 10 -replace bb to ---- by init stringa|1024_median 3717 ns 3717 ns 10 -replace bb to ---- by init stringa|1024_stddev 156 ns 156 ns 10 -replace bb to ---- by init stringa|1024_cv 4.22 % 4.22 % 10 -replace bb to ---- by init stringa|2048_mean 7436 ns 7436 ns 10 -replace bb to ---- by init stringa|2048_median 7389 ns 7389 ns 10 -replace bb to ---- by init stringa|2048_stddev 246 ns 246 ns 10 -replace bb to ---- by init stringa|2048_cv 3.31 % 3.31 % 10 +replace bb to ---- in std::string|64_mean 371 ns 371 ns 10 +replace bb to ---- in std::string|64_median 369 ns 369 ns 10 +replace bb to ---- in std::string|64_stddev 18.6 ns 18.6 ns 10 +replace bb to ---- in std::string|64_cv 5.01 % 5.01 % 10 +replace bb to ---- in std::string|256_mean 1351 ns 1351 ns 10 +replace bb to ---- in std::string|256_median 1339 ns 1339 ns 10 +replace bb to ---- in std::string|256_stddev 71.1 ns 71.1 ns 10 +replace bb to ---- in std::string|256_cv 5.26 % 5.26 % 10 +replace bb to ---- in std::string|512_mean 2646 ns 2646 ns 10 +replace bb to ---- in std::string|512_median 2675 ns 2675 ns 10 +replace bb to ---- in std::string|512_stddev 139 ns 139 ns 10 +replace bb to ---- in std::string|512_cv 5.26 % 5.26 % 10 +replace bb to ---- in std::string|1024_mean 5606 ns 5607 ns 10 +replace bb to ---- in std::string|1024_median 5440 ns 5440 ns 10 +replace bb to ---- in std::string|1024_stddev 337 ns 336 ns 10 +replace bb to ---- in std::string|1024_cv 6.00 % 5.99 % 10 +replace bb to ---- in std::string|2048_mean 12254 ns 12254 ns 10 +replace bb to ---- in std::string|2048_median 12308 ns 12308 ns 10 +replace bb to ---- in std::string|2048_stddev 329 ns 329 ns 10 +replace bb to ---- in std::string|2048_cv 2.68 % 2.68 % 10 +replace bb to ---- in lstringa<8>|64_mean 332 ns 332 ns 10 +replace bb to ---- in lstringa<8>|64_median 329 ns 329 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 13.8 ns 13.8 ns 10 +replace bb to ---- in lstringa<8>|64_cv 4.16 % 4.16 % 10 +replace bb to ---- in lstringa<8>|256_mean 1116 ns 1116 ns 10 +replace bb to ---- in lstringa<8>|256_median 1121 ns 1121 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 50.8 ns 50.8 ns 10 +replace bb to ---- in lstringa<8>|256_cv 4.55 % 4.55 % 10 +replace bb to ---- in lstringa<8>|512_mean 2117 ns 2117 ns 10 +replace bb to ---- in lstringa<8>|512_median 2104 ns 2104 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 87.2 ns 87.2 ns 10 +replace bb to ---- in lstringa<8>|512_cv 4.12 % 4.12 % 10 +replace bb to ---- in lstringa<8>|1024_mean 4092 ns 4092 ns 10 +replace bb to ---- in lstringa<8>|1024_median 4093 ns 4093 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 157 ns 157 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 3.83 % 3.83 % 10 +replace bb to ---- in lstringa<8>|2048_mean 7783 ns 7783 ns 10 +replace bb to ---- in lstringa<8>|2048_median 7722 ns 7722 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 312 ns 312 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 4.01 % 4.01 % 10 +replace bb to ---- by init stringa|64_mean 212 ns 212 ns 10 +replace bb to ---- by init stringa|64_median 211 ns 211 ns 10 +replace bb to ---- by init stringa|64_stddev 7.68 ns 7.68 ns 10 +replace bb to ---- by init stringa|64_cv 3.62 % 3.62 % 10 +replace bb to ---- by init stringa|256_mean 725 ns 725 ns 10 +replace bb to ---- by init stringa|256_median 728 ns 728 ns 10 +replace bb to ---- by init stringa|256_stddev 17.3 ns 17.3 ns 10 +replace bb to ---- by init stringa|256_cv 2.39 % 2.39 % 10 +replace bb to ---- by init stringa|512_mean 1687 ns 1687 ns 10 +replace bb to ---- by init stringa|512_median 1694 ns 1694 ns 10 +replace bb to ---- by init stringa|512_stddev 59.8 ns 59.8 ns 10 +replace bb to ---- by init stringa|512_cv 3.55 % 3.55 % 10 +replace bb to ---- by init stringa|1024_mean 3720 ns 3720 ns 10 +replace bb to ---- by init stringa|1024_median 3746 ns 3746 ns 10 +replace bb to ---- by init stringa|1024_stddev 181 ns 181 ns 10 +replace bb to ---- by init stringa|1024_cv 4.86 % 4.86 % 10 +replace bb to ---- by init stringa|2048_mean 7469 ns 7469 ns 10 +replace bb to ---- by init stringa|2048_median 7375 ns 7375 ns 10 +replace bb to ---- by init stringa|2048_stddev 456 ns 456 ns 10 +replace bb to ---- by init stringa|2048_cv 6.10 % 6.10 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -replace bb to -- in std::string|64_mean 270 ns 270 ns 10 -replace bb to -- in std::string|64_median 272 ns 272 ns 10 -replace bb to -- in std::string|64_stddev 14.2 ns 14.2 ns 10 -replace bb to -- in std::string|64_cv 5.28 % 5.28 % 10 -replace bb to -- in std::string|256_mean 1011 ns 1011 ns 10 -replace bb to -- in std::string|256_median 1008 ns 1008 ns 10 -replace bb to -- in std::string|256_stddev 41.5 ns 41.4 ns 10 -replace bb to -- in std::string|256_cv 4.10 % 4.10 % 10 -replace bb to -- in std::string|512_mean 1878 ns 1878 ns 10 -replace bb to -- in std::string|512_median 1887 ns 1887 ns 10 -replace bb to -- in std::string|512_stddev 27.8 ns 27.8 ns 10 -replace bb to -- in std::string|512_cv 1.48 % 1.48 % 10 -replace bb to -- in std::string|1024_mean 3626 ns 3626 ns 10 -replace bb to -- in std::string|1024_median 3596 ns 3596 ns 10 -replace bb to -- in std::string|1024_stddev 115 ns 115 ns 10 -replace bb to -- in std::string|1024_cv 3.18 % 3.18 % 10 -replace bb to -- in std::string|2048_mean 7194 ns 7194 ns 10 -replace bb to -- in std::string|2048_median 7224 ns 7224 ns 10 -replace bb to -- in std::string|2048_stddev 254 ns 254 ns 10 -replace bb to -- in std::string|2048_cv 3.54 % 3.54 % 10 -replace bb to -- in lstringa<8>|64_mean 222 ns 222 ns 10 -replace bb to -- in lstringa<8>|64_median 223 ns 223 ns 10 -replace bb to -- in lstringa<8>|64_stddev 7.12 ns 7.12 ns 10 -replace bb to -- in lstringa<8>|64_cv 3.21 % 3.21 % 10 -replace bb to -- in lstringa<8>|256_mean 775 ns 775 ns 10 -replace bb to -- in lstringa<8>|256_median 778 ns 778 ns 10 -replace bb to -- in lstringa<8>|256_stddev 33.2 ns 33.2 ns 10 -replace bb to -- in lstringa<8>|256_cv 4.28 % 4.28 % 10 -replace bb to -- in lstringa<8>|512_mean 1461 ns 1461 ns 10 -replace bb to -- in lstringa<8>|512_median 1458 ns 1458 ns 10 -replace bb to -- in lstringa<8>|512_stddev 65.3 ns 65.3 ns 10 -replace bb to -- in lstringa<8>|512_cv 4.47 % 4.47 % 10 -replace bb to -- in lstringa<8>|1024_mean 2776 ns 2776 ns 10 -replace bb to -- in lstringa<8>|1024_median 2772 ns 2772 ns 10 -replace bb to -- in lstringa<8>|1024_stddev 95.9 ns 95.9 ns 10 -replace bb to -- in lstringa<8>|1024_cv 3.46 % 3.46 % 10 -replace bb to -- in lstringa<8>|2048_mean 5522 ns 5522 ns 10 -replace bb to -- in lstringa<8>|2048_median 5632 ns 5632 ns 10 -replace bb to -- in lstringa<8>|2048_stddev 267 ns 267 ns 10 -replace bb to -- in lstringa<8>|2048_cv 4.84 % 4.84 % 10 -replace bb to -- by init stringa|64_mean 180 ns 180 ns 10 -replace bb to -- by init stringa|64_median 180 ns 180 ns 10 -replace bb to -- by init stringa|64_stddev 7.12 ns 7.12 ns 10 -replace bb to -- by init stringa|64_cv 3.97 % 3.97 % 10 -replace bb to -- by init stringa|256_mean 646 ns 646 ns 10 -replace bb to -- by init stringa|256_median 639 ns 639 ns 10 -replace bb to -- by init stringa|256_stddev 40.9 ns 40.9 ns 10 -replace bb to -- by init stringa|256_cv 6.33 % 6.33 % 10 -replace bb to -- by init stringa|512_mean 1220 ns 1220 ns 10 -replace bb to -- by init stringa|512_median 1197 ns 1197 ns 10 -replace bb to -- by init stringa|512_stddev 51.8 ns 51.8 ns 10 -replace bb to -- by init stringa|512_cv 4.25 % 4.25 % 10 -replace bb to -- by init stringa|1024_mean 2371 ns 2371 ns 10 -replace bb to -- by init stringa|1024_median 2376 ns 2376 ns 10 -replace bb to -- by init stringa|1024_stddev 86.3 ns 86.3 ns 10 -replace bb to -- by init stringa|1024_cv 3.64 % 3.64 % 10 -replace bb to -- by init stringa|2048_mean 4604 ns 4604 ns 10 -replace bb to -- by init stringa|2048_median 4626 ns 4626 ns 10 +replace bb to -- in std::string|64_mean 259 ns 259 ns 10 +replace bb to -- in std::string|64_median 255 ns 255 ns 10 +replace bb to -- in std::string|64_stddev 12.7 ns 12.7 ns 10 +replace bb to -- in std::string|64_cv 4.89 % 4.89 % 10 +replace bb to -- in std::string|256_mean 941 ns 941 ns 10 +replace bb to -- in std::string|256_median 944 ns 944 ns 10 +replace bb to -- in std::string|256_stddev 28.9 ns 28.9 ns 10 +replace bb to -- in std::string|256_cv 3.07 % 3.07 % 10 +replace bb to -- in std::string|512_mean 1842 ns 1842 ns 10 +replace bb to -- in std::string|512_median 1831 ns 1831 ns 10 +replace bb to -- in std::string|512_stddev 39.0 ns 39.0 ns 10 +replace bb to -- in std::string|512_cv 2.12 % 2.12 % 10 +replace bb to -- in std::string|1024_mean 3695 ns 3695 ns 10 +replace bb to -- in std::string|1024_median 3634 ns 3634 ns 10 +replace bb to -- in std::string|1024_stddev 209 ns 209 ns 10 +replace bb to -- in std::string|1024_cv 5.65 % 5.65 % 10 +replace bb to -- in std::string|2048_mean 6890 ns 6890 ns 10 +replace bb to -- in std::string|2048_median 6853 ns 6853 ns 10 +replace bb to -- in std::string|2048_stddev 231 ns 231 ns 10 +replace bb to -- in std::string|2048_cv 3.35 % 3.35 % 10 +replace bb to -- in lstringa<8>|64_mean 219 ns 219 ns 10 +replace bb to -- in lstringa<8>|64_median 216 ns 216 ns 10 +replace bb to -- in lstringa<8>|64_stddev 7.29 ns 7.29 ns 10 +replace bb to -- in lstringa<8>|64_cv 3.34 % 3.34 % 10 +replace bb to -- in lstringa<8>|256_mean 797 ns 797 ns 10 +replace bb to -- in lstringa<8>|256_median 772 ns 772 ns 10 +replace bb to -- in lstringa<8>|256_stddev 73.2 ns 73.2 ns 10 +replace bb to -- in lstringa<8>|256_cv 9.19 % 9.19 % 10 +replace bb to -- in lstringa<8>|512_mean 1465 ns 1465 ns 10 +replace bb to -- in lstringa<8>|512_median 1469 ns 1469 ns 10 +replace bb to -- in lstringa<8>|512_stddev 93.1 ns 93.1 ns 10 +replace bb to -- in lstringa<8>|512_cv 6.35 % 6.35 % 10 +replace bb to -- in lstringa<8>|1024_mean 2845 ns 2845 ns 10 +replace bb to -- in lstringa<8>|1024_median 2804 ns 2804 ns 10 +replace bb to -- in lstringa<8>|1024_stddev 135 ns 135 ns 10 +replace bb to -- in lstringa<8>|1024_cv 4.73 % 4.73 % 10 +replace bb to -- in lstringa<8>|2048_mean 5530 ns 5530 ns 10 +replace bb to -- in lstringa<8>|2048_median 5473 ns 5473 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 224 ns 224 ns 10 +replace bb to -- in lstringa<8>|2048_cv 4.05 % 4.05 % 10 +replace bb to -- by init stringa|64_mean 178 ns 178 ns 10 +replace bb to -- by init stringa|64_median 177 ns 177 ns 10 +replace bb to -- by init stringa|64_stddev 7.73 ns 7.73 ns 10 +replace bb to -- by init stringa|64_cv 4.34 % 4.34 % 10 +replace bb to -- by init stringa|256_mean 634 ns 634 ns 10 +replace bb to -- by init stringa|256_median 636 ns 636 ns 10 +replace bb to -- by init stringa|256_stddev 15.0 ns 15.0 ns 10 +replace bb to -- by init stringa|256_cv 2.37 % 2.37 % 10 +replace bb to -- by init stringa|512_mean 1214 ns 1214 ns 10 +replace bb to -- by init stringa|512_median 1204 ns 1204 ns 10 +replace bb to -- by init stringa|512_stddev 54.1 ns 54.1 ns 10 +replace bb to -- by init stringa|512_cv 4.45 % 4.45 % 10 +replace bb to -- by init stringa|1024_mean 2270 ns 2269 ns 10 +replace bb to -- by init stringa|1024_median 2256 ns 2254 ns 10 +replace bb to -- by init stringa|1024_stddev 50.4 ns 50.5 ns 10 +replace bb to -- by init stringa|1024_cv 2.22 % 2.23 % 10 +replace bb to -- by init stringa|2048_mean 4529 ns 4529 ns 10 +replace bb to -- by init stringa|2048_median 4505 ns 4505 ns 10 replace bb to -- by init stringa|2048_stddev 139 ns 139 ns 10 -replace bb to -- by init stringa|2048_cv 3.03 % 3.03 % 10 +replace bb to -- by init stringa|2048_cv 3.07 % 3.07 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -hashStrMapA emplace & find stringa;_mean 3162304 ns 3162341 ns 10 -hashStrMapA emplace & find stringa;_median 3150599 ns 3150645 ns 10 -hashStrMapA emplace & find stringa;_stddev 88906 ns 88929 ns 10 -hashStrMapA emplace & find stringa;_cv 2.81 % 2.81 % 10 -std::unordered_map emplace & find std::string;_mean 3370915 ns 3370945 ns 10 -std::unordered_map emplace & find std::string;_median 3347562 ns 3347612 ns 10 -std::unordered_map emplace & find std::string;_stddev 63254 ns 63239 ns 10 -std::unordered_map emplace & find std::string;_cv 1.88 % 1.88 % 10 -hashStrMapA emplace & find ssa;_mean 3151333 ns 3151360 ns 10 -hashStrMapA emplace & find ssa;_median 3141930 ns 3141974 ns 10 -hashStrMapA emplace & find ssa;_stddev 51278 ns 51255 ns 10 -hashStrMapA emplace & find ssa;_cv 1.63 % 1.63 % 10 -std::unordered_map emplace & find std::string_view;_mean 3797453 ns 3797464 ns 10 -std::unordered_map emplace & find std::string_view;_median 3810615 ns 3810615 ns 10 -std::unordered_map emplace & find std::string_view;_stddev 66726 ns 66718 ns 10 -std::unordered_map emplace & find std::string_view;_cv 1.76 % 1.76 % 10 +hashStrMapA emplace & find stringa;_mean 3204846 ns 3204846 ns 10 +hashStrMapA emplace & find stringa;_median 3165198 ns 3165198 ns 10 +hashStrMapA emplace & find stringa;_stddev 130570 ns 130570 ns 10 +hashStrMapA emplace & find stringa;_cv 4.07 % 4.07 % 10 +std::unordered_map emplace & find std::string;_mean 3332883 ns 3332883 ns 10 +std::unordered_map emplace & find std::string;_median 3326577 ns 3326577 ns 10 +std::unordered_map emplace & find std::string;_stddev 66320 ns 66320 ns 10 +std::unordered_map emplace & find std::string;_cv 1.99 % 1.99 % 10 +hashStrMapA emplace & find ssa;_mean 3197797 ns 3197797 ns 10 +hashStrMapA emplace & find ssa;_median 3180617 ns 3180617 ns 10 +hashStrMapA emplace & find ssa;_stddev 109562 ns 109562 ns 10 +hashStrMapA emplace & find ssa;_cv 3.43 % 3.43 % 10 +std::unordered_map emplace & find std::string_view;_mean 3669143 ns 3669143 ns 10 +std::unordered_map emplace & find std::string_view;_median 3685714 ns 3685714 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 54174 ns 54174 ns 10 +std::unordered_map emplace & find std::string_view;_cv 1.48 % 1.48 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -Build func full name std::string;_mean 2652 ns 2652 ns 10 -Build func full name std::string;_median 2680 ns 2680 ns 10 -Build func full name std::string;_stddev 80.1 ns 80.1 ns 10 -Build func full name std::string;_cv 3.02 % 3.02 % 10 -Build func full name std::string 1;_mean 2955 ns 2955 ns 10 -Build func full name std::string 1;_median 2931 ns 2931 ns 10 -Build func full name std::string 1;_stddev 128 ns 128 ns 10 -Build func full name std::string 1;_cv 4.33 % 4.33 % 10 -Build func full name std::stream;_mean 6584 ns 6584 ns 10 -Build func full name std::stream;_median 6562 ns 6562 ns 10 -Build func full name std::stream;_stddev 143 ns 143 ns 10 -Build func full name std::stream;_cv 2.17 % 2.17 % 10 -Build func full name stringa;_mean 1274 ns 1274 ns 10 -Build func full name stringa;_median 1274 ns 1274 ns 10 -Build func full name stringa;_stddev 82.4 ns 82.4 ns 10 -Build func full name stringa;_cv 6.47 % 6.47 % 10 -Build func full name stringa 1;_mean 1576 ns 1576 ns 10 -Build func full name stringa 1;_median 1547 ns 1547 ns 10 -Build func full name stringa 1;_stddev 85.2 ns 85.2 ns 10 -Build func full name stringa 1;_cv 5.40 % 5.40 % 10 +Build func full name std::string;_mean 2854 ns 2854 ns 10 +Build func full name std::string;_median 2816 ns 2816 ns 10 +Build func full name std::string;_stddev 165 ns 165 ns 10 +Build func full name std::string;_cv 5.76 % 5.76 % 10 +Build func full name std::string 1;_mean 2988 ns 2988 ns 10 +Build func full name std::string 1;_median 2971 ns 2971 ns 10 +Build func full name std::string 1;_stddev 124 ns 124 ns 10 +Build func full name std::string 1;_cv 4.15 % 4.15 % 10 +Build func full name std::stream;_mean 6634 ns 6634 ns 10 +Build func full name std::stream;_median 6563 ns 6563 ns 10 +Build func full name std::stream;_stddev 398 ns 398 ns 10 +Build func full name std::stream;_cv 6.01 % 6.01 % 10 +Build func full name stringa;_mean 1333 ns 1333 ns 10 +Build func full name stringa;_median 1339 ns 1339 ns 10 +Build func full name stringa;_stddev 77.7 ns 77.7 ns 10 +Build func full name stringa;_cv 5.83 % 5.83 % 10 +Build func full name stringa 1;_mean 1547 ns 1547 ns 10 +Build func full name stringa 1;_median 1558 ns 1558 ns 10 +Build func full name stringa 1;_stddev 73.9 ns 73.9 ns 10 +Build func full name stringa 1;_cv 4.77 % 4.77 % 10 diff --git a/for_debug/simstr.natvis b/for_debug/simstr.natvis index 8cd096b..09612c9 100644 --- a/for_debug/simstr.natvis +++ b/for_debug/simstr.natvis @@ -1,6 +1,20 @@ + + [unknown] + l={len}, {str,[len]nas8} + l={len}, {str,[len]nasu} + l={len}, {str,[len]nas32} + [unknown] + + + [unknown] + l={len}, {str,[len]nas8} + l={len}, {str,[len]nasu} + l={len}, {str,[len]nas32} + [unknown] + [unknown] l={len}, {str,[len]nas8} @@ -8,6 +22,13 @@ l={len}, {str,[len]nas32} [unknown] + + [unknown] + l={len}, {str,[len]nas8} + l={len}, {str,[len]nasu} + l={len}, {str,[len]nas32} + [unknown] + inplace, l={LocalCount - localRemain_}, {buf_,[LocalCount - localRemain_]nas8} literal, l={bigLen_}, {cstr_,[bigLen_]nas8} diff --git a/for_debug/simstr_pretty_print.py b/for_debug/simstr_pretty_print.py index 845eec2..990951c 100644 --- a/for_debug/simstr_pretty_print.py +++ b/for_debug/simstr_pretty_print.py @@ -192,6 +192,8 @@ printer_list = { "lstring": [lstring_printer, lstring_printer_init], "simple_str": [ssa_printer], "simple_str_nt": [ssa_printer], + "str_src": [ssa_printer], + "str_src_nt": [ssa_printer], } for name, func in printer_list.items(): diff --git a/readme.md b/readme.md index c349f4d..5e2804c 100644 --- a/readme.md +++ b/readme.md @@ -1,19 +1,23 @@ -# simstr - String object and function library -

    Speed up your work with strings by 2-10 times!

    +# simstr - String Object and Function Library +Russian | По-русски [![CMake on multiple platforms](https://github.com/orefkov/simstr/actions/workflows/cmake-multi-platform.yml/badge.svg)](https://github.com/orefkov/simstr/actions/workflows/cmake-multi-platform.yml) Version 1.6.0. -On Russian | По-русски +

    Speed up your work with strings by 2-10 times!

    + This library contains a modern implementation of several types of string objects and various algorithms for working with strings. +## Generated Documentation +[Located here](https://orefkov.github.io/simstr/docs_ru/) +## Brief Description The goal of the library is to make working with strings in C++ as simple and easy as in many other languages, especially -scripting languages, while maintaining optimal performance at the level of C and C++, and even improving them. +scripting languages, while maintaining optimality and performance at the level of C and C++, and even improving them. It's no secret that working with strings in C++ often causes pain. The `std::string` class is often inconvenient or inefficient. -Many functions that are usually needed when working with strings are simply not there, and everyone has to write them themselves. +Many functions that are usually necessary when working with strings are simply not there, and everyone has to write them themselves. Even concatenating `std::string` and `std::string_view` became possible only with C++26. That's why I started creating this library for myself around 2012, and now I'm ready to share it with all C++ developers. @@ -22,19 +26,19 @@ use in my work, trying to do it in the most efficient way, and I modestly hope t and will be useful to other people, either directly or as a source of ideas. The library contains two parts: -- Implementation of [*"String Expressions"*](https://orefkov.github.io/simstr/docs_en/overview.html#autotoc_md68) and algorithms for working +- Implementation of [*"String Expressions"*](https://orefkov.github.io/simstr/docs_ru/overview.html#autotoc_md27) and algorithms for working with constant strings.\ To use this part, just take the file `"include/simstr/strexpr.h"` and write in your code ```cpp - #include "path/to/file/strexpr.h" + #include "путь/к файлу/strexpr.h" ``` This will allow you to use powerful and fast *"string expressions"* for concatenation and string construction for standard string types (`std::basic_string`, `std::basic_string_view`), as well as simplified versions of the `simple_str` and `simple_str_nt` classes, which implement all those string algorithms of the library that do not require storing or modifying strings. Since this is a header-only part, it does not include working with UTF encodings and simplified Unicode. -- The full version, which requires connecting the entire library (`"include/simstr/sstring.h"`), adds its own string types with +- The full version, requiring the connection of the entire library (`"include/simstr/sstring.h"`), adds its string types with the ability to store and modify strings, works with UTF encodings and simplified Unicode. -The library does not pretend to be "changed the header and everything worked better" - it gets along well with standard strings +The library does not pretend to be a "changed header and everything worked better" - it gets along well with standard strings and does not change the behavior of existing code working with them. I tried to make many methods in it compatible with `std::string` and `std::string_view`, but I didn't bother with this much. Rewriting your code to work with `simstr` will require some effort, but I assure you that it will pay off. And thanks to compatibility with standard strings, this work can be done @@ -46,14 +50,14 @@ types of objects, each of which is good for its own purposes, and at the same ti If you actively used `std::string_view` and understood its advantages and disadvantages compared to `std::string`, then the `simstr` approach will also be clear to you. -## Main features of the library +## Key Features of the Library When using only `#include "simstr/strexpr.h"`: - Support for working with strings `char`, `char8_t`, `char16_t`, `char32_t`, `wchar_t`. - Powerful and extensible *"String Expressions"* system. Allows you to efficiently implement the conversion and addition (concatenation) of strings, string literals, numbers (and possibly other objects), achieving significant acceleration of string operations. Compatible with both `simstr` string objects and standard strings (`std::basic_string`, - `std::basic_string_view`), which allows you to use fast concatenation even where it is not yet possible to abandon standard strings. + `std::basic_string_view`), which allows you to apply fast concatenation even where it is not yet possible to abandon standard strings. Also allows you to mix strings of compatible character types in operations. - Constant string functions (do not change the original string): - Getting substrings. @@ -62,17 +66,17 @@ When using only `#include "simstr/strexpr.h"`: - Various trimming of strings - right, left, everywhere, by whitespace characters, by specified characters. - Replacing substrings (creating a copy of the string with the replacement). - Replacing a set of characters with a set of corresponding substrings (creating a copy of the string with the replacement). - - Merging (join) containers of strings into a single string, with specifying delimiters and options - "skip empty", "delimiter after last". + - Merging (join) containers of strings into a single string, with specifying separators and options - "skip empty", "separator after last". - Splitting strings into parts by a specified delimiter. Splitting is possible immediately into a container with strings, or by calling a functor for each substring, or by iterating using the `Splitter` iterator. - Functions for modifying standard strings with string expressions: - - str::append, str::prepend, str::insert, str::change - modify str::string with string expressions, - for example, `str::append(text, "count = "_ss + count + " times")`. - - str::replace - replaces occurrences of the searched substring with the replacement string or string expression. + - str::append, str::prepend, str::insert, str::change - change str::string with string expressions, + for example `str::append(text, "count = "_ss + count)`. + - str::replace - replaces occurrences of the search substring with a replacement string or string expression. If the substring is not found, the string expression is not even evaluated. - Parsing integers with the possibility of "fine" tuning at compile time - you can set options for checking overflow, - skipping whitespace characters, a specific base or auto-selection by prefixes `0x`, `0`, `0b`, `0o`, - admissibility of the `+` sign. Parsing is implemented for all types of strings and characters. + skipping whitespace characters, a specific radix or auto-selection by prefixes `0x`, `0`, `0b`, `0o`, + the admissibility of the `+` sign. Parsing is implemented for all types of strings and characters. - Parsing double for `char` and `wchar_t`, as well as character types compatible with them in size. When using the full version of the library: @@ -91,27 +95,43 @@ When using the full version of the library: Works only for characters of the first Unicode plane (up to 0xFFFF), and when changing the case, cases are not taken into account when one code point can be converted into several, that is, the case conversion of characters corresponds to `std::towupper`, `std::towlower` for the unicode locale, only faster and can work with any type of characters. - Implemented `hash map` for string type keys, based on `std::unordered_map`, with the possibility of more efficient storage and - comparison of keys compared to `std::string` keys. The possibility of case-insensitive comparison of keys is supported (Ascii or + comparison of keys compared to `std::string` keys. Supports the possibility of case-insensitive comparison of keys (Ascii or minimal Unicode (see previous paragraph)). -## String expressions +## Benchmarks +Benchmarks are performed using the [Google benchmark](https://github.com/google/benchmark) framework. +I tried to make measurements for the most typical operations that occur in normal work. I took measurements on my equipment, under +Windows and Linux (in WSL), using MSVC, Clang, GCC compilers. Third-party results are welcome. +I also took measurements in WASM, built in Emscripten. I draw attention to the fact that a 32-bit build is built under WASM in Emscripten, which means that +the sizes of SSO buffers in objects are smaller. + +On the [release page](https://github.com/orefkov/simstr/releases) you can download binary builds of benchmarks and run them on your equipment. + +You can also run the [Emscripten build of benchmarks](https://orefkov.github.io/simstr/bench/benchStr.html) directly in the browser. +(Before following the link, it is better to open "Developer Tools" (usually **F12**) in advance to see the console +Javascript, since the page will not be updated until the benchmarks are completed, and all output will be visible in the console). + +- [Benchmark source code](bench/bench_str.cpp) +- [Benchmark results](https://orefkov.github.io/simstr/results.html) + +## String Expressions These are special objects that efficiently implement string concatenation using `operator+`. The main principle, due to which efficient work is achieved - no matter how many operands are included in the entire expression, no temporary (intermediate) strings are created, the total length of the entire result is calculated only once, -memory is allocated for the character buffer of the result only once, after which the characters are copied immediately to the buffer of the result +memory is allocated for the result character buffer only once, after which the characters are copied directly to the result buffer to its place. No memory reallocations, no moving characters in various intermediate buffers - everything is as efficient as possible. Thanks to the capabilities of C++ templates and operator overloading, the expression is written as close as possible -to the usual string addition syntax. +to the usual syntax for adding strings. In addition, there are special overloads for adding string objects and string literals, strings and numbers, for copying with replacement, for merging containers of strings and much more. -Thanks to the extensibility of this system, it is possible to create new options for building strings, development is constantly ongoing. +Thanks to the extensibility of this system, it is possible to create new options for building strings, and development is constantly ongoing. All string objects from `simstr` are themselves string expressions, that is, they can be used in concatenation operations -of string expressions directly. Standard strings (`std::basic_string`, `std::basic_string_view`) can also serve as operands -in addition operations with string expressions. Or they can be easily converted into a string expression by placing a -unary `+` in front of them. +string expressions directly. Standard strings (`std::basic_string`, `std::basic_string_view`) can also serve as operands +in addition operations with string expressions. Or they can be easily converted into a string expression by placing them in front of them +unary `+`. -## Usage examples +## Usage Examples ### Adding strings with numbers ```cpp std::string s1 = "start "; @@ -122,9 +142,9 @@ int i; // Became std::string str = +s1 + i + " end"; ``` -`+s1` - converts `std::string` into an object - a string expression, for which there is an efficient concatenation with numbers and string literals. +`+s1` - converts `std::string` into an object - a string expression for which there is an efficient concatenation with numbers and string literals. -According to benchmarks, [acceleration is 1.6 - 2 times](https://orefkov.github.io/simstr/results.html#bs70109915512075798510). +According to benchmarks, [acceleration 1.6 - 2 times](https://orefkov.github.io/simstr/results.html#bs70109915512075798510). ### Adding strings with numbers in hex format ```cpp @@ -134,7 +154,7 @@ According to benchmarks, [acceleration is 1.6 - 2 times](https://orefkov.github. // Became std::string str = +s1 + e_hex(i) + " end"; ``` -Acceleration in [**9 - 14 times!!!**](https://orefkov.github.io/simstr/results.html#bs146911715078927772520) +Acceleration by [**9 - 14 times!!!**](https://orefkov.github.io/simstr/results.html#bs146911715078927772520) ### Adding multiple literals and searching in `std::string_view` ```cpp @@ -151,17 +171,17 @@ size_t find_pos(ssa src, ssa name) { // And when using the full library, you can do this size_t find_pos(ssa src, ssa name) { // In this version, if the result of the concatenation fits into 207 characters, it is produced in a buffer on the stack, - // without allocation and deallocation of memory, acceleration is several times. And only if the result is longer than 207 characters - + // without allocation and deallocation of memory, acceleration several times. And only if the result is longer than 207 characters - // there will be only one allocation, and the concatenation will be immediately into the allocated buffer, without copying characters. return src.find(lstringa<200>{"\n- " + name + " -\n"}); } ``` -`ssa` - alias for `simple_str` - analogue of `std::string_view`, allows you to accept any string object as a function parameter with minimal costs, -which does not need to be modified or passed to the C-API: `std::string`, `std::string_view`, `"string literal"`, +`ssa` - alias for `simple_str` - analogue of `std::string_view`, allows you to accept as a function parameter with minimal costs +any string object that does not need to be modified or passed to the C-API: `std::string`, `std::string_view`, `"string literal"`, `simple_str_nt`, `sstring`, `lstring`. Also, since it is also a "string expression", it allows you to easily build concatenations with its participation. -According to measurements, [acceleration is 1.5 - 9 times](https://orefkov.github.io/simstr/results.html#bs68116594352702954700). +According to measurements, [acceleration 1.5 - 9 times](https://orefkov.github.io/simstr/results.html#bs68116594352702954700). ### Addition with conditions ```cpp @@ -188,7 +208,7 @@ std::string buildTypeName(std::string_view type_name, size_t prec, size_t scale) // Became when using only strexpr.h and simple_str string std::string buildTypeName(ssa type_name, size_t prec, size_t scale) { if (prec) { - // ssa is already a string expression, + before it is not needed + // ssa is already a string expression, + in front of it is not needed return type_name + "(" + prec + e_if(scale, ","_ss + scale) + ")"; } return type_name; @@ -201,7 +221,7 @@ stringa buildTypeName(ssa type_name, size_t prec, size_t scale) { return type_name; } ``` -When `prec != 0`, [acceleration is 1.5 - 2.2 times](https://orefkov.github.io/simstr/results.html#bs145290966789248325200). +When `prec != 0`, [acceleration 1.5 - 2.2 times](https://orefkov.github.io/simstr/results.html#bs145290966789248325200). ### Addition with replacements ```cpp @@ -257,32 +277,33 @@ int split_and_calc_total_sim(ssa numbers, ssa delimiter) { return total; } ``` -[Acceleration in 2-3 times](https://orefkov.github.io/simstr/results.html#bs7106975351756760120). +[Acceleration by 2-3 times](https://orefkov.github.io/simstr/results.html#bs7106975351756760120). In addition to the individual examples given here, you can look at the sources: - [tests of the entire library](https://github.com/orefkov/simstr/blob/main/tests/test_str.cpp) - [tests of only the strexpr part](https://github.com/orefkov/simstr/blob/main/tests/test_expr_only.cpp) +- [examples of using your types in string expressions](https://github.com/orefkov/simstr/blob/main/tests/test_tostrexpr.cpp) - [benchmarks](https://github.com/orefkov/simstr/blob/main/bench/bench_str.cpp) - [utility for preparing html](https://github.com/orefkov/simstr/blob/main/bench/process_result.cpp) from benchmark results. -## Main objects of the library +## Main Objects of the Library Available with any use: - `simple_str` - the simplest string (or piece of string), immutable, not owning, analogue of `std::string_view`. - `simple_str_nt` - the same, only declares that it ends with 0. For working with third-party C-API. Available when using the entire library: -- `sstring` - shared string, immutable, owning, with shared character buffer, SSO support. +- `sstring` - shared string, immutable, owning, with a shared character buffer, SSO support. - `lstring` - local string, mutable, owning, with a specified size of the SSO buffer. When connecting only `strexpr.h` - the types `simple_str` and `simple_str_nt` do not contain methods for working with UTF and Unicode. ## Articles - [Overview and introduction](docs/overview.md) -- [Overview article on Habr](https://habr.com/ru/articles/935590) (On Russian) -- [Description of the "Expression Templates" technique used](https://habr.com/ru/articles/936468/) (On Russian) +- [Overview article on Habr](https://habr.com/ru/articles/935590) (on Russian) +- [Description of the applied technique "Expression Templates"](https://habr.com/ru/articles/936468/)(on Russian) ## Usage -The library can be used partially, just by taking the file `"include/simstr/strexpr.h"` and including it in your sources +The library can be used partially, simply by taking the file `"include/simstr/strexpr.h"` and including it in your sources ```cpp #include "include/simstr/strexpr.h" ``` @@ -293,7 +314,7 @@ You can connect as a CMake project via `add_subdirectory` (the `simstr` library) you can simply include the files in your project. Building also requires [simdutf](https://github.com/simdutf/simdutf) (when using CMake it is downloaded automatically). -### Using FetchContent +### Connection via FetchContent ``` function(add_simstr) set(SIMSTR_BUILD_TESTS OFF) @@ -302,7 +323,7 @@ function(add_simstr) simstr GIT_REPOSITORY https://github.com/orefkov/simstr.git GIT_SHALLOW TRUE - GIT_TAG tags/rel1.6.0 # Укажите нужный релиз + GIT_TAG tags/rel1.6.0 # Specify the desired release FIND_PACKAGE_ARGS NAMES simstr 1.6.0 ) FetchContent_MakeAvailable(simstr) @@ -315,31 +336,17 @@ target_link_libraries( PUBLIC simstr::simstr) The library is also included in [vcpkg](https://vcpkg.io), connected as `orefkov-simstr`. -`simstr` requires a compiler of at least the C++20 standard - concepts and std::format are used. -The work was tested under Windows on MSVC-19 and Clang-19, under Linux - on GCC-13 and Clang-21. -The work in WASM was also tested, built in Emscripten 4.0.6, Clang-21. +For `simstr` to work, a compiler of the standard no lower than C++20 is required - concepts and std::format are used. +The work was checked under Windows on MSVC-19 and Clang-19, under Linux - on GCC-13 and Clang-21. +The work in WASM was also checked, built in Emscripten 4.0.6, Clang-21. - -## Convenient debugging -Together with the library, two files are supplied that make viewing simstr string objects in debuggers +## Convenient Debugging +Along with the library, two files are supplied that make viewing simstr string objects in debuggers more convenient.\ More details are described [here](for_debug/readme_ru.md). -## Benchmarks -Benchmarks are performed using the [Google benchmark](https://github.com/google/benchmark) framework. -I tried to take measurements for the most typical operations that occur in normal work. I took measurements on my equipment, under -Windows and Linux (in WSL), using MSVC, Clang, GCC compilers. Third-party results are welcome. -I also took measurements in WASM, built in Emscripten. I draw your attention to the fact that a 32-bit build is assembled under WASM in Emscripten, which means that -the sizes of SSO buffers in objects are smaller. - -- [Source code of benchmarks](bench/bench_str.cpp) -- [Benchmark results](https://orefkov.github.io/simstr/results.html) - -Also, simstr is used in my projects: +## Where it is already used +Simstr is also used in my projects: - [simjson](https://github.com/orefkov/simjson) - a library for simple work with JSON using simstr strings. -- [simrex](https://github.com/orefkov/simrex) - wrapper for working with regular expressions [Oniguruma](https://github.com/kkos/oniguruma) using simstr strings. -- [v8sqlite](https://github.com/orefkov/v8sqlite) - external component for 1C-Enterprise V8 for working with sqlite. - - -## Generated documentation -[Located here](https://orefkov.github.io/simstr/docs_en/) +- [simrex](https://github.com/orefkov/simrex) - a wrapper for working with regular expressions [Oniguruma](https://github.com/kkos/oniguruma) using simstr strings. +- [v8sqlite](https://github.com/orefkov/v8sqlite) - an external component for 1C-Enterprise V8 for working with sqlite. diff --git a/readme_ru.md b/readme_ru.md index 6f50b63..be6eb43 100644 --- a/readme_ru.md +++ b/readme_ru.md @@ -1,14 +1,18 @@ # simstr - библиотека строковых объектов и функций -

    Ускорь работу со строками в 2-10 раз!

    +On English | По-английски [![CMake on multiple platforms](https://github.com/orefkov/simstr/actions/workflows/cmake-multi-platform.yml/badge.svg)](https://github.com/orefkov/simstr/actions/workflows/cmake-multi-platform.yml) Версия 1.6.0. -On English | По-английски +

    Ускорь работу со строками в 2-10 раз!

    + В этой библиотеке содержится современная реализация нескольких видов строковых объектов и различных алгоритмов для работы со строками. +## Сгенерированная документация +[Находится здесь](https://orefkov.github.io/simstr/docs_ru/) +## Краткое описание Цель библиотеки - сделать работу со строками в С++ такой же простой и лёгкой, как во множестве других языков, особенно скриптовых, но при этом сохранив оптимальность и производительность на уровне С и C++, и даже улучшив их. @@ -95,6 +99,22 @@ сравнения ключей по сравнению с ключами `std::string`. Поддерживается возможность регистро-независимого сравнения ключей (Ascii или минимальный Unicode (см. предыдущий пункт)). +## Бенчмарки +Бенчмарки производятся с использованием фреймворка [Google benchmark](https://github.com/google/benchmark). +Постарался сделать замеры для наиболее типичных операций, встречающихся в обычной работе. Я проводил замеры на своём оборудовании, под +Windows и Linux (в WSL), с использованием компиляторов MSVC, Clang, GCC. Сторонние результаты приветствуются. +Также проводил замеры в WASM, сборка в Emscripten. Обращаю внимание, что под WASM в Emscripten собирается 32-битная сборка, а значит, +размеры буферов SSO в объектах меньше. + +На [странице релизов](https://github.com/orefkov/simstr/releases) вы можете скачать бинарные сборки бенчмарков и запустить их на своём оборудовании. + +Также вы можете запустить [Emscripten сборку бенчмарков](https://orefkov.github.io/simstr/bench/benchStr.html) прямо в браузере. +(Перед переходом по ссылке лучше предварительно откройте "Инструменты разработчика" (обычно **F12**), чтобы видеть консоль +Javascript, так как до окончания бенчмарков страница не будет обновляться, а весь вывод будет виден в консоли). + +- [Исходный код бенчмарков](bench/bench_str.cpp) +- [Результаты бенчмарков](https://orefkov.github.io/simstr/results.html) + ## Строковые выражения Это специальные объекты, которые эффективно реализуют конкатенацию строк, с помощью `operator+`. Главный принцип, за счёт которого достигается эффективная работа - сколько бы операндов не входило во всё выражение, @@ -263,6 +283,7 @@ int split_and_calc_total_sim(ssa numbers, ssa delimiter) { Помимо приведённых здесь отдельных примеров, можно посмотреть исходники: - [тестов всей библиотеки](https://github.com/orefkov/simstr/blob/main/tests/test_str.cpp) - [тестов только strexpr части](https://github.com/orefkov/simstr/blob/main/tests/test_expr_only.cpp) +- [примеры использования своих типов в строковых выражениях](https://github.com/orefkov/simstr/blob/main/tests/test_tostrexpr.cpp) - [бенчмарков](https://github.com/orefkov/simstr/blob/main/bench/bench_str.cpp) - [утилиты подготовки html](https://github.com/orefkov/simstr/blob/main/bench/process_result.cpp) из результатов бенчмарков. @@ -320,27 +341,13 @@ target_link_libraries( PUBLIC simstr::simstr) Работа проверялась под Windows на MSVC-19 и Clang-19, под Linux - на GCC-13 и Clang-21. Также проверялась работа в WASM, сборка в Emscripten 4.0.6, Clang-21. - ## Удобная отладка Вместе с библиотекой поставляются два файла, делающие просмотр simstr строковых объектов в отладчиках более удобным.\ Более подробно описано [здесь](for_debug/readme_ru.md). -## Бенчмарки -Бенчмарки производятся с использованием фреймворка [Google benchmark](https://github.com/google/benchmark). -Постарался сделать замеры для наиболее типичных операций, встречающихся в обычной работе. Я проводил замеры на своём оборудовании, под -Windows и Linux (в WSL), с использованием компиляторов MSVC, Clang, GCC. Сторонние результаты приветствуются. -Также проводил замеры в WASM, сборка в Emscripten. Обращаю внимание, что под WASM в Emscripten собирается 32-битная сборка, а значит, -размеры буферов SSO в объектах меньше. - -- [Исходный код бенчмарков](bench/bench_str.cpp) -- [Результаты бенчмарков](https://orefkov.github.io/simstr/results.html) - +## Где уже используется Также simstr используется в моих проектах: - [simjson](https://github.com/orefkov/simjson) - библиотека для простой работы с JSON с использованием строк simstr. - [simrex](https://github.com/orefkov/simrex) - обёртка для работы с регулярными выражениями [Oniguruma](https://github.com/kkos/oniguruma) с использованием строк simstr. - [v8sqlite](https://github.com/orefkov/v8sqlite) - внешняя компонента для 1С-Предприятия V8 для работы с sqlite. - - -## Сгенерированная документация -[Находится здесь](https://orefkov.github.io/simstr/docs_ru/)