From 928ed1af23337e67729d2a4e8179357fc287a156 Mon Sep 17 00:00:00 2001 From: Aleksandr Orefkov Date: Fri, 30 Jan 2026 17:30:09 +0300 Subject: [PATCH] - Add new string class - cestring, constexpr string. Worked in consteval. - Change lstring allocation align to 16 bytes. - Update version to 1.6.1 --- CMakeLists.txt | 2 +- bench/bench_str.cpp | 50 +- bench/results.html | 895 ++++----- ... E5-2682 v4, Ubuntu 22 (WSL), Clang-21.txt | 1670 ++++++++-------- ...on E5-2682 v4, Ubuntu 22 (WSL), GCC-13.txt | 1668 ++++++++-------- ...-Xeon E5-2682 v4, Windows 10, Clang-19.txt | 1702 ++++++++-------- ...3-Xeon E5-2682 v4, Windows 10, MSVC-19.txt | 1704 +++++++++-------- ...eon E5-2682 v4, WASM Firefox, Clang-21.txt | 1678 ++++++++-------- docs/Doxyfile | 2 +- docs/Doxyfile_ru | 2 +- include/simstr/simple_unicode.h | 2 +- include/simstr/sstring.h | 200 +- include/simstr/strexpr.h | 4 +- readme.md | 6 +- readme_ru.md | 6 +- src/sstring.cpp | 2 +- tests/test_expr_only.cpp | 2 +- tests/test_str.cpp | 55 +- tests/test_tostrexpr.cpp | 2 +- 19 files changed, 4991 insertions(+), 4661 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 922f48e..0917e20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ include(FetchContent) project( simstr - VERSION 1.6.0 + VERSION 1.6.1 DESCRIPTION "Yet another modern C++ string library" HOMEPAGE_URL "https://github.com/orefkov/simstr" LANGUAGES CXX diff --git a/bench/bench_str.cpp b/bench/bench_str.cpp index 1453f75..0a7204a 100644 --- a/bench/bench_str.cpp +++ b/bench/bench_str.cpp @@ -69,24 +69,54 @@ BENCHMARK(ConcatSimToStd) ->Name("Concat std::string and number by StrExpr BENCHMARK(ConcatSimToSim) ->Name("Concat stringa and number by StrExpr to simstr::stringa"); BENCHMARK(ConcatSimToSimConcat) ->Name("Concat stringa and number by e_concat to simstr::stringa"); -void ConcatStdToStdHex(benchmark::State& state) { +void ConcatStdToFmtHex(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 "; for (auto _: state) { for (unsigned i = 1; i <= 100'000; i *= 10) { benchmark::DoNotOptimize(s1); - // What is standard method to get hex number? - std::string str = std::format("{}0x{:x} end", s1, i); + // It is not worked for char8_t, char16_t, char32_t :( + std::string str = s1 + std::format("{:#x}", i) + " end"; benchmark::DoNotOptimize(str); } } } + +void ConcatAllFmtToHex(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 "; + for (auto _: state) { + for (unsigned i = 1; i <= 100'000; i *= 10) { + benchmark::DoNotOptimize(s1); + // It is not worked for char8_t, char16_t, char32_t :( + std::string str = std::format("{}{:#x} end", s1, i); + benchmark::DoNotOptimize(str); + } + } +} +void ConcatStdToCharsHex(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 "; + for (auto _: state) { + for (unsigned i = 1; i <= 100'000; i *= 10) { + benchmark::DoNotOptimize(s1); + // it worked only for char :( + char buf[40]; + size_t len = std::to_chars(buf, buf + std::size(buf), i, 16).ptr - buf; + std::string str = s1 + "0x" + std::string(buf, len) + " end"; + benchmark::DoNotOptimize(str); + } + } +} + + void 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 "; for (auto _: state) { for (unsigned i = 1; i <= 100'000; i *= 10) { benchmark::DoNotOptimize(s1); + // Can work for all types of symbols std::string str = +s1 + e_hex(i) + " end"; benchmark::DoNotOptimize(str); } @@ -99,6 +129,7 @@ void ConcatSimToSimHex(benchmark::State& state) { for (auto _: state) { for (unsigned i = 1; i <= 100'000; i *= 10) { benchmark::DoNotOptimize(s1); + // Can work for all types of symbols stringa str = s1 + e_hex(i) + " end"; benchmark::DoNotOptimize(str); } @@ -111,6 +142,7 @@ void ConcatSimToSimHexC(benchmark::State& state) { for (auto _: state) { for (unsigned i = 1; i <= 100'000; i *= 10) { benchmark::DoNotOptimize(s1); + // Can work for all types of symbols stringa str = e_concat("", s1, e_hex(i), " end"); benchmark::DoNotOptimize(str); } @@ -130,11 +162,13 @@ void ConcatSimToSimHexS(benchmark::State& state) { } BENCHMARK(__)->Name("----- Concatenate string + Hex Number + \"Literal\" ---------")->Repetitions(1); -BENCHMARK(ConcatStdToStdHex) ->Name("Concat std::string and hex number by std to std::string"); -BENCHMARK(ConcatSimToStdHex) ->Name("Concat std::string and hex number by StrExpr to std::string"); -BENCHMARK(ConcatSimToSimHex) ->Name("Concat stringa and hex number by StrExpr to simstr::stringa"); -BENCHMARK(ConcatSimToSimHexC) ->Name("Concat stringa and hex number by e_concat to simstr::stringa"); -BENCHMARK(ConcatSimToSimHexS) ->Name("Concat stringa and hex number by e_subst to simstr::stringa"); +BENCHMARK(ConcatStdToFmtHex) ->Name("Concat std::string and format hex number and literal to std::string"); +BENCHMARK(ConcatAllFmtToHex) ->Name("std::format std::string and hex number by literal to std::string"); +BENCHMARK(ConcatStdToCharsHex) ->Name("Concat std::string and std::tochars and string to std::string"); +BENCHMARK(ConcatSimToStdHex) ->Name("Concat std::string and hex number and literal by StrExpr to std::string"); +BENCHMARK(ConcatSimToSimHex) ->Name("Concat stringa and hex number and literal by StrExpr to simstr::stringa"); +BENCHMARK(ConcatSimToSimHexC) ->Name("Concat stringa and hex number and literal by e_concat to simstr::stringa"); +BENCHMARK(ConcatSimToSimHexS) ->Name("Subst stringa and hex number by e_subst literal to simstr::stringa"); void ConcatStdToStdS(benchmark::State& state) { std::string s1 = "start "; diff --git a/bench/results.html b/bench/results.html index 043489a..d9228d2 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.00, 0.00 +Load Average: 0.01, 0.41, 0.63 ***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); } } -}219209265386862 +}219201263314947 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); } } -}105104178266384 +}104103152227409 Concat stringa and number by StrExpr to simstr::stringavoid ConcatSimToSim(benchmark::State& state) { stra s1 = "start "; for (auto _: state) { @@ -336,7 +336,7 @@ 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.66.381.566.5128196 +while in stringa , the entire test is included in SSO.65.473.767.5112225 Concat stringa and number by e_concat to simstr::stringavoid ConcatSimToSimConcat(benchmark::State& state) { stra s1 = "start "; for (auto _: state) { @@ -346,62 +346,91 @@ while in stringa , the entire test is included in SSO.68.880.274.9145193 +}72.685.774.8116221

    # Concatenate string + Hex Number + "Literal"

    - - + + + - + - + - + +}
    Benchmark nameCommentXeon E5-2682 v4, Ubuntu 22 (WSL), Clang-21Xeon E5-2682 v4, Ubuntu 22 (WSL), GCC-13Xeon E5-2682 v4, Windows 10, Clang-19Xeon E5-2682 v4, Windows 10, MSVC-19Xeon E5-2682 v4, WASM Firefox, Clang-21
    Concat std::string and hex number by std to std::stringvoid ConcatStdToStdHex(benchmark::State& state) { +
    Concat std::string and format hex number and literal to std::stringvoid ConcatStdToFmtHex(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 "; for (auto _: state) { for (unsigned i = 1; i <= 100'000; i *= 10) { benchmark::DoNotOptimize(s1); - // What is standard method to get hex number? - std::string str = std::format("{}0x{:x} end", s1, i); + // It is not worked for char8_t, char16_t, char32_t :( + std::string str = s1 + std::format("{:#x}", i) + " end"; benchmark::DoNotOptimize(str); } } -}861935151820921594
    Concat std::string and hex number by StrExpr to std::stringvoid ConcatSimToStdHex(benchmark::State& state) { +}68666071710641426
    std::format std::string and hex number by literal to std::stringvoid ConcatAllFmtToHex(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 "; for (auto _: state) { for (unsigned i = 1; i <= 100'000; i *= 10) { benchmark::DoNotOptimize(s1); + // It is not worked for char8_t, char16_t, char32_t :( + std::string str = std::format("{}{:#x} end", s1, i); + benchmark::DoNotOptimize(str); + } + } +}868915150218521603
    Concat std::string and std::tochars and string to std::stringvoid ConcatStdToCharsHex(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 "; + for (auto _: state) { + for (unsigned i = 1; i <= 100'000; i *= 10) { + benchmark::DoNotOptimize(s1); + // it worked only for char :( + char buf[40]; + size_t len = std::to_chars(buf, buf + std::size(buf), i, 16).ptr - buf; + std::string str = s1 + "0x" + std::string(buf, len) + " end"; + benchmark::DoNotOptimize(str); + } + } +}203190193253669
    Concat std::string and hex number and literal 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 "; + for (auto _: state) { + for (unsigned i = 1; i <= 100'000; i *= 10) { + benchmark::DoNotOptimize(s1); + // Can work for all types of symbols std::string str = +s1 + e_hex<HexFlags::Short>(i) + " end"; benchmark::DoNotOptimize(str); } } -}86.469.681.0182371
    Concat stringa and hex number by StrExpr to simstr::stringavoid ConcatSimToSimHex(benchmark::State& state) { +}13212480.5114414
    Concat stringa and hex number and literal 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 "; for (auto _: state) { for (unsigned i = 1; i <= 100'000; i *= 10) { benchmark::DoNotOptimize(s1); + // Can work for all types of symbols stringa str = s1 + e_hex<HexFlags::Short>(i) + " end"; benchmark::DoNotOptimize(str); } } -}75.870.476.6124185
    Concat stringa and hex number by e_concat to simstr::stringavoid ConcatSimToSimHexC(benchmark::State& state) { +}11612072.0105208
    Concat stringa and hex number and literal 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); + // Can work for all types of symbols 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) { +}11712781.6106219
    Subst stringa and hex number by e_subst literal 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) { @@ -411,13 +440,15 @@ while in stringa , the entire test is included in SSO.150157150266402
    184167152175464

    # Concatenate string + "Literal"

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

    # Find three concatenated string in string_view

    @@ -463,20 +494,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"); -}112135205265173 +}125131219224190 Find concat three strexprsize_t find_pos_exp(ssa src, ssa name) { return src.find(std::string{"\n- " + name + " -\n"}); -}50.644.3114150110 +}52.941.2132125106 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.22.853.421.532.476.2 +it is collected in a stack-based buffer, without allocation or deallocation.20.220.027.728.676.2

    # Build Type Name

    @@ -491,19 +522,19 @@ it is collected in a stack-based buffer, without allocation or deallocation.7.1710.18.2220.915.2 +}7.3110.08.2518.218.1 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.737.227.6214.815.8 +}6.866.307.7912.717.7 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; -}5.575.458.1918.315.6 +}4.964.857.8316.716.7 BuildTypeNameStr 10/10std::string buildTypeNameStr(std::string_view type_name, size_t prec, size_t scale) { std::string res{type_name}; if (prec) { @@ -514,26 +545,26 @@ it is collected in a stack-based buffer, without allocation or deallocation.57.286.464.1100253 +}57.677.663.180.2282 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; -}31.124.933.948.092.7 +}31.026.235.139.599.9 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; -}24.722.225.344.665.5 +}25.822.225.737.369.9

    # Replace string by copy

    @@ -554,15 +585,15 @@ it is collected in a stack-based buffer, without allocation or deallocation."; -}202231312430411 +}205238308347475 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.151139228278243 +simstr has a string expression for replacing substrings out of the box.148132217241256

    # Create Empty Str

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

    # Create Str from short literal (9 symbols)

    @@ -630,7 +661,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.822.902.33 +time is spent only copying 10 bytes.1.861.851.862.572.34 std::string_view e = "Test text";template<typename T> void CreateShortLiteral(benchmark::State& state) { for (auto _: state) { @@ -640,14 +671,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.7390.8060.7692.051.24 +a pointer to text and its length.0.7330.7470.7281.851.25 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.3690.7500.3652.030.968 +}0.3740.7380.3621.820.999 stringa e = "Test text";template<typename T> void CreateShortLiteral(benchmark::State& state) { for (auto _: state) { @@ -657,7 +688,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.151.121.082.872.16 +only a pointer to the text and its length.1.101.101.112.572.19 lstringa<20> e = "Test text";template<typename T> void CreateShortLiteral(benchmark::State& state) { for (auto _: state) { @@ -667,21 +698,21 @@ void CreateShortLiteral(benchmark::State& state) { } >> Внутреннего буфера хватает для размещения символов, время уходит только на копирование байтов. The internal buffer is sufficient to accommodate characters; -time is spent only on copying bytes.1.941.921.852.962.65 +time is spent only on copying bytes.1.861.841.832.602.67 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.881.881.872.952.61 +}1.861.831.892.622.82

    # Create Str from long literal (30 symbols)

    @@ -697,7 +728,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...19.619.572.196.316.0 +But how much slower is allocation under Windows than under Linux, 20 ns vs. 70 ns...18.718.971.275.916.2 std::string_view e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { @@ -707,14 +738,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.7710.7440.7342.061.28 +remember the pointer to the text and its size.0.7430.7330.7221.831.27 ssa e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { T empty_string{LONG_TEXT}; benchmark::DoNotOptimize(empty_string); } -}0.3820.7380.3602.060.971 +}0.3780.7330.3631.840.995 stringa e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { @@ -722,7 +753,7 @@ void CreateLongLiteral(benchmark::State& state) { benchmark::DoNotOptimize(empty_string); } } >> stringa на константных литералах не отстает! -stringa doesn't lag behind on constant literals!1.131.111.083.002.18 +stringa doesn't lag behind on constant literals!1.121.161.092.222.24 lstringa<20> e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { @@ -731,7 +762,7 @@ void CreateLongLiteral(benchmark::State& state) { } } >> lstringa<20> может вместить в себя до 23 символов, Очевидно, что для 30-и символов уже нужна аллокация. -Obviously, 30 characters already require allocation.24.323.074.597.116.5 +Obviously, 30 characters already require allocation.20.620.772.475.616.5 lstringa<40> e = "123456789012345678901234567890";template<typename T> void CreateLongLiteral(benchmark::State& state) { for (auto _: state) { @@ -741,14 +772,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.601.962.523.653.00 +bytes are simply copied.2.571.882.533.302.96

    # Create copy of Str with 9 symbols

    @@ -762,7 +793,7 @@ void CopyShortString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> Строка в пределах SSO, так что просто копирует байты. -The string is within the SSO, so it just copies the bytes.5.674.971.845.612.21 +The string is within the SSO, so it just copies the bytes.4.916.001.845.112.22 std::string_view e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -771,7 +802,7 @@ void CopyShortString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}0.3770.3990.3733.951.26 +}0.3680.3780.3633.801.23 ssa e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -783,7 +814,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.3870.3810.3633.921.24 +string information is copied.0.3760.3930.3673.801.23 stringa e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -795,7 +826,7 @@ void CopyShortString(benchmark::State& state) { } >> Копирование stringa происходит быстро, особенно если она инициализирована литералом. Copying a stringa is fast, -especially if it is initialized with a literal.1.141.151.284.442.55 +especially if it is initialized with a literal.1.161.101.284.022.55 lstringa<20> e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -805,7 +836,7 @@ void CopyShortString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> В обоих случаях хватает внутреннего буфера. -In both cases, the internal buffer is sufficient.4.294.564.749.7215.2 +In both cases, the internal buffer is sufficient.4.544.475.197.7415.3 lstringa<40> e = "Test text"; auto c{e};template<typename T> void CopyShortString(benchmark::State& state) { T x{TEST_TEXT}; @@ -815,14 +846,14 @@ void CopyShortString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> Только копируются байты. -Only bytes are copied.4.204.614.709.6114.5 +Only bytes are copied.4.545.164.848.2014.6

    # Create copy of Str with 30 symbols

    @@ -837,7 +868,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...21.225.376.694.633.3 +SSO is no longer sufficient. And again, how allocation lags under Windows...19.324.175.077.235.5 std::string_view e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -845,7 +876,7 @@ void CopyLongString(benchmark::State& state) { T copy{x}; benchmark::DoNotOptimize(copy); } -}0.7370.7310.7141.941.27 +}0.7400.7380.7261.501.24 ssa e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -853,7 +884,7 @@ void CopyLongString(benchmark::State& state) { T copy{x}; benchmark::DoNotOptimize(copy); } -}0.3790.7310.3621.970.981 +}0.3680.7340.3621.481.02 stringa e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -864,7 +895,7 @@ void CopyLongString(benchmark::State& state) { } >> А вот у stringa копирование литерала не зависит от его длины, сравни с предыдущим бенчмарком. But with stringa, literal copying doesn't depend on its length, -compare with the previous benchmark.1.131.131.843.362.19 +compare with the previous benchmark.1.101.101.842.982.21 lstringa<20> e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -873,7 +904,7 @@ void CopyLongString(benchmark::State& state) { benchmark::DoNotOptimize(copy); } } >> Не влезает, аллокация. -Doesn't fit, allocation.20.722.579.197.115.7 +Doesn't fit, allocation.19.719.975.578.316.3 lstringa<40> e = "123456789012345678901234567890"; auto c{e};template<typename T> void CopyLongString(benchmark::State& state) { T x = LONG_TEXT; @@ -882,14 +913,14 @@ void CopyLongString(benchmark::State& state) { benchmark::DoNotOptimize(copy); } } >> Уложили во внутренний буфер. -Placed in the internal buffer.4.484.614.468.1614.2 +Placed in the internal buffer.4.534.474.477.0814.3

    # Find 9 symbols text in end of 99 symbols text

    @@ -911,7 +942,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.8.537.7438.246.354.4 +However, Windows and Linux are clearly in different weight classes.7.377.0539.240.845.7 std::string_view::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -926,7 +957,7 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}7.926.6838.245.056.9 +}7.467.4639.439.953.5 ssa::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -941,7 +972,7 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}7.086.4517.825.556.5 +}7.656.3817.722.251.0 stringa::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -956,7 +987,7 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}7.656.7818.734.460.3 +}7.646.7818.029.751.7 lstringa<20>::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -971,7 +1002,7 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}7.066.9519.634.152.4 +}6.936.8318.621.844.5 lstringa<40>::find;template<typename T> void Find(benchmark::State& state) { T x{LONG_TEXT LONG_TEXT LONG_TEXT TEST_TEXT}; @@ -986,14 +1017,14 @@ void Find(benchmark::State& state) { benchmark::DoNotOptimize(i); benchmark::DoNotOptimize(x); } -}6.796.8717.524.051.0 +}6.817.3617.621.144.2

    # Copy not literal Str with N symbols

    @@ -1006,7 +1037,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.985.031.804.9134.4 +}4.935.931.834.4036.2 std::string copy{str_with_len_N};/16template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1020,7 +1051,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.523.780.710734.6 +smaller, as far as I remember: 11 characters + 0.24.224.777.080.236.3 std::string copy{str_with_len_N};/23template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1030,7 +1061,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> Дальше просто добавляется время на копирование байтов. -Then the time for copying bytes is simply added.23.123.281.510035.2 +Then the time for copying bytes is simply added.24.925.476.681.435.6 std::string copy{str_with_len_N};/24template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1039,7 +1070,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}23.123.279.110434.8 +}22.624.078.579.736.4 std::string copy{str_with_len_N};/32template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1048,7 +1079,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}25.325.681.010841.2 +}22.723.783.986.840.9 std::string copy{str_with_len_N};/64template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1057,7 +1088,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}22.724.782.111337.9 +}22.723.980.984.240.6 std::string copy{str_with_len_N};/128template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1066,7 +1097,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}25.825.984.910439.8 +}23.925.387.486.242.3 std::string copy{str_with_len_N};/256template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1075,7 +1106,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}24.625.584.911059.6 +}23.925.684.488.162.6 std::string copy{str_with_len_N};/512template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1084,7 +1115,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}28.629.895.711057.3 +}28.430.186.391.562.1 std::string copy{str_with_len_N};/1024template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1093,7 +1124,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}47.046.495.912559.5 +}39.939.594.310166.3 std::string copy{str_with_len_N};/2048template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1102,7 +1133,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}12412413115082.2 +}11611413112999.3 std::string copy{str_with_len_N};/4096template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1112,7 +1143,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> Чем длиннее строка, тем дольше создаётся копия. -The longer the string, the longer it takes to create a copy.168158175206111 +The longer the string, the longer it takes to create a copy.151153192179153 stringa copy{str_with_len_N};/15template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1124,7 +1155,7 @@ void CopyDynString(benchmark::State& state) { } >> Здесь stringa инициализируется не литералом, а значит, должна сама хранить символы. Here, stringa is not initialized with a literal, -meaning it must store characters itself.1.101.121.314.442.54 +meaning it must store characters itself.1.111.121.294.012.55 stringa copy{str_with_len_N};/16template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1138,7 +1169,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.111.131.294.434.81 +increment was replaced with a regular one, judging by the time.1.101.091.284.074.83 stringa copy{str_with_len_N};/23template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1150,7 +1181,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.121.131.294.454.84 +copies faster than 15 in std::string.1.131.101.274.014.84 stringa copy{str_with_len_N};/24template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1162,7 +1193,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.116.115.819.14.89 +Time is added for the atomic counter increment.16.416.216.318.34.97 stringa copy{str_with_len_N};/32template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1171,7 +1202,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.016.216.019.04.85 +}16.316.015.918.64.92 stringa copy{str_with_len_N};/64template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1180,7 +1211,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.116.615.719.04.83 +}16.316.316.018.54.85 stringa copy{str_with_len_N};/128template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1189,7 +1220,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.316.115.918.94.93 +}16.416.115.818.64.84 stringa copy{str_with_len_N};/256template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1198,7 +1229,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.116.116.019.24.97 +}16.116.315.818.34.89 stringa copy{str_with_len_N};/512template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1207,7 +1238,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.116.115.918.95.06 +}16.116.215.718.54.84 stringa copy{str_with_len_N};/1024template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1216,7 +1247,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.216.616.119.14.81 +}16.116.115.818.34.89 stringa copy{str_with_len_N};/2048template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1225,7 +1256,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}16.216.916.118.94.86 +}16.117.915.718.34.88 stringa copy{str_with_len_N};/4096template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1237,7 +1268,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.516.516.019.14.76 +increment; copying time does not depend on the string length.16.017.815.818.54.93 lstringa<16> copy{str_with_len_N};/15template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1249,7 +1280,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.724.445.028.4914.1 +WASM has a 32-bit architecture, so SSO is up to 19 characters.4.634.444.427.4514.5 lstringa<16> copy{str_with_len_N};/16template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1258,7 +1289,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.564.464.968.6813.9 +}4.594.484.487.5414.2 lstringa<16> copy{str_with_len_N};/23template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1267,7 +1298,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.734.535.429.2228.7 +}4.554.785.057.4529.5 lstringa<16> copy{str_with_len_N};/24template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1277,7 +1308,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> И после начинает вести себя при копировании, как std::string. -And then it starts to behave like std::string when copied.25.626.978.195.629.4 +And then it starts to behave like std::string when copied.24.624.874.978.130.1 lstringa<16> copy{str_with_len_N};/32template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1286,7 +1317,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}24.123.884.710331.9 +}23.623.983.389.532.1 lstringa<16> copy{str_with_len_N};/64template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1295,7 +1326,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}25.525.682.410432.0 +}25.625.677.882.632.6 lstringa<16> copy{str_with_len_N};/128template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1304,7 +1335,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}29.027.187.210932.6 +}26.326.483.584.537.0 lstringa<16> copy{str_with_len_N};/256template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1313,7 +1344,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}27.230.693.770655.0 +}27.027.482.586.855.7 lstringa<16> copy{str_with_len_N};/512template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1322,7 +1353,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}30.430.093.010851.9 +}28.929.985.989.955.7 lstringa<16> copy{str_with_len_N};/1024template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1331,7 +1362,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}10598.899.612254.2 +}89.693.198.497.161.8 lstringa<16> copy{str_with_len_N};/2048template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1340,7 +1371,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}12011812714979.1 +}11310712712892.0 lstringa<16> copy{str_with_len_N};/4096template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1349,7 +1380,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}134135198211106 +}127128181186142 lstringa<512> copy{str_with_len_N};/15template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1358,7 +1389,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.935.214.949.8315.4 +}5.164.545.168.7714.4 lstringa<512> copy{str_with_len_N};/16template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1367,7 +1398,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}5.055.224.9310.215.5 +}4.844.505.228.4914.5 lstringa<512> copy{str_with_len_N};/23template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1376,7 +1407,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}5.295.394.719.6915.2 +}4.954.584.848.3615.3 lstringa<512> copy{str_with_len_N};/24template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1385,7 +1416,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}5.075.854.8710.215.0 +}4.874.494.828.4814.6 lstringa<512> copy{str_with_len_N};/32template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1394,7 +1425,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}4.544.857.6914.118.3 +}4.494.097.7911.418.1 lstringa<512> copy{str_with_len_N};/64template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1403,7 +1434,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}6.087.007.7913.717.7 +}6.105.627.7411.517.6 lstringa<512> copy{str_with_len_N};/128template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1412,7 +1443,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}6.397.118.6814.118.1 +}6.437.658.1712.218.2 lstringa<512> copy{str_with_len_N};/256template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1421,7 +1452,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}8.4216.49.4815.220.7 +}7.937.919.1213.019.8 lstringa<512> copy{str_with_len_N};/512template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1433,7 +1464,7 @@ void CopyDynString(benchmark::State& state) { } >> Даже 512 символов копируются быстрее, чем одна аллокация или атомарный инкремент. Even 512 characters are copied faster than a single -allocation or atomic increment.11.510.610.916.721.8 +allocation or atomic increment.19.923.010.814.322.1 lstringa<512> copy{str_with_len_N};/1024template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1443,7 +1474,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(x); } } >> А дальше уже как у всех. -And then it's like everyone else.94.198.498.511252.9 +And then it's like everyone else.93.292.210099.062.6 lstringa<512> copy{str_with_len_N};/2048template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1452,7 +1483,7 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}11211713215376.5 +}11711012813192.1 lstringa<512> copy{str_with_len_N};/4096template<typename T> void CopyDynString(benchmark::State& state) { T x(state.range(0), 'a'); @@ -1461,56 +1492,56 @@ void CopyDynString(benchmark::State& state) { benchmark::DoNotOptimize(copy); benchmark::DoNotOptimize(x); } -}129137199208105 +}128123187191147

    # Convert to int '1234567'

    @@ -1534,7 +1565,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.26.828.431.838.873.0 +Here, I attempted to run tests that are similar in logic to std::from_chars.26.927.031.052.071.1 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; @@ -1550,7 +1581,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.012.514.116.227.8 +signs, spaces, 0x prefixes, etc.14.812.214.013.827.4 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) { @@ -1567,7 +1598,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.69.3314.417.319.0 +decimal system, no leading spaces, and no plus sign.12.89.5214.115.419.1 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) { @@ -1581,7 +1612,7 @@ void ToIntSimStr10(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}12.68.0613.817.517.0 +}12.37.8213.415.317.2 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) { @@ -1595,13 +1626,13 @@ void ToIntSimStr10(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}12.38.3113.817.417.0 +}13.38.2014.114.717.2

    # Convert to unsigned 'abcDef'

    @@ -1618,7 +1649,7 @@ void ToIntSimStr10(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); } } >> Всё то же, только для 16ричной системы -Everything is the same, only for the hexadecimal system23.423.733.840.856.5 +Everything is the same, only for the hexadecimal system23.524.234.035.454.9 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; @@ -1631,7 +1662,7 @@ Everything is the same, only for the hexadecimal system9.809.698.3611.028.3 +}9.749.618.0912.328.6 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) { @@ -1645,7 +1676,7 @@ void ToIntSimStr16(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}12.58.6013.015.617.3 +}12.78.4812.414.117.5 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) { @@ -1659,7 +1690,7 @@ void ToIntSimStr16(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}12.68.2012.416.316.2 +}12.57.7812.113.917.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) { @@ -1673,13 +1704,13 @@ void ToIntSimStr16(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}13.08.1912.316.116.7 +}12.48.3712.214.216.1

    # Convert to int ' 1234567'

    @@ -1696,7 +1727,7 @@ void ToIntSimStr16(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); } } >> А здесь уже парсинг произвольного числа. -And here we have parsing of an arbitrary number.29.728.545.754.177.7 +And here we have parsing of an arbitrary number.28.128.543.245.377.8 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) { @@ -1710,7 +1741,7 @@ void ToIntSimStr0(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}18.315.019.522.624.6 +}18.515.018.619.224.0 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; @@ -1723,11 +1754,11 @@ void ToIntSimStr0(benchmark::State& state, T t, int c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}15.010.815.918.523.6 +}15.710.715.616.822.7

    # Convert to double '1234.567e10'

    @@ -1747,7 +1778,7 @@ void ToIntSimStr0(benchmark::State& state, T t, int c) { #endif benchmark::DoNotOptimize(res); } -}64.765.2104118196 +}67.666.5101102207 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; @@ -1762,7 +1793,7 @@ void ToIntSimStr0(benchmark::State& state, T t, int c) { #endif benchmark::DoNotOptimize(res); } -}27.525.662.195.8106 +}24.625.660.477.2107 ssa s = "1234.567e10"; double res = *s.to_double()template<typename T> void ToDoubleSimStr(benchmark::State& state, T t, double c) { for (auto _: state) { @@ -1780,11 +1811,11 @@ void ToDoubleSimStr(benchmark::State& state, T t, double c) { benchmark::DoNotOptimize(res); benchmark::DoNotOptimize(t); } -}26.124.835.841.043.1 +}27.525.134.936.642.2

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

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

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

    @@ -1918,7 +1949,7 @@ void AppendLstringConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(s1); } -}14411381453468654433 +}13601366464956604589 std::string str; ... str += str_var + "abbaabbaabbaabba";void AppendStdStrStrConstLiteral(benchmark::State& state) { std::string p1 = TEXT_16; for (auto _: state) { @@ -1935,7 +1966,7 @@ void AppendLstringConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}12661279380345071926 +}12561302393138391962 lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";template<unsigned N> void AppendLstringStrConstLiteral(benchmark::State& state) { stringa p1 = TEXT_16; @@ -1953,7 +1984,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}4824756981082804 +}458445745808905 lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";template<unsigned N> void AppendLstringStrConstLiteral(benchmark::State& state) { stringa p1 = TEXT_16; @@ -1971,7 +2002,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}366413446664726 +}335372453531768 lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";template<unsigned N> void AppendLstringStrConstLiteral(benchmark::State& state) { stringa p1 = TEXT_16; @@ -1989,7 +2020,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}325323293538597 +}333325298400648 lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";template<unsigned N> void AppendLstringStrConstLiteral(benchmark::State& state) { stringa p1 = TEXT_16; @@ -2007,14 +2038,14 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}235243205319523 +}236244208272533

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

    @@ -2037,7 +2068,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(s1); } -}7535975087226006323116218832 +}7681472361222544280515225107 std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 timesvoid AppendStdStrStrConstLiteralBig(benchmark::State& state) { std::string p1 = TEXT_16; for (auto _: state) { @@ -2054,7 +2085,7 @@ void AppendLstringStrConstLiteral(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}7562074728202060236019104650 +}8110475918200929192412105312 lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 timestemplate<unsigned N> void AppendLstringStrConstLiteralBig(benchmark::State& state) { stringa p1 = TEXT_16; @@ -2072,7 +2103,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}1877720069180252627739563 +}3557630423197282432543046 lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 timestemplate<unsigned N> void AppendLstringStrConstLiteralBig(benchmark::State& state) { stringa p1 = TEXT_16; @@ -2090,7 +2121,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}2018619059162172473738589 +}1802018518167712182239544 lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 timestemplate<unsigned N> void AppendLstringStrConstLiteralBig(benchmark::State& state) { stringa p1 = TEXT_16; @@ -2108,7 +2139,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}1602817233158262381037622 +}1553217088164472270638237 lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 timestemplate<unsigned N> void AppendLstringStrConstLiteralBig(benchmark::State& state) { stringa p1 = TEXT_16; @@ -2126,14 +2157,14 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(p1); } -}1579817586161772410338473 +}1619817198161872273338420

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

    @@ -2158,7 +2189,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}14391393460462334648 +}13621367448454094614 std::string str; ... str += str_var1 + str_var2;void AppendStdStr2String(benchmark::State& state) { std::string s1 = TEXT_16; std::string s2 = TEXT_16; @@ -2178,7 +2209,7 @@ void AppendLstringStrConstLiteralBig(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}13981436379744362346 +}13791440403938762454 lstringa<16> str; ... str += str_var1 + str_var2;template<unsigned N> void AppendLstring2String(benchmark::State& state) { stra s1 = TEXT_16; @@ -2198,7 +2229,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}54056081311981150 +}5635398379011218 lstringa<128> str; ... str += str_var1 + str_var2;template<unsigned N> void AppendLstring2String(benchmark::State& state) { stra s1 = TEXT_16; @@ -2218,7 +2249,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}4654465276731100 +}4834425226451105 lstringa<512> str; ... str += str_var1 + str_var2;template<unsigned N> void AppendLstring2String(benchmark::State& state) { stra s1 = TEXT_16; @@ -2238,7 +2269,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}398400381595934 +}399384390450945 lstringa<1024> str; ... str += str_var1 + str_var2;template<unsigned N> void AppendLstring2String(benchmark::State& state) { stra s1 = TEXT_16; @@ -2258,14 +2289,14 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s2); } -}323307278399867 +}293305294341897

    # Append text, number, text

    @@ -2286,7 +2317,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(k); } } -}3053307610665132406486 +}3010303810900115206454 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) { @@ -2301,7 +2332,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(k); } } -}479470105214041576 +}483455106012151599 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) { @@ -2318,7 +2349,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(k); } } -}14121714278932092894 +}13671524279028112891 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) { @@ -2333,7 +2364,7 @@ void AppendLstring2String(benchmark::State& state) { benchmark::DoNotOptimize(k); } } -}12081289190425392063 +}11581257188423842003 lstringa<8> str; str.format("test = {} times", k);template<typename T> void AppendSimStrStrNumStrF(benchmark::State& state) { for (auto _: state) { @@ -2352,7 +2383,7 @@ void AppendSimStrStrNumStrF(benchmark::State& state) { } } >> В simstr format с первого раза не помещается в такую строку без аллокации. In simstr format, the first time it doesn't fit into such a -string without allocation.13791588216831933409 +string without allocation.14531696207125903067 lstringa<32> str; str.format("test = {} times", k);template<typename T> void AppendSimStrStrNumStrF(benchmark::State& state) { for (auto _: state) { @@ -2370,7 +2401,7 @@ void AppendSimStrStrNumStrF(benchmark::State& state) { } } } >> А в такую помещается. Используйте сразу буфера подходящего размера. -And it fits in this one. Use buffers of the appropriate size right away.10791059102916592460 +And it fits in this one. Use buffers of the appropriate size right away.9771059104715922448 lstringa<8> str = "test = " + k + " times";template<typename T> void AppendSimStrStrNumStr(benchmark::State& state) { for (auto _: state) { @@ -2387,7 +2418,7 @@ void AppendSimStrStrNumStr(benchmark::State& state) { } } } >> Результат не помещается в SSO, возникает аллокация. -The result does not fit into SSO, an allocation occurs.313332807975611 +The result does not fit into SSO, an allocation occurs.298311840862591 lstringa<32> str = "test = " + k + " times";template<typename T> void AppendSimStrStrNumStr(benchmark::State& state) { for (auto _: state) { @@ -2406,7 +2437,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.154160155217345 +Once again, use appropriately sized buffers from the start.158165159179364 stringa str = "test = " + k + " times";template<typename T> void AppendSimStrStrNumStr(benchmark::State& state) { for (auto _: state) { @@ -2425,17 +2456,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.145167151276541 +enough to accommodate the result, hence the long time.148157167241565

    # Split text and convert to int

    @@ -2462,7 +2493,7 @@ enough to accommodate the result, hence the long time.283271539633609 +}290266535554637 ssa::splitter + ssa::as_intvoid SplitConvertIntSimStr(benchmark::State& state) { stra numbers = NUMBER_LIST; for (auto _: state) { @@ -2479,7 +2510,7 @@ enough to accommodate the result, hence the long time.159133173329269 +}156134158297291 ssa::splitf + functorvoid SplitConvertIntSplitf(benchmark::State& state) { stra numbers = NUMBER_LIST; for (auto _: state) { @@ -2494,11 +2525,11 @@ enough to accommodate the result, hence the long time.204131191240338 +}209129191217324

    # Replace symbols in text ~400 symbols

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

    # Replace symbols in text ~40 symbols

    @@ -2896,7 +2927,7 @@ void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}155175321384470 +}157164331331436 Short replace symbols with std::string find_first_of + replacevoid ShortReplaceSymbolsStdStringNaiveRight(benchmark::State& state) { std::string_view source = "abcdefg124 < jhsfjsh sjdfsh jfhjd && jdjdj >" @@ -2935,7 +2966,7 @@ void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}337319385475494 +}320347371435480 Short replace symbols with std::string_view find_first_of + copyvoid ShortReplaceSymbolsStdString(benchmark::State& state) { std::string_view source = "abcdefg124 < jhsfjsh sjdfsh jfhjd && jdjdj >" @@ -2973,7 +3004,7 @@ void ReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}164183330388413 +}164168320378409 Short replace runtime symbols with string expressions and without remembering all search resultstemplate<bool UseVector> void ShortReplaceSymbolsDynPatternSimStr(benchmark::State& state) { stra source = @@ -3005,7 +3036,7 @@ void ShortReplaceSymbolsDynPatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}193225269302380 +}179190258325396 Short replace runtime symbols with simstr and memorization of all search resultstemplate<bool UseVector> void ShortReplaceSymbolsDynPatternSimStr(benchmark::State& state) { stra source = @@ -3037,7 +3068,7 @@ void ShortReplaceSymbolsDynPatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(source); benchmark::DoNotOptimize(repl); } -}205206348434401 +}188185382386427 Short replace const symbols with string expressions and without remembering all search resultstemplate<bool UseVector> void ShortReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { stra source = @@ -3066,7 +3097,7 @@ void ShortReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}139162232260257 +}139157210257261 Short replace const symbols with string expressions and memorization of all search resultstemplate<bool UseVector> void ShortReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { stra source = @@ -3095,15 +3126,15 @@ void ShortReplaceSymbolsCons2PatternSimStr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}144156323345302 +}143149319347299

    # Replace All Str To Longer Size

    @@ -3140,7 +3171,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}160164232249371 +}166164228249370 replace bb to ---- in std::string|256template<size_t Long> void ReplaceAllLongerStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3173,7 +3204,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}5684927578101351 +}5274937738231328 replace bb to ---- in std::string|512template<size_t Long> void ReplaceAllLongerStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3206,7 +3237,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}11771119148215562646 +}1047980145615592633 replace bb to ---- in std::string|1024template<size_t Long> void ReplaceAllLongerStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3239,7 +3270,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}22942211315032295606 +}25762467315133255569 replace bb to ---- in std::string|2048template<size_t Long> void ReplaceAllLongerStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3272,7 +3303,7 @@ void ReplaceAllLongerStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}590359598049817412254 +}634165688263839312248 replace bb to ---- in lstringa<8>|64template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3294,7 +3325,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}245148304312332 +}146158229233298 replace bb to ---- in lstringa<8>|256template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3316,7 +3347,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}7774856066601116 +}4555096126631121 replace bb to ---- in lstringa<8>|512template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3338,7 +3369,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}1500893105411382117 +}815916106311242117 replace bb to ---- in lstringa<8>|1024template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3360,7 +3391,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}29071845183920564092 +}16851877186320353949 replace bb to ---- in lstringa<8>|2048template<size_t N, size_t Count> void ReplaceAllLongerSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3382,7 +3413,7 @@ void ReplaceAllLongerSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}59293614350339177783 +}31743516346538857688 replace bb to ---- by init stringa|64template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3403,7 +3434,7 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}129110183206212 +}98.9105172210204 replace bb to ---- by init stringa|256template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3424,7 +3455,7 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}356305374475725 +}304305390512730 replace bb to ---- by init stringa|512template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3445,7 +3476,7 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}77475182410561687 +}71073583910791709 replace bb to ---- by init stringa|1024template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3466,7 +3497,7 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}15831630168121523720 +}15761627167321613566 replace bb to ---- by init stringa|2048template<size_t Count> void ReplaceAllLongerSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3487,23 +3518,23 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}33953440311143217469 +}32123391313343147174

    # Replace All Str To Same Size

    @@ -3539,7 +3570,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}119118196215259 +}128121194210262 replace bb to -- in std::string|256template<size_t Long> void ReplaceAllEqualStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3571,7 +3602,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}451418487552941 +}402407475555964 replace bb to -- in std::string|512template<size_t Long> void ReplaceAllEqualStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3603,7 +3634,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}7827738999691842 +}7677108709681891 replace bb to -- in std::string|1024template<size_t Long> void ReplaceAllEqualStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3635,7 +3666,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}14921538168718203695 +}15421390159318203703 replace bb to -- in std::string|2048template<size_t Long> void ReplaceAllEqualStdString(benchmark::State& state) { std::string_view source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3667,7 +3698,7 @@ void ReplaceAllEqualStdString(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}30102919314835936890 +}29902901324835937154 replace bb to -- in lstringa<8>|64template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3688,7 +3719,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}209100179193219 +}97.3101184204223 replace bb to -- in lstringa<8>|256template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3709,7 +3740,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}855298440465797 +}298313444483775 replace bb to -- in lstringa<8>|512template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3730,7 +3761,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}18285517977881465 +}6105617768121462 replace bb to -- in lstringa<8>|1024template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3751,7 +3782,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}36611105154214472845 +}10811194143514902825 replace bb to -- in lstringa<8>|2048template<size_t N, size_t Long> void ReplaceAllEqualSimString(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3772,7 +3803,7 @@ void ReplaceAllEqualSimString(benchmark::State& state) { benchmark::DoNotOptimize(result); benchmark::DoNotOptimize(source); } -}76702117292728575530 +}20822106293429195495 replace bb to -- by init stringa|64template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3797,7 +3828,7 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}83.895.6156185178 +}82.296.9154178181 replace bb to -- by init stringa|256template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3822,7 +3853,7 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}236270349387634 +}260269350387646 replace bb to -- by init stringa|512template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3847,7 +3878,7 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}4855535836511214 +}4355126006721197 replace bb to -- by init stringa|1024template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3872,7 +3903,7 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}8831031109911962270 +}8651030109512462229 replace bb to -- by init stringa|2048template<size_t Count> void ReplaceAllEqualSimStringExpr(benchmark::State& state) { ssa source = "aaaaaaaaaaaaaaaaaaabbbaaaaaaaabbbbaaaaabaaaaaaaaaaaaaaaaaaaaabba"; @@ -3897,23 +3928,23 @@ void ReplaceAllEqualSimStringExpr(benchmark::State& state) { benchmark::DoNotOptimize(pattern); benchmark::DoNotOptimize(repl); } -}17171966207324084529 +}16621958206123074482

    # Hash Map insert and find

    @@ -3943,7 +3974,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.35955923722226379577342395543204846 +hashStrMapA, and then search for them in it.37219643615004383675641778533099563 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; @@ -3967,7 +3998,7 @@ hashStrMapA, and then search for them in it. >> То же самое c std::string и std::unordered_map -Same thing with std::string and std::unordered_map35992863711685581456358436693332883 +Same thing with std::string and std::unordered_map34818223642731526384352914373404147 hashStrMapA<size_t> emplace & find ssa;void HashMapSimSsa(benchmark::State& state) { for (auto _: state) { hashStrMapA<size_t> store; @@ -3992,7 +4023,7 @@ Same thing with std::string and std::unordered_map >> Теперь вставляем stringa, а ищем ssa -Now we insert stringa and search for ssa37410653706802350748039630343197797 +Now we insert stringa and search for ssa35811963606655343734538789283137768 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; @@ -4017,12 +4048,12 @@ Now we insert stringa and search for ssa >> Вставляем std::string, а ищем std::string_view -We insert std::string and look for std::string_view41881764055890677439362800803669143 +We insert std::string and look for std::string_view40984383902358632090665087463690206

    # Build Full Func Name

    @@ -4064,7 +4095,7 @@ We insert std::string and look for std::string_view709943161117162854 +return values. The algorithm uses std::string.724976152817962929 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 + "("; @@ -4096,7 +4127,7 @@ return values. The algorithm uses std::string. >> Почти тот же алгоритм, но несколько последовательных += к строке заменены на одно += + + +. Almost the same algorithm, but several consecutive -+= to a string are replaced with a single += + + +.8291022168118022988 ++= to a string are replaced with a single += + + +.8181053157316993048 Build func full name std::stream;std::string build_full_name_stream() const { std::ostringstream str; if (has_ret_type_resolver) { @@ -4130,7 +4161,7 @@ Almost the same algorithm, but several consecutive str << ")"; return str.str(); } >> Строим имя функции через std::ostringstream и << -We construct the function name through std::ostringstream and <<255226718266100116634 +We construct the function name through std::ostringstream and <<25742517814998106964 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 + "("; @@ -4148,7 +4179,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.50361282110611333 +Parameter information is appended to the current line.5064668169451410 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 + "("; @@ -4166,11 +4197,11 @@ Parameter information is appended to the current line.67065796312451547 +to be written in a single string, but is slightly slower in execution time.741694100110531605
    \ 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 b2d5673..725cf2b 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-29T21:42:24+03:00 +2026-01-30T16:10:26+03:00 Running ./benchStr Run on (32 X 2494.22 MHz CPU s) CPU Caches: @@ -6,7 +6,7 @@ CPU Caches: L1 Instruction 32 KiB (x16) L2 Unified 256 KiB (x16) L3 Unified 40960 KiB (x1) -Load Average: 0.00, 0.00, 0.00 +Load Average: 0.01, 0.41, 0.63 ***WARNING*** ASLR is enabled, the results may have unreproducible noise in them. -------------------------------------------------------------------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations @@ -14,877 +14,885 @@ Benchmark ----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 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 +Concat std::string and number by std to std::string_stddev 4.79 ns 4.79 ns 10 +Concat std::string and number by std to std::string_cv 2.19 % 2.19 % 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 2.67 ns 2.67 ns 10 +Concat std::string and number by StrExpr to std::string_cv 2.58 % 2.58 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 65.4 ns 65.4 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_median 65.2 ns 65.2 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_stddev 3.79 ns 3.79 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 5.79 % 5.79 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 72.6 ns 72.6 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 70.1 ns 70.1 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 6.18 ns 6.18 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 8.51 % 8.51 % 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 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 +Concat std::string and format hex number and literal to std::string_mean 686 ns 686 ns 10 +Concat std::string and format hex number and literal to std::string_median 684 ns 684 ns 10 +Concat std::string and format hex number and literal to std::string_stddev 18.1 ns 18.1 ns 10 +Concat std::string and format hex number and literal to std::string_cv 2.64 % 2.64 % 10 +std::format std::string and hex number by literal to std::string_mean 868 ns 868 ns 10 +std::format std::string and hex number by literal to std::string_median 867 ns 867 ns 10 +std::format std::string and hex number by literal to std::string_stddev 38.3 ns 38.3 ns 10 +std::format std::string and hex number by literal to std::string_cv 4.41 % 4.41 % 10 +Concat std::string and std::tochars and string to std::string_mean 203 ns 203 ns 10 +Concat std::string and std::tochars and string to std::string_median 204 ns 204 ns 10 +Concat std::string and std::tochars and string to std::string_stddev 7.11 ns 7.11 ns 10 +Concat std::string and std::tochars and string to std::string_cv 3.51 % 3.51 % 10 +Concat std::string and hex number and literal by StrExpr to std::string_mean 132 ns 132 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_median 131 ns 131 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_stddev 3.30 ns 3.30 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_cv 2.50 % 2.50 % 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 116 ns 116 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 116 ns 116 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 1.16 ns 1.16 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 1.00 % 1.00 % 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 117 ns 117 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_median 117 ns 117 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 2.09 ns 2.09 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 1.78 % 1.78 % 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_mean 184 ns 184 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_median 182 ns 182 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 8.04 ns 8.04 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_cv 4.37 % 4.37 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Concat std::string by std to std::string_mean 81.0 ns 81.0 ns 10 +Concat std::string by std to std::string_median 80.9 ns 80.9 ns 10 +Concat std::string by std to std::string_stddev 0.897 ns 0.897 ns 10 +Concat std::string by std to std::string_cv 1.11 % 1.11 % 10 +Concat std::string by StrExpr to std::string_mean 37.9 ns 37.9 ns 10 +Concat std::string by StrExpr to std::string_median 36.4 ns 36.4 ns 10 +Concat std::string by StrExpr to std::string_stddev 3.94 ns 3.94 ns 10 +Concat std::string by StrExpr to std::string_cv 10.38 % 10.38 % 10 +Concat stringa by StrExpr to stringa_mean 31.0 ns 31.0 ns 10 +Concat stringa by StrExpr to stringa_median 30.8 ns 30.8 ns 10 +Concat stringa by StrExpr to stringa_stddev 2.61 ns 2.61 ns 10 +Concat stringa by StrExpr to stringa_cv 8.42 % 8.42 % 10 ----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Find concat three std::string_mean 125 ns 125 ns 10 +Find concat three std::string_median 121 ns 121 ns 10 +Find concat three std::string_stddev 15.6 ns 15.6 ns 10 +Find concat three std::string_cv 12.40 % 12.40 % 10 +Find concat three strexpr_mean 52.9 ns 52.9 ns 10 +Find concat three strexpr_median 51.0 ns 51.0 ns 10 +Find concat three strexpr_stddev 4.50 ns 4.50 ns 10 +Find concat three strexpr_cv 8.50 % 8.50 % 10 +Find concat three simstr_mean 20.2 ns 20.2 ns 10 +Find concat three simstr_median 20.1 ns 20.1 ns 10 +Find concat three simstr_stddev 1.06 ns 1.06 ns 10 +Find concat three simstr_cv 5.22 % 5.22 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +BuildTypeNameStr 0/0_mean 7.31 ns 7.31 ns 10 +BuildTypeNameStr 0/0_median 7.28 ns 7.28 ns 10 +BuildTypeNameStr 0/0_stddev 0.146 ns 0.146 ns 10 +BuildTypeNameStr 0/0_cv 2.00 % 2.00 % 10 +BuildTypeNameExp 0/0_mean 6.86 ns 6.86 ns 10 +BuildTypeNameExp 0/0_median 6.75 ns 6.75 ns 10 +BuildTypeNameExp 0/0_stddev 0.227 ns 0.227 ns 10 +BuildTypeNameExp 0/0_cv 3.31 % 3.31 % 10 +BuildTypeNameSim 0/0_mean 4.96 ns 4.96 ns 10 +BuildTypeNameSim 0/0_median 4.97 ns 4.97 ns 10 +BuildTypeNameSim 0/0_stddev 0.071 ns 0.071 ns 10 +BuildTypeNameSim 0/0_cv 1.43 % 1.43 % 10 +BuildTypeNameStr 10/10_mean 57.6 ns 57.6 ns 10 +BuildTypeNameStr 10/10_median 57.1 ns 57.1 ns 10 +BuildTypeNameStr 10/10_stddev 2.30 ns 2.30 ns 10 +BuildTypeNameStr 10/10_cv 4.00 % 4.00 % 10 +BuildTypeNameExp 10/10_mean 31.0 ns 31.0 ns 10 +BuildTypeNameExp 10/10_median 30.7 ns 30.7 ns 10 +BuildTypeNameExp 10/10_stddev 1.08 ns 1.08 ns 10 +BuildTypeNameExp 10/10_cv 3.46 % 3.46 % 10 +BuildTypeNameSim 10/10_mean 25.8 ns 25.8 ns 10 +BuildTypeNameSim 10/10_median 26.3 ns 26.3 ns 10 +BuildTypeNameSim 10/10_stddev 2.64 ns 2.64 ns 10 +BuildTypeNameSim 10/10_cv 10.24 % 10.24 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Concat with replace str_mean 205 ns 205 ns 10 +Concat with replace str_median 206 ns 206 ns 10 +Concat with replace str_stddev 5.62 ns 5.62 ns 10 +Concat with replace str_cv 2.74 % 2.74 % 10 +Concat with replace exp_mean 148 ns 148 ns 10 +Concat with replace exp_median 145 ns 145 ns 10 +Concat with replace exp_stddev 9.06 ns 9.06 ns 10 +Concat with replace exp_cv 6.12 % 6.12 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e;_mean 1.12 ns 1.12 ns 10 +std::string e;_median 1.11 ns 1.11 ns 10 +std::string e;_stddev 0.024 ns 0.024 ns 10 +std::string e;_cv 2.18 % 2.18 % 10 +std::string_view e;_mean 0.368 ns 0.368 ns 10 +std::string_view e;_median 0.367 ns 0.367 ns 10 +std::string_view e;_stddev 0.007 ns 0.007 ns 10 +std::string_view e;_cv 1.97 % 1.97 % 10 +ssa e;_mean 0.365 ns 0.365 ns 10 +ssa e;_median 0.364 ns 0.364 ns 10 +ssa e;_stddev 0.006 ns 0.006 ns 10 +ssa e;_cv 1.67 % 1.67 % 10 +stringa e;_mean 0.749 ns 0.749 ns 10 +stringa e;_median 0.751 ns 0.751 ns 10 +stringa e;_stddev 0.014 ns 0.014 ns 10 +stringa e;_cv 1.80 % 1.80 % 10 +lstringa<20> e;_mean 1.22 ns 1.22 ns 10 +lstringa<20> e;_median 1.18 ns 1.18 ns 10 +lstringa<20> e;_stddev 0.101 ns 0.101 ns 10 +lstringa<20> e;_cv 8.29 % 8.29 % 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.036 ns 0.036 ns 10 -lstringa<40> e;_cv 3.24 % 3.24 % 10 +lstringa<40> e;_cv 3.21 % 3.21 % 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.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 +std::string e = "Test text";_mean 1.86 ns 1.86 ns 10 +std::string e = "Test text";_median 1.87 ns 1.87 ns 10 +std::string e = "Test text";_stddev 0.040 ns 0.040 ns 10 +std::string e = "Test text";_cv 2.14 % 2.14 % 10 +std::string_view e = "Test text";_mean 0.733 ns 0.733 ns 10 +std::string_view e = "Test text";_median 0.736 ns 0.736 ns 10 +std::string_view e = "Test text";_stddev 0.011 ns 0.011 ns 10 +std::string_view e = "Test text";_cv 1.53 % 1.53 % 10 +ssa e = "Test text";_mean 0.374 ns 0.374 ns 10 +ssa e = "Test text";_median 0.371 ns 0.371 ns 10 +ssa e = "Test text";_stddev 0.010 ns 0.010 ns 10 +ssa e = "Test text";_cv 2.59 % 2.59 % 10 +stringa e = "Test text";_mean 1.10 ns 1.10 ns 10 +stringa e = "Test text";_median 1.11 ns 1.11 ns 10 +stringa e = "Test text";_stddev 0.016 ns 0.016 ns 10 +stringa e = "Test text";_cv 1.44 % 1.44 % 10 +lstringa<20> e = "Test text";_mean 1.86 ns 1.86 ns 10 +lstringa<20> e = "Test text";_median 1.85 ns 1.85 ns 10 +lstringa<20> e = "Test text";_stddev 0.043 ns 0.043 ns 10 +lstringa<20> e = "Test text";_cv 2.32 % 2.32 % 10 +lstringa<40> e = "Test text";_mean 1.86 ns 1.86 ns 10 +lstringa<40> e = "Test text";_median 1.86 ns 1.86 ns 10 +lstringa<40> e = "Test text";_stddev 0.018 ns 0.018 ns 10 +lstringa<40> e = "Test text";_cv 0.95 % 0.95 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e = "123456789012345678901234567890";_mean 18.7 ns 18.7 ns 10 +std::string e = "123456789012345678901234567890";_median 18.7 ns 18.7 ns 10 +std::string e = "123456789012345678901234567890";_stddev 0.310 ns 0.310 ns 10 +std::string e = "123456789012345678901234567890";_cv 1.66 % 1.66 % 10 +std::string_view e = "123456789012345678901234567890";_mean 0.743 ns 0.743 ns 10 +std::string_view e = "123456789012345678901234567890";_median 0.733 ns 0.733 ns 10 +std::string_view e = "123456789012345678901234567890";_stddev 0.030 ns 0.030 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 4.10 % 4.10 % 10 +ssa e = "123456789012345678901234567890";_mean 0.378 ns 0.378 ns 10 +ssa e = "123456789012345678901234567890";_median 0.375 ns 0.375 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.015 ns 0.015 ns 10 +ssa e = "123456789012345678901234567890";_cv 3.86 % 3.86 % 10 +stringa e = "123456789012345678901234567890";_mean 1.12 ns 1.12 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 +stringa e = "123456789012345678901234567890";_stddev 0.020 ns 0.020 ns 10 +stringa e = "123456789012345678901234567890";_cv 1.75 % 1.75 % 10 +lstringa<20> e = "123456789012345678901234567890";_mean 20.6 ns 20.6 ns 10 +lstringa<20> e = "123456789012345678901234567890";_median 20.6 ns 20.6 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 1.03 ns 1.03 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 4.98 % 4.98 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 2.57 ns 2.57 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 2.57 ns 2.57 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.030 ns 0.030 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 1.16 % 1.16 % 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.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.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 +std::string e = "Test text"; auto c{e};_mean 4.91 ns 4.91 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.095 ns 0.095 ns 10 +std::string e = "Test text"; auto c{e};_cv 1.93 % 1.93 % 10 +std::string_view e = "Test text"; auto c{e};_mean 0.368 ns 0.368 ns 10 +std::string_view e = "Test text"; auto c{e};_median 0.369 ns 0.369 ns 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.007 ns 0.007 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 1.77 % 1.77 % 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.377 ns 0.377 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.012 ns 0.012 ns 10 +ssa e = "Test text"; auto c{e};_cv 3.11 % 3.11 % 10 +stringa e = "Test text"; auto c{e};_mean 1.16 ns 1.16 ns 10 +stringa e = "Test text"; auto c{e};_median 1.16 ns 1.16 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.064 ns 0.064 ns 10 +stringa e = "Test text"; auto c{e};_cv 5.57 % 5.57 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 4.54 ns 4.54 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 4.49 ns 4.49 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.186 ns 0.186 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 4.10 % 4.10 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 4.54 ns 4.54 ns 10 +lstringa<40> e = "Test text"; auto c{e};_median 4.50 ns 4.50 ns 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 0.203 ns 0.203 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 4.48 % 4.48 % 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 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.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 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 19.3 ns 19.3 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 19.1 ns 19.1 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 0.845 ns 0.845 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 4.37 % 4.37 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.740 ns 0.740 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.739 ns 0.739 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.012 ns 0.012 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.59 % 1.59 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.368 ns 0.368 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 0.368 ns 0.368 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.007 ns 0.007 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 1.91 % 1.91 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.10 ns 1.10 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 1.10 ns 1.10 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.008 ns 0.008 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 0.75 % 0.75 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 19.7 ns 19.7 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 19.7 ns 19.7 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.472 ns 0.472 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 2.39 % 2.39 % 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.46 ns 4.46 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.158 ns 0.158 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 3.49 % 3.49 % 10 ----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string::find;_mean 7.37 ns 7.37 ns 10 +std::string::find;_median 7.18 ns 7.18 ns 10 +std::string::find;_stddev 0.522 ns 0.522 ns 10 +std::string::find;_cv 7.09 % 7.09 % 10 +std::string_view::find;_mean 7.46 ns 7.46 ns 10 +std::string_view::find;_median 7.18 ns 7.18 ns 10 +std::string_view::find;_stddev 0.645 ns 0.645 ns 10 +std::string_view::find;_cv 8.64 % 8.64 % 10 +ssa::find;_mean 7.65 ns 7.65 ns 10 +ssa::find;_median 7.67 ns 7.67 ns 10 +ssa::find;_stddev 0.841 ns 0.841 ns 10 +ssa::find;_cv 11.01 % 11.01 % 10 +stringa::find;_mean 7.64 ns 7.64 ns 10 +stringa::find;_median 7.63 ns 7.63 ns 10 +stringa::find;_stddev 0.136 ns 0.136 ns 10 +stringa::find;_cv 1.78 % 1.78 % 10 +lstringa<20>::find;_mean 6.93 ns 6.93 ns 10 +lstringa<20>::find;_median 6.92 ns 6.92 ns 10 +lstringa<20>::find;_stddev 0.192 ns 0.192 ns 10 +lstringa<20>::find;_cv 2.77 % 2.77 % 10 +lstringa<40>::find;_mean 6.81 ns 6.81 ns 10 +lstringa<40>::find;_median 6.76 ns 6.76 ns 10 +lstringa<40>::find;_stddev 0.196 ns 0.196 ns 10 +lstringa<40>::find;_cv 2.88 % 2.88 % 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 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};/15_mean 4.93 ns 4.93 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.150 ns 0.150 ns 10 +std::string copy{str_with_len_N};/15_cv 3.04 % 3.04 % 10 +std::string copy{str_with_len_N};/16_mean 24.2 ns 24.2 ns 10 +std::string copy{str_with_len_N};/16_median 22.9 ns 22.9 ns 10 +std::string copy{str_with_len_N};/16_stddev 3.11 ns 3.11 ns 10 +std::string copy{str_with_len_N};/16_cv 12.86 % 12.86 % 10 +std::string copy{str_with_len_N};/23_mean 24.9 ns 24.9 ns 10 +std::string copy{str_with_len_N};/23_median 23.7 ns 23.7 ns 10 +std::string copy{str_with_len_N};/23_stddev 2.94 ns 2.94 ns 10 +std::string copy{str_with_len_N};/23_cv 11.80 % 11.80 % 10 +std::string copy{str_with_len_N};/24_mean 22.6 ns 22.6 ns 10 +std::string copy{str_with_len_N};/24_median 22.4 ns 22.4 ns 10 +std::string copy{str_with_len_N};/24_stddev 0.936 ns 0.936 ns 10 +std::string copy{str_with_len_N};/24_cv 4.13 % 4.13 % 10 +std::string copy{str_with_len_N};/32_mean 22.7 ns 22.7 ns 10 +std::string copy{str_with_len_N};/32_median 22.2 ns 22.2 ns 10 +std::string copy{str_with_len_N};/32_stddev 1.57 ns 1.57 ns 10 +std::string copy{str_with_len_N};/32_cv 6.89 % 6.89 % 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 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};/64_median 22.3 ns 22.3 ns 10 +std::string copy{str_with_len_N};/64_stddev 0.983 ns 0.983 ns 10 +std::string copy{str_with_len_N};/64_cv 4.33 % 4.33 % 10 +std::string copy{str_with_len_N};/128_mean 23.9 ns 23.9 ns 10 +std::string copy{str_with_len_N};/128_median 23.7 ns 23.7 ns 10 +std::string copy{str_with_len_N};/128_stddev 0.703 ns 0.703 ns 10 +std::string copy{str_with_len_N};/128_cv 2.94 % 2.94 % 10 +std::string copy{str_with_len_N};/256_mean 23.9 ns 23.9 ns 10 +std::string copy{str_with_len_N};/256_median 23.9 ns 23.9 ns 10 +std::string copy{str_with_len_N};/256_stddev 0.548 ns 0.548 ns 10 +std::string copy{str_with_len_N};/256_cv 2.29 % 2.29 % 10 +std::string copy{str_with_len_N};/512_mean 28.4 ns 28.4 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.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.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.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 +std::string copy{str_with_len_N};/512_stddev 0.814 ns 0.814 ns 10 +std::string copy{str_with_len_N};/512_cv 2.87 % 2.87 % 10 +std::string copy{str_with_len_N};/1024_mean 39.9 ns 39.9 ns 10 +std::string copy{str_with_len_N};/1024_median 40.2 ns 40.2 ns 10 +std::string copy{str_with_len_N};/1024_stddev 0.932 ns 0.932 ns 10 +std::string copy{str_with_len_N};/1024_cv 2.33 % 2.33 % 10 +std::string copy{str_with_len_N};/2048_mean 116 ns 116 ns 10 +std::string copy{str_with_len_N};/2048_median 115 ns 115 ns 10 +std::string copy{str_with_len_N};/2048_stddev 10.3 ns 10.3 ns 10 +std::string copy{str_with_len_N};/2048_cv 8.85 % 8.85 % 10 +std::string copy{str_with_len_N};/4096_mean 151 ns 151 ns 10 +std::string copy{str_with_len_N};/4096_median 152 ns 152 ns 10 +std::string copy{str_with_len_N};/4096_stddev 13.7 ns 13.7 ns 10 +std::string copy{str_with_len_N};/4096_cv 9.06 % 9.06 % 10 +stringa copy{str_with_len_N};/15_mean 1.11 ns 1.11 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.009 ns 0.009 ns 10 +stringa copy{str_with_len_N};/15_cv 0.78 % 0.78 % 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.012 ns 0.012 ns 10 +stringa copy{str_with_len_N};/16_cv 1.05 % 1.05 % 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.12 ns 1.12 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.035 ns 0.035 ns 10 +stringa copy{str_with_len_N};/23_cv 3.12 % 3.12 % 10 +stringa copy{str_with_len_N};/24_mean 16.4 ns 16.4 ns 10 +stringa copy{str_with_len_N};/24_median 16.3 ns 16.3 ns 10 +stringa copy{str_with_len_N};/24_stddev 0.300 ns 0.300 ns 10 +stringa copy{str_with_len_N};/24_cv 1.83 % 1.83 % 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.3 ns 16.3 ns 10 +stringa copy{str_with_len_N};/32_stddev 0.121 ns 0.121 ns 10 +stringa copy{str_with_len_N};/32_cv 0.74 % 0.74 % 10 +stringa copy{str_with_len_N};/64_mean 16.3 ns 16.3 ns 10 +stringa copy{str_with_len_N};/64_median 16.3 ns 16.3 ns 10 +stringa copy{str_with_len_N};/64_stddev 0.114 ns 0.114 ns 10 +stringa copy{str_with_len_N};/64_cv 0.70 % 0.70 % 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.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};/128_stddev 0.244 ns 0.244 ns 10 +stringa copy{str_with_len_N};/128_cv 1.49 % 1.49 % 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.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};/256_stddev 0.254 ns 0.254 ns 10 +stringa copy{str_with_len_N};/256_cv 1.58 % 1.58 % 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.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 +stringa copy{str_with_len_N};/512_median 16.0 ns 16.0 ns 10 +stringa copy{str_with_len_N};/512_stddev 0.246 ns 0.246 ns 10 +stringa copy{str_with_len_N};/512_cv 1.53 % 1.53 % 10 +stringa copy{str_with_len_N};/1024_mean 16.1 ns 16.1 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.173 ns 0.173 ns 10 +stringa copy{str_with_len_N};/1024_cv 1.08 % 1.08 % 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.0 ns 16.0 ns 10 +stringa copy{str_with_len_N};/2048_stddev 0.192 ns 0.192 ns 10 +stringa copy{str_with_len_N};/2048_cv 1.20 % 1.20 % 10 +stringa copy{str_with_len_N};/4096_mean 16.0 ns 16.0 ns 10 +stringa copy{str_with_len_N};/4096_median 16.0 ns 16.0 ns 10 +stringa copy{str_with_len_N};/4096_stddev 0.093 ns 0.093 ns 10 +stringa copy{str_with_len_N};/4096_cv 0.58 % 0.58 % 10 +lstringa<16> copy{str_with_len_N};/15_mean 4.63 ns 4.63 ns 10 +lstringa<16> copy{str_with_len_N};/15_median 4.64 ns 4.64 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.199 ns 0.199 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 4.29 % 4.29 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 4.59 ns 4.59 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 4.49 ns 4.49 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 0.244 ns 0.244 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 5.32 % 5.32 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 4.55 ns 4.55 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 4.47 ns 4.47 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 0.224 ns 0.224 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 4.93 % 4.93 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 24.6 ns 24.6 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 23.9 ns 23.9 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 2.10 ns 2.10 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 8.54 % 8.54 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 23.6 ns 23.6 ns 10 +lstringa<16> copy{str_with_len_N};/32_median 23.5 ns 23.5 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 0.705 ns 0.705 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 2.99 % 2.99 % 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.4 ns 25.4 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 1.05 ns 1.05 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 4.12 % 4.12 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 26.3 ns 26.3 ns 10 +lstringa<16> copy{str_with_len_N};/128_median 25.5 ns 25.5 ns 10 +lstringa<16> copy{str_with_len_N};/128_stddev 2.37 ns 2.37 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 9.03 % 9.03 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 27.0 ns 27.0 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 26.8 ns 26.8 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 1.20 ns 1.20 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 4.45 % 4.45 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 28.9 ns 28.9 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 28.9 ns 28.9 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 0.584 ns 0.584 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 2.02 % 2.02 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 89.6 ns 89.6 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 89.6 ns 89.6 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 7.13 ns 7.13 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 7.96 % 7.96 % 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.4 ns 12.4 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 10.99 % 10.99 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 127 ns 127 ns 10 +lstringa<16> copy{str_with_len_N};/4096_median 127 ns 127 ns 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 11.3 ns 11.3 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 8.94 % 8.94 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 5.16 ns 5.16 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 5.04 ns 5.04 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 0.353 ns 0.353 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 6.85 % 6.85 % 10 +lstringa<512> copy{str_with_len_N};/16_mean 4.84 ns 4.84 ns 10 +lstringa<512> copy{str_with_len_N};/16_median 4.83 ns 4.83 ns 10 +lstringa<512> copy{str_with_len_N};/16_stddev 0.119 ns 0.119 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 2.45 % 2.45 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 4.95 ns 4.95 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 4.95 ns 4.95 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 0.141 ns 0.141 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 2.85 % 2.85 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 4.87 ns 4.87 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 4.77 ns 4.77 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.250 ns 0.250 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 5.14 % 5.14 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 4.49 ns 4.49 ns 10 +lstringa<512> copy{str_with_len_N};/32_median 4.53 ns 4.53 ns 10 +lstringa<512> copy{str_with_len_N};/32_stddev 0.097 ns 0.097 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 2.15 % 2.15 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 6.10 ns 6.10 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 6.06 ns 6.06 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.225 ns 0.225 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 3.69 % 3.69 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 6.43 ns 6.43 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 6.27 ns 6.27 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 0.396 ns 0.396 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 6.16 % 6.16 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 7.93 ns 7.93 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.359 ns 0.359 ns 10 +lstringa<512> copy{str_with_len_N};/256_cv 4.52 % 4.52 % 10 +lstringa<512> copy{str_with_len_N};/512_mean 19.9 ns 19.9 ns 10 +lstringa<512> copy{str_with_len_N};/512_median 19.9 ns 19.9 ns 10 +lstringa<512> copy{str_with_len_N};/512_stddev 0.194 ns 0.194 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 0.98 % 0.98 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 93.2 ns 93.2 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 95.4 ns 95.4 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 5.06 ns 5.06 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 5.43 % 5.43 % 10 +lstringa<512> copy{str_with_len_N};/2048_mean 117 ns 117 ns 10 +lstringa<512> copy{str_with_len_N};/2048_median 114 ns 114 ns 10 +lstringa<512> copy{str_with_len_N};/2048_stddev 16.7 ns 16.7 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 14.30 % 14.30 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 128 ns 128 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 127 ns 127 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 11.1 ns 11.1 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 8.72 % 8.72 % 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 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 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 26.9 ns 26.9 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 27.0 ns 27.0 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.630 ns 0.630 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 2.34 % 2.34 % 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 14.8 ns 14.8 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 14.8 ns 14.8 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.297 ns 0.297 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 2.01 % 2.01 % 10 +stringa s = "123456789"; int res = s.to_int_mean 12.8 ns 12.8 ns 10 +stringa s = "123456789"; int res = s.to_int_median 12.7 ns 12.7 ns 10 +stringa s = "123456789"; int res = s.to_int_stddev 0.325 ns 0.325 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 2.53 % 2.53 % 10 +ssa s = "123456789"; int res = s.to_int_mean 12.3 ns 12.3 ns 10 +ssa s = "123456789"; int res = s.to_int_median 12.3 ns 12.3 ns 10 +ssa s = "123456789"; int res = s.to_int_stddev 0.299 ns 0.299 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 2.43 % 2.43 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 13.3 ns 13.3 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 13.2 ns 13.2 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.720 ns 0.720 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 5.39 % 5.39 % 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.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 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 23.5 ns 23.5 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 23.4 ns 23.4 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.353 ns 0.353 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 1.50 % 1.50 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.74 ns 9.74 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.71 ns 9.71 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.221 ns 0.221 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 2.28 % 2.28 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 12.7 ns 12.7 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.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 +stringa s = "abcDef"; int res = s.to_int_stddev 0.427 ns 0.427 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 3.37 % 3.37 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 12.5 ns 12.5 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.789 ns 0.789 ns 10 -lstringa<20> s = "abcDef"; int res = s.to_int_cv 6.06 % 6.06 % 10 +ssa s = "abcDef"; int res = s.to_int_cv 2.82 % 2.82 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_mean 12.4 ns 12.4 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_median 12.5 ns 12.5 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.187 ns 0.187 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 1.51 % 1.51 % 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.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 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 28.1 ns 28.1 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 28.0 ns 28.0 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 0.554 ns 0.554 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 1.97 % 1.97 % 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 18.5 ns 18.5 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 18.6 ns 18.6 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.327 ns 0.327 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 1.77 % 1.77 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 15.7 ns 15.7 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 15.1 ns 15.1 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.976 ns 0.976 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 6.22 % 6.22 % 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 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.987 ns 0.987 ns 10 -ssa s = "1234.567e10"; double res = *s.to_double()_cv 3.79 % 3.79 % 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 67.6 ns 67.6 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 66.7 ns 66.7 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 4.27 ns 4.27 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 6.31 % 6.31 % 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.599 ns 0.599 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 2.44 % 2.44 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_mean 27.5 ns 27.5 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_median 27.6 ns 27.6 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_stddev 1.82 ns 1.82 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 6.62 % 6.62 % 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 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 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 1347 ns 1347 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 1328 ns 1328 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 60.7 ns 60.7 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 4.51 % 4.51 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 386 ns 386 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 385 ns 385 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 13.7 ns 13.7 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 3.55 % 3.55 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 371 ns 371 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 365 ns 365 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 25.4 ns 25.4 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 6.86 % 6.86 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 278 ns 278 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 264 ns 264 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 47.1 ns 47.1 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 16.97 % 16.97 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 253 ns 253 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 255 ns 255 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 17.9 ns 17.9 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 7.09 % 7.09 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 155 ns 155 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 155 ns 155 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 2.30 ns 2.30 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.48 % 1.48 % 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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 1360 ns 1360 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1344 ns 1344 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 55.3 ns 55.3 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 4.07 % 4.07 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1256 ns 1256 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1253 ns 1253 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 24.8 ns 24.8 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 1.98 % 1.98 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 458 ns 458 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 455 ns 455 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 22.7 ns 22.7 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 4.94 % 4.94 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 335 ns 335 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 331 ns 331 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 15.5 ns 15.5 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 4.64 % 4.64 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 333 ns 333 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 328 ns 328 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 12.8 ns 12.8 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.84 % 3.84 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 236 ns 236 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 236 ns 236 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 4.52 ns 4.52 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.91 % 1.91 % 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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 76814 ns 76814 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 75549 ns 75549 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 3306 ns 3306 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 4.30 % 4.30 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 81104 ns 81103 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 79575 ns 79575 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 8072 ns 8070 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 9.95 % 9.95 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 35576 ns 35576 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 35630 ns 35630 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 572 ns 572 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.61 % 1.61 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 18020 ns 18020 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 18018 ns 18019 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 259 ns 259 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.44 % 1.44 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 15532 ns 15533 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 15552 ns 15553 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 314 ns 315 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.02 % 2.02 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16198 ns 16198 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 15939 ns 15939 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 968 ns 968 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.97 % 5.97 % 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 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 +std::stringstream str; ... str << str_var1 << str_var2;_mean 1362 ns 1362 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 1354 ns 1354 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 34.7 ns 34.7 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 2.55 % 2.55 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 1379 ns 1379 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 1366 ns 1366 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 42.1 ns 42.1 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 3.05 % 3.05 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 563 ns 563 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_median 545 ns 545 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_stddev 46.4 ns 46.4 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 8.24 % 8.24 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 483 ns 483 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 476 ns 476 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 48.3 ns 48.3 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 9.98 % 9.98 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 399 ns 399 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 395 ns 395 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 24.1 ns 24.1 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 6.04 % 6.04 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 293 ns 293 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 293 ns 293 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 2.72 ns 2.72 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 0.93 % 0.93 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 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 +std::stringstream str; str << "test = " << k << " times";_mean 3010 ns 3010 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 3024 ns 3024 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 67.2 ns 67.2 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 2.23 % 2.23 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 483 ns 483 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 482 ns 482 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 27.0 ns 27.0 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 5.60 % 5.60 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1367 ns 1367 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1360 ns 1360 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 28.7 ns 28.7 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 2.10 % 2.10 % 10 +std::string str = std::format("test = {} times", k);_mean 1158 ns 1158 ns 10 +std::string str = std::format("test = {} times", k);_median 1147 ns 1147 ns 10 +std::string str = std::format("test = {} times", k);_stddev 42.3 ns 42.3 ns 10 +std::string str = std::format("test = {} times", k);_cv 3.65 % 3.65 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 1453 ns 1453 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 1434 ns 1434 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 96.4 ns 96.4 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 6.63 % 6.63 % 10 +lstringa<32> str; str.format("test = {} times", k);_mean 977 ns 977 ns 10 +lstringa<32> str; str.format("test = {} times", k);_median 978 ns 978 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 22.0 ns 22.0 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 2.25 % 2.25 % 10 +lstringa<8> str = "test = " + k + " times";_mean 298 ns 298 ns 10 +lstringa<8> str = "test = " + k + " times";_median 291 ns 291 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 23.1 ns 23.1 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 7.74 % 7.74 % 10 +lstringa<32> str = "test = " + k + " times";_mean 158 ns 158 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 +lstringa<32> str = "test = " + k + " times";_stddev 10.2 ns 10.2 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 6.48 % 6.48 % 10 +stringa str = "test = " + k + " times";_mean 148 ns 148 ns 10 +stringa str = "test = " + k + " times";_median 147 ns 147 ns 10 +stringa str = "test = " + k + " times";_stddev 5.17 ns 5.17 ns 10 +stringa str = "test = " + k + " times";_cv 3.49 % 3.49 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string::find + substr + std::strtol_mean 290 ns 290 ns 10 +std::string::find + substr + std::strtol_median 290 ns 290 ns 10 +std::string::find + substr + std::strtol_stddev 26.4 ns 26.4 ns 10 +std::string::find + substr + std::strtol_cv 9.11 % 9.11 % 10 +ssa::splitter + ssa::as_int_mean 156 ns 156 ns 10 +ssa::splitter + ssa::as_int_median 155 ns 155 ns 10 +ssa::splitter + ssa::as_int_stddev 5.63 ns 5.63 ns 10 +ssa::splitter + ssa::as_int_cv 3.62 % 3.62 % 10 +ssa::splitf + functor_mean 209 ns 209 ns 10 +ssa::splitf + functor_median 207 ns 207 ns 10 +ssa::splitf + functor_stddev 8.09 ns 8.09 ns 10 +ssa::splitf + functor_cv 3.87 % 3.87 % 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 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 +Naive (and wrong) replace symbols with std::string find + replace_mean 887 ns 887 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 860 ns 860 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 72.5 ns 72.5 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 8.17 % 8.17 % 10 +replace symbols with std::string find_first_of + replace_mean 2460 ns 2460 ns 10 +replace symbols with std::string find_first_of + replace_median 2456 ns 2456 ns 10 +replace symbols with std::string find_first_of + replace_stddev 85.3 ns 85.3 ns 10 +replace symbols with std::string find_first_of + replace_cv 3.47 % 3.47 % 10 +replace symbols with std::string_view find_first_of + copy_mean 1150 ns 1150 ns 10 +replace symbols with std::string_view find_first_of + copy_median 1156 ns 1156 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 20.0 ns 20.0 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 1.74 % 1.74 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 1280 ns 1280 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 1273 ns 1273 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 29.7 ns 29.7 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 2.32 % 2.32 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 1080 ns 1080 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 1073 ns 1073 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 24.7 ns 24.7 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 2.28 % 2.28 % 10 +replace const symbols with string expressions and without remembering all search results_mean 1033 ns 1033 ns 10 +replace const symbols with string expressions and without remembering all search results_median 1030 ns 1030 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 21.3 ns 21.3 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 2.06 % 2.06 % 10 +replace const symbols with string expressions and memorization of all search results_mean 891 ns 891 ns 10 +replace const symbols with string expressions and memorization of all search results_median 889 ns 889 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 15.9 ns 15.9 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 1.79 % 1.79 % 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 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 Naive (and wrong) replace symbols with std::string find + replace_mean 157 ns 157 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 156 ns 156 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 5.03 ns 5.03 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 3.20 % 3.20 % 10 +Short replace symbols with std::string find_first_of + replace_mean 320 ns 320 ns 10 +Short replace symbols with std::string find_first_of + replace_median 313 ns 313 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 21.9 ns 21.9 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 6.83 % 6.83 % 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 symbols with std::string_view find_first_of + copy_median 163 ns 163 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 5.06 ns 5.06 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 3.09 % 3.09 % 10 +Short replace runtime symbols with string expressions and without remembering all search results_mean 179 ns 179 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_median 179 ns 179 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 6.71 ns 6.71 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 3.76 % 3.76 % 10 +Short replace runtime symbols with simstr and memorization of all search results_mean 188 ns 188 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_median 189 ns 189 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 3.04 ns 3.05 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 1.62 % 1.62 % 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 without remembering all search results_median 136 ns 136 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 4.96 ns 4.96 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 3.57 % 3.57 % 10 +Short replace const symbols with string expressions and memorization of all search results_mean 143 ns 143 ns 10 +Short replace const symbols with string expressions and memorization of all search results_median 142 ns 142 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 5.23 ns 5.23 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 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 bb to ---- in std::string|64_mean 166 ns 166 ns 10 +replace bb to ---- in std::string|64_median 159 ns 159 ns 10 +replace bb to ---- in std::string|64_stddev 13.1 ns 13.1 ns 10 +replace bb to ---- in std::string|64_cv 7.93 % 7.93 % 10 +replace bb to ---- in std::string|256_mean 527 ns 527 ns 10 +replace bb to ---- in std::string|256_median 530 ns 530 ns 10 +replace bb to ---- in std::string|256_stddev 12.9 ns 12.9 ns 10 +replace bb to ---- in std::string|256_cv 2.45 % 2.45 % 10 +replace bb to ---- in std::string|512_mean 1047 ns 1047 ns 10 +replace bb to ---- in std::string|512_median 1023 ns 1023 ns 10 +replace bb to ---- in std::string|512_stddev 74.9 ns 74.9 ns 10 +replace bb to ---- in std::string|512_cv 7.16 % 7.16 % 10 +replace bb to ---- in std::string|1024_mean 2576 ns 2576 ns 10 +replace bb to ---- in std::string|1024_median 2672 ns 2672 ns 10 +replace bb to ---- in std::string|1024_stddev 247 ns 247 ns 10 +replace bb to ---- in std::string|1024_cv 9.59 % 9.58 % 10 +replace bb to ---- in std::string|2048_mean 6341 ns 6341 ns 10 +replace bb to ---- in std::string|2048_median 6587 ns 6587 ns 10 +replace bb to ---- in std::string|2048_stddev 488 ns 488 ns 10 +replace bb to ---- in std::string|2048_cv 7.70 % 7.70 % 10 +replace bb to ---- in lstringa<8>|64_mean 146 ns 146 ns 10 +replace bb to ---- in lstringa<8>|64_median 148 ns 148 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 12.6 ns 12.6 ns 10 +replace bb to ---- in lstringa<8>|64_cv 8.58 % 8.58 % 10 +replace bb to ---- in lstringa<8>|256_mean 455 ns 455 ns 10 +replace bb to ---- in lstringa<8>|256_median 437 ns 437 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 41.9 ns 41.9 ns 10 +replace bb to ---- in lstringa<8>|256_cv 9.20 % 9.20 % 10 +replace bb to ---- in lstringa<8>|512_mean 815 ns 815 ns 10 +replace bb to ---- in lstringa<8>|512_median 809 ns 809 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 18.6 ns 18.6 ns 10 +replace bb to ---- in lstringa<8>|512_cv 2.28 % 2.28 % 10 +replace bb to ---- in lstringa<8>|1024_mean 1685 ns 1685 ns 10 +replace bb to ---- in lstringa<8>|1024_median 1668 ns 1668 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 41.1 ns 41.1 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 2.44 % 2.44 % 10 +replace bb to ---- in lstringa<8>|2048_mean 3174 ns 3174 ns 10 +replace bb to ---- in lstringa<8>|2048_median 3159 ns 3159 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 100 ns 100 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 3.16 % 3.16 % 10 +replace bb to ---- by init stringa|64_mean 98.9 ns 98.9 ns 10 +replace bb to ---- by init stringa|64_median 97.3 ns 97.3 ns 10 +replace bb to ---- by init stringa|64_stddev 4.28 ns 4.28 ns 10 +replace bb to ---- by init stringa|64_cv 4.32 % 4.32 % 10 +replace bb to ---- by init stringa|256_mean 304 ns 304 ns 10 +replace bb to ---- by init stringa|256_median 304 ns 304 ns 10 +replace bb to ---- by init stringa|256_stddev 4.68 ns 4.68 ns 10 +replace bb to ---- by init stringa|256_cv 1.54 % 1.54 % 10 +replace bb to ---- by init stringa|512_mean 710 ns 710 ns 10 +replace bb to ---- by init stringa|512_median 704 ns 704 ns 10 +replace bb to ---- by init stringa|512_stddev 30.4 ns 30.4 ns 10 +replace bb to ---- by init stringa|512_cv 4.28 % 4.28 % 10 +replace bb to ---- by init stringa|1024_mean 1576 ns 1576 ns 10 +replace bb to ---- by init stringa|1024_median 1576 ns 1576 ns 10 +replace bb to ---- by init stringa|1024_stddev 74.6 ns 74.6 ns 10 +replace bb to ---- by init stringa|1024_cv 4.74 % 4.74 % 10 +replace bb to ---- by init stringa|2048_mean 3212 ns 3213 ns 10 +replace bb to ---- by init stringa|2048_median 3060 ns 3060 ns 10 +replace bb to ---- by init stringa|2048_stddev 338 ns 338 ns 10 +replace bb to ---- by init stringa|2048_cv 10.52 % 10.52 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 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 +replace bb to -- in std::string|64_mean 128 ns 128 ns 10 +replace bb to -- in std::string|64_median 123 ns 123 ns 10 +replace bb to -- in std::string|64_stddev 8.08 ns 8.08 ns 10 +replace bb to -- in std::string|64_cv 6.32 % 6.32 % 10 +replace bb to -- in std::string|256_mean 402 ns 402 ns 10 +replace bb to -- in std::string|256_median 397 ns 397 ns 10 +replace bb to -- in std::string|256_stddev 16.1 ns 16.1 ns 10 +replace bb to -- in std::string|256_cv 4.01 % 4.01 % 10 +replace bb to -- in std::string|512_mean 767 ns 767 ns 10 +replace bb to -- in std::string|512_median 758 ns 758 ns 10 +replace bb to -- in std::string|512_stddev 32.5 ns 32.5 ns 10 +replace bb to -- in std::string|512_cv 4.23 % 4.23 % 10 +replace bb to -- in std::string|1024_mean 1542 ns 1542 ns 10 +replace bb to -- in std::string|1024_median 1542 ns 1542 ns 10 +replace bb to -- in std::string|1024_stddev 37.8 ns 37.8 ns 10 +replace bb to -- in std::string|1024_cv 2.45 % 2.45 % 10 +replace bb to -- in std::string|2048_mean 2990 ns 2990 ns 10 +replace bb to -- in std::string|2048_median 2948 ns 2948 ns 10 +replace bb to -- in std::string|2048_stddev 128 ns 128 ns 10 +replace bb to -- in std::string|2048_cv 4.27 % 4.27 % 10 +replace bb to -- in lstringa<8>|64_mean 97.3 ns 97.3 ns 10 +replace bb to -- in lstringa<8>|64_median 96.9 ns 96.9 ns 10 +replace bb to -- in lstringa<8>|64_stddev 3.28 ns 3.28 ns 10 +replace bb to -- in lstringa<8>|64_cv 3.37 % 3.37 % 10 +replace bb to -- in lstringa<8>|256_mean 298 ns 298 ns 10 +replace bb to -- in lstringa<8>|256_median 298 ns 298 ns 10 +replace bb to -- in lstringa<8>|256_stddev 4.90 ns 4.90 ns 10 +replace bb to -- in lstringa<8>|256_cv 1.64 % 1.64 % 10 +replace bb to -- in lstringa<8>|512_mean 610 ns 610 ns 10 +replace bb to -- in lstringa<8>|512_median 613 ns 613 ns 10 +replace bb to -- in lstringa<8>|512_stddev 45.5 ns 45.5 ns 10 +replace bb to -- in lstringa<8>|512_cv 7.45 % 7.45 % 10 +replace bb to -- in lstringa<8>|1024_mean 1081 ns 1081 ns 10 +replace bb to -- in lstringa<8>|1024_median 1077 ns 1077 ns 10 +replace bb to -- in lstringa<8>|1024_stddev 28.0 ns 28.0 ns 10 +replace bb to -- in lstringa<8>|1024_cv 2.59 % 2.59 % 10 +replace bb to -- in lstringa<8>|2048_mean 2082 ns 2082 ns 10 +replace bb to -- in lstringa<8>|2048_median 2052 ns 2052 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 72.9 ns 72.9 ns 10 +replace bb to -- in lstringa<8>|2048_cv 3.50 % 3.50 % 10 +replace bb to -- by init stringa|64_mean 82.2 ns 82.2 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 1.57 ns 1.57 ns 10 +replace bb to -- by init stringa|64_cv 1.91 % 1.91 % 10 +replace bb to -- by init stringa|256_mean 260 ns 260 ns 10 +replace bb to -- by init stringa|256_median 257 ns 257 ns 10 +replace bb to -- by init stringa|256_stddev 8.87 ns 8.87 ns 10 +replace bb to -- by init stringa|256_cv 3.42 % 3.42 % 10 +replace bb to -- by init stringa|512_mean 435 ns 435 ns 10 +replace bb to -- by init stringa|512_median 437 ns 437 ns 10 +replace bb to -- by init stringa|512_stddev 6.70 ns 6.70 ns 10 +replace bb to -- by init stringa|512_cv 1.54 % 1.54 % 10 +replace bb to -- by init stringa|1024_mean 865 ns 865 ns 10 +replace bb to -- by init stringa|1024_median 872 ns 872 ns 10 +replace bb to -- by init stringa|1024_stddev 19.4 ns 19.4 ns 10 +replace bb to -- by init stringa|1024_cv 2.24 % 2.24 % 10 +replace bb to -- by init stringa|2048_mean 1662 ns 1662 ns 10 +replace bb to -- by init stringa|2048_median 1666 ns 1666 ns 10 +replace bb to -- by init stringa|2048_stddev 36.3 ns 36.3 ns 10 +replace bb to -- by init stringa|2048_cv 2.18 % 2.18 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +hashStrMapA emplace & find stringa;_mean 3721964 ns 3721991 ns 10 +hashStrMapA emplace & find stringa;_median 3695032 ns 3695105 ns 10 +hashStrMapA emplace & find stringa;_stddev 181798 ns 181791 ns 10 +hashStrMapA emplace & find stringa;_cv 4.88 % 4.88 % 10 +std::unordered_map emplace & find std::string;_mean 3481822 ns 3481831 ns 10 +std::unordered_map emplace & find std::string;_median 3487388 ns 3487364 ns 10 +std::unordered_map emplace & find std::string;_stddev 60182 ns 60185 ns 10 +std::unordered_map emplace & find std::string;_cv 1.73 % 1.73 % 10 +hashStrMapA emplace & find ssa;_mean 3581196 ns 3581211 ns 10 +hashStrMapA emplace & find ssa;_median 3594128 ns 3594144 ns 10 +hashStrMapA emplace & find ssa;_stddev 58165 ns 58167 ns 10 +hashStrMapA emplace & find ssa;_cv 1.62 % 1.62 % 10 +std::unordered_map emplace & find std::string_view;_mean 4098438 ns 4098443 ns 10 +std::unordered_map emplace & find std::string_view;_median 4103738 ns 4103720 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 49599 ns 49597 ns 10 +std::unordered_map emplace & find std::string_view;_cv 1.21 % 1.21 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Build func full name std::string;_mean 724 ns 724 ns 10 +Build func full name std::string;_median 703 ns 703 ns 10 +Build func full name std::string;_stddev 51.3 ns 51.3 ns 10 +Build func full name std::string;_cv 7.09 % 7.09 % 10 +Build func full name std::string 1;_mean 818 ns 818 ns 10 +Build func full name std::string 1;_median 817 ns 817 ns 10 +Build func full name std::string 1;_stddev 14.6 ns 14.6 ns 10 +Build func full name std::string 1;_cv 1.79 % 1.79 % 10 +Build func full name std::stream;_mean 2574 ns 2574 ns 10 +Build func full name std::stream;_median 2549 ns 2549 ns 10 +Build func full name std::stream;_stddev 87.7 ns 87.7 ns 10 +Build func full name std::stream;_cv 3.41 % 3.41 % 10 +Build func full name stringa;_mean 506 ns 506 ns 10 +Build func full name stringa;_median 506 ns 506 ns 10 +Build func full name stringa;_stddev 11.3 ns 11.3 ns 10 +Build func full name stringa;_cv 2.24 % 2.24 % 10 +Build func full name stringa 1;_mean 741 ns 741 ns 10 +Build func full name stringa 1;_median 739 ns 739 ns 10 +Build func full name stringa 1;_stddev 108 ns 108 ns 10 +Build func full name stringa 1;_cv 14.51 % 14.51 % 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 5b0e733..be53b41 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-29T20:00:21+03:00 +2026-01-30T15:40:17+03:00 Running ./benchStr Run on (32 X 2494.22 MHz CPU s) CPU Caches: @@ -12,879 +12,887 @@ 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 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 +Concat std::string and number by std to std::string_mean 201 ns 201 ns 10 +Concat std::string and number by std to std::string_median 200 ns 200 ns 10 +Concat std::string and number by std to std::string_stddev 6.69 ns 6.69 ns 10 +Concat std::string and number by std to std::string_cv 3.32 % 3.32 % 10 +Concat std::string and number by StrExpr to std::string_mean 103 ns 103 ns 10 +Concat std::string and number by StrExpr to std::string_median 102 ns 102 ns 10 +Concat std::string and number by StrExpr to std::string_stddev 4.57 ns 4.57 ns 10 +Concat std::string and number by StrExpr to std::string_cv 4.45 % 4.45 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 73.7 ns 73.7 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_median 72.8 ns 72.8 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_stddev 4.61 ns 4.61 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 6.26 % 6.26 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 85.7 ns 85.7 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 83.7 ns 83.7 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 9.62 ns 9.62 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 11.23 % 11.23 % 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 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.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 +Concat std::string and format hex number and literal to std::string_mean 660 ns 660 ns 10 +Concat std::string and format hex number and literal to std::string_median 653 ns 653 ns 10 +Concat std::string and format hex number and literal to std::string_stddev 24.1 ns 24.1 ns 10 +Concat std::string and format hex number and literal to std::string_cv 3.66 % 3.66 % 10 +std::format std::string and hex number by literal to std::string_mean 915 ns 915 ns 10 +std::format std::string and hex number by literal to std::string_median 913 ns 913 ns 10 +std::format std::string and hex number by literal to std::string_stddev 26.9 ns 26.9 ns 10 +std::format std::string and hex number by literal to std::string_cv 2.94 % 2.94 % 10 +Concat std::string and std::tochars and string to std::string_mean 190 ns 190 ns 10 +Concat std::string and std::tochars and string to std::string_median 190 ns 190 ns 10 +Concat std::string and std::tochars and string to std::string_stddev 4.58 ns 4.58 ns 10 +Concat std::string and std::tochars and string to std::string_cv 2.41 % 2.41 % 10 +Concat std::string and hex number and literal by StrExpr to std::string_mean 124 ns 124 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_median 124 ns 124 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_stddev 2.63 ns 2.63 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_cv 2.11 % 2.11 % 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 120 ns 120 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 119 ns 119 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 2.21 ns 2.21 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 1.85 % 1.85 % 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 127 ns 127 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_median 126 ns 126 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 4.05 ns 4.05 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 3.19 % 3.19 % 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_mean 167 ns 167 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_median 167 ns 167 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 3.41 ns 3.41 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_cv 2.05 % 2.05 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Concat std::string by std to std::string_mean 50.2 ns 50.2 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 1.49 ns 1.49 ns 10 +Concat std::string by std to std::string_cv 2.97 % 2.97 % 10 +Concat std::string by StrExpr to std::string_mean 37.4 ns 37.4 ns 10 +Concat std::string by StrExpr to std::string_median 36.4 ns 36.4 ns 10 +Concat std::string by StrExpr to std::string_stddev 3.86 ns 3.86 ns 10 +Concat std::string by StrExpr to std::string_cv 10.33 % 10.33 % 10 +Concat stringa by StrExpr to stringa_mean 26.6 ns 26.6 ns 10 +Concat stringa by StrExpr to stringa_median 26.5 ns 26.5 ns 10 +Concat stringa by StrExpr to stringa_stddev 0.683 ns 0.683 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 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 +Find concat three std::string_mean 131 ns 131 ns 10 +Find concat three std::string_median 130 ns 130 ns 10 +Find concat three std::string_stddev 3.41 ns 3.41 ns 10 +Find concat three std::string_cv 2.60 % 2.60 % 10 +Find concat three strexpr_mean 41.2 ns 41.2 ns 10 +Find concat three strexpr_median 40.3 ns 40.3 ns 10 +Find concat three strexpr_stddev 3.12 ns 3.12 ns 10 +Find concat three strexpr_cv 7.58 % 7.58 % 10 +Find concat three simstr_mean 20.0 ns 20.0 ns 10 +Find concat three simstr_median 19.7 ns 19.7 ns 10 +Find concat three simstr_stddev 0.612 ns 0.612 ns 10 +Find concat three simstr_cv 3.06 % 3.06 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 0.624 ns 0.624 ns 10 -BuildTypeNameExp 10/10_cv 2.51 % 2.51 % 10 +BuildTypeNameStr 0/0_mean 10.0 ns 10.0 ns 10 +BuildTypeNameStr 0/0_median 9.99 ns 9.99 ns 10 +BuildTypeNameStr 0/0_stddev 0.382 ns 0.382 ns 10 +BuildTypeNameStr 0/0_cv 3.81 % 3.81 % 10 +BuildTypeNameExp 0/0_mean 6.30 ns 6.30 ns 10 +BuildTypeNameExp 0/0_median 6.27 ns 6.27 ns 10 +BuildTypeNameExp 0/0_stddev 0.102 ns 0.102 ns 10 +BuildTypeNameExp 0/0_cv 1.62 % 1.62 % 10 +BuildTypeNameSim 0/0_mean 4.85 ns 4.85 ns 10 +BuildTypeNameSim 0/0_median 4.87 ns 4.87 ns 10 +BuildTypeNameSim 0/0_stddev 0.115 ns 0.115 ns 10 +BuildTypeNameSim 0/0_cv 2.38 % 2.38 % 10 +BuildTypeNameStr 10/10_mean 77.6 ns 77.6 ns 10 +BuildTypeNameStr 10/10_median 77.2 ns 77.2 ns 10 +BuildTypeNameStr 10/10_stddev 1.58 ns 1.58 ns 10 +BuildTypeNameStr 10/10_cv 2.03 % 2.03 % 10 +BuildTypeNameExp 10/10_mean 26.2 ns 26.2 ns 10 +BuildTypeNameExp 10/10_median 26.1 ns 26.1 ns 10 +BuildTypeNameExp 10/10_stddev 0.409 ns 0.409 ns 10 +BuildTypeNameExp 10/10_cv 1.56 % 1.56 % 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 +BuildTypeNameSim 10/10_median 21.7 ns 21.7 ns 10 +BuildTypeNameSim 10/10_stddev 1.97 ns 1.97 ns 10 +BuildTypeNameSim 10/10_cv 8.90 % 8.90 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -Concat with replace str_mean 231 ns 231 ns 10 +Concat with replace str_mean 238 ns 238 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 str_stddev 22.1 ns 22.1 ns 10 +Concat with replace str_cv 9.29 % 9.29 % 10 +Concat with replace exp_mean 132 ns 132 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 +Concat with replace exp_stddev 5.55 ns 5.55 ns 10 +Concat with replace exp_cv 4.19 % 4.19 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e;_mean 1.11 ns 1.11 ns 10 +std::string e;_median 1.11 ns 1.11 ns 10 +std::string e;_stddev 0.013 ns 0.013 ns 10 +std::string e;_cv 1.18 % 1.18 % 10 +std::string_view e;_mean 0.736 ns 0.736 ns 10 +std::string_view e;_median 0.733 ns 0.733 ns 10 +std::string_view e;_stddev 0.011 ns 0.011 ns 10 +std::string_view e;_cv 1.54 % 1.54 % 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.09 % 1.09 % 10 +stringa e;_mean 0.751 ns 0.751 ns 10 +stringa e;_median 0.749 ns 0.749 ns 10 +stringa e;_stddev 0.016 ns 0.016 ns 10 +stringa e;_cv 2.09 % 2.09 % 10 +lstringa<20> e;_mean 1.16 ns 1.16 ns 10 +lstringa<20> e;_median 1.14 ns 1.14 ns 10 +lstringa<20> e;_stddev 0.034 ns 0.034 ns 10 +lstringa<20> e;_cv 2.93 % 2.93 % 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.035 ns 0.035 ns 10 +lstringa<40> e;_cv 3.16 % 3.16 % 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.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.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 +std::string e = "Test text";_mean 1.85 ns 1.85 ns 10 +std::string e = "Test text";_median 1.84 ns 1.84 ns 10 +std::string e = "Test text";_stddev 0.041 ns 0.041 ns 10 +std::string e = "Test text";_cv 2.22 % 2.22 % 10 +std::string_view e = "Test text";_mean 0.747 ns 0.747 ns 10 +std::string_view e = "Test text";_median 0.744 ns 0.744 ns 10 +std::string_view e = "Test text";_stddev 0.016 ns 0.016 ns 10 +std::string_view e = "Test text";_cv 2.14 % 2.14 % 10 +ssa e = "Test text";_mean 0.738 ns 0.738 ns 10 +ssa e = "Test text";_median 0.736 ns 0.736 ns 10 +ssa e = "Test text";_stddev 0.021 ns 0.021 ns 10 +ssa e = "Test text";_cv 2.79 % 2.79 % 10 +stringa e = "Test text";_mean 1.10 ns 1.10 ns 10 +stringa e = "Test text";_median 1.11 ns 1.11 ns 10 +stringa e = "Test text";_stddev 0.020 ns 0.020 ns 10 +stringa e = "Test text";_cv 1.84 % 1.84 % 10 +lstringa<20> e = "Test text";_mean 1.84 ns 1.84 ns 10 +lstringa<20> e = "Test text";_median 1.84 ns 1.84 ns 10 +lstringa<20> e = "Test text";_stddev 0.023 ns 0.023 ns 10 +lstringa<20> e = "Test text";_cv 1.22 % 1.22 % 10 +lstringa<40> e = "Test text";_mean 1.83 ns 1.83 ns 10 +lstringa<40> e = "Test text";_median 1.83 ns 1.83 ns 10 +lstringa<40> e = "Test text";_stddev 0.019 ns 0.019 ns 10 +lstringa<40> e = "Test text";_cv 1.05 % 1.05 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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.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 +std::string e = "123456789012345678901234567890";_mean 18.9 ns 18.9 ns 10 +std::string e = "123456789012345678901234567890";_median 19.0 ns 19.0 ns 10 +std::string e = "123456789012345678901234567890";_stddev 0.272 ns 0.272 ns 10 +std::string e = "123456789012345678901234567890";_cv 1.44 % 1.44 % 10 +std::string_view e = "123456789012345678901234567890";_mean 0.733 ns 0.733 ns 10 +std::string_view e = "123456789012345678901234567890";_median 0.731 ns 0.731 ns 10 +std::string_view e = "123456789012345678901234567890";_stddev 0.008 ns 0.008 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 1.11 % 1.11 % 10 +ssa e = "123456789012345678901234567890";_mean 0.733 ns 0.733 ns 10 +ssa e = "123456789012345678901234567890";_median 0.731 ns 0.731 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.012 ns 0.012 ns 10 +ssa e = "123456789012345678901234567890";_cv 1.58 % 1.58 % 10 +stringa e = "123456789012345678901234567890";_mean 1.16 ns 1.16 ns 10 +stringa e = "123456789012345678901234567890";_median 1.16 ns 1.16 ns 10 +stringa e = "123456789012345678901234567890";_stddev 0.060 ns 0.060 ns 10 +stringa e = "123456789012345678901234567890";_cv 5.15 % 5.15 % 10 +lstringa<20> e = "123456789012345678901234567890";_mean 20.7 ns 20.7 ns 10 +lstringa<20> e = "123456789012345678901234567890";_median 20.6 ns 20.6 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 0.500 ns 0.500 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 2.42 % 2.41 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 1.88 ns 1.88 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 1.87 ns 1.87 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.026 ns 0.026 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 1.38 % 1.38 % 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.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 +std::string e = "Test text"; auto c{e};_mean 6.00 ns 6.00 ns 10 +std::string e = "Test text"; auto c{e};_median 5.94 ns 5.94 ns 10 +std::string e = "Test text"; auto c{e};_stddev 0.334 ns 0.334 ns 10 +std::string e = "Test text"; auto c{e};_cv 5.58 % 5.58 % 10 +std::string_view e = "Test text"; auto c{e};_mean 0.378 ns 0.378 ns 10 +std::string_view e = "Test text"; auto c{e};_median 0.374 ns 0.374 ns 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.011 ns 0.011 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 3.02 % 3.02 % 10 +ssa e = "Test text"; auto c{e};_mean 0.393 ns 0.393 ns 10 +ssa e = "Test text"; auto c{e};_median 0.389 ns 0.389 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.024 ns 0.024 ns 10 +ssa e = "Test text"; auto c{e};_cv 6.04 % 6.04 % 10 +stringa e = "Test text"; auto c{e};_mean 1.10 ns 1.10 ns 10 +stringa e = "Test text"; auto c{e};_median 1.10 ns 1.10 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.012 ns 0.012 ns 10 +stringa e = "Test text"; auto c{e};_cv 1.12 % 1.12 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 4.47 ns 4.47 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 4.45 ns 4.45 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.111 ns 0.111 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 2.48 % 2.48 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 5.16 ns 5.16 ns 10 +lstringa<40> e = "Test text"; auto c{e};_median 5.12 ns 5.12 ns 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 0.221 ns 0.221 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 4.29 % 4.29 % 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 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 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 24.1 ns 24.1 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 24.0 ns 24.0 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 0.661 ns 0.661 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 2.75 % 2.75 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.738 ns 0.738 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.740 ns 0.740 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.013 ns 0.013 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.75 % 1.75 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.734 ns 0.734 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 0.733 ns 0.733 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.013 ns 0.013 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 1.84 % 1.84 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.10 ns 1.10 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 1.10 ns 1.10 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.014 ns 0.014 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 1.27 % 1.27 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 19.9 ns 19.9 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 19.6 ns 19.6 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.890 ns 0.890 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 4.48 % 4.48 % 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.47 ns 4.47 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.056 ns 0.056 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 1.25 % 1.25 % 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.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 +std::string::find;_mean 7.05 ns 7.05 ns 10 +std::string::find;_median 7.00 ns 7.00 ns 10 +std::string::find;_stddev 0.208 ns 0.208 ns 10 +std::string::find;_cv 2.95 % 2.95 % 10 +std::string_view::find;_mean 7.46 ns 7.46 ns 10 +std::string_view::find;_median 7.41 ns 7.41 ns 10 +std::string_view::find;_stddev 0.615 ns 0.615 ns 10 +std::string_view::find;_cv 8.25 % 8.25 % 10 +ssa::find;_mean 6.38 ns 6.38 ns 10 +ssa::find;_median 6.37 ns 6.37 ns 10 +ssa::find;_stddev 0.084 ns 0.084 ns 10 +ssa::find;_cv 1.32 % 1.32 % 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 +stringa::find;_median 6.79 ns 6.79 ns 10 +stringa::find;_stddev 0.116 ns 0.116 ns 10 +stringa::find;_cv 1.71 % 1.71 % 10 +lstringa<20>::find;_mean 6.83 ns 6.83 ns 10 +lstringa<20>::find;_median 6.78 ns 6.78 ns 10 +lstringa<20>::find;_stddev 0.212 ns 0.212 ns 10 +lstringa<20>::find;_cv 3.11 % 3.11 % 10 +lstringa<40>::find;_mean 7.36 ns 7.36 ns 10 +lstringa<40>::find;_median 7.28 ns 7.28 ns 10 +lstringa<40>::find;_stddev 0.255 ns 0.255 ns 10 +lstringa<40>::find;_cv 3.47 % 3.47 % 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.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};/15_mean 5.93 ns 5.93 ns 10 +std::string copy{str_with_len_N};/15_median 5.93 ns 5.93 ns 10 +std::string copy{str_with_len_N};/15_stddev 0.315 ns 0.315 ns 10 +std::string copy{str_with_len_N};/15_cv 5.31 % 5.31 % 10 +std::string copy{str_with_len_N};/16_mean 24.7 ns 24.7 ns 10 +std::string copy{str_with_len_N};/16_median 24.0 ns 24.0 ns 10 +std::string copy{str_with_len_N};/16_stddev 2.15 ns 2.15 ns 10 +std::string copy{str_with_len_N};/16_cv 8.71 % 8.71 % 10 +std::string copy{str_with_len_N};/23_mean 25.4 ns 25.4 ns 10 +std::string copy{str_with_len_N};/23_median 25.4 ns 25.4 ns 10 +std::string copy{str_with_len_N};/23_stddev 1.21 ns 1.21 ns 10 +std::string copy{str_with_len_N};/23_cv 4.77 % 4.77 % 10 +std::string copy{str_with_len_N};/24_mean 24.0 ns 24.0 ns 10 +std::string copy{str_with_len_N};/24_median 23.9 ns 23.9 ns 10 +std::string copy{str_with_len_N};/24_stddev 0.624 ns 0.624 ns 10 +std::string copy{str_with_len_N};/24_cv 2.60 % 2.60 % 10 +std::string copy{str_with_len_N};/32_mean 23.7 ns 23.7 ns 10 +std::string copy{str_with_len_N};/32_median 23.5 ns 23.5 ns 10 +std::string copy{str_with_len_N};/32_stddev 0.789 ns 0.789 ns 10 +std::string copy{str_with_len_N};/32_cv 3.33 % 3.33 % 10 +std::string copy{str_with_len_N};/64_mean 23.9 ns 23.9 ns 10 +std::string copy{str_with_len_N};/64_median 23.8 ns 23.8 ns 10 +std::string copy{str_with_len_N};/64_stddev 0.485 ns 0.485 ns 10 +std::string copy{str_with_len_N};/64_cv 2.03 % 2.03 % 10 +std::string copy{str_with_len_N};/128_mean 25.3 ns 25.3 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.580 ns 0.580 ns 10 +std::string copy{str_with_len_N};/128_cv 2.29 % 2.29 % 10 +std::string copy{str_with_len_N};/256_mean 25.6 ns 25.6 ns 10 +std::string copy{str_with_len_N};/256_median 25.6 ns 25.6 ns 10 +std::string copy{str_with_len_N};/256_stddev 0.324 ns 0.324 ns 10 +std::string copy{str_with_len_N};/256_cv 1.27 % 1.27 % 10 +std::string copy{str_with_len_N};/512_mean 30.1 ns 30.1 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 +std::string copy{str_with_len_N};/512_stddev 1.22 ns 1.22 ns 10 +std::string copy{str_with_len_N};/512_cv 4.04 % 4.04 % 10 +std::string copy{str_with_len_N};/1024_mean 39.5 ns 39.5 ns 10 +std::string copy{str_with_len_N};/1024_median 39.3 ns 39.3 ns 10 +std::string copy{str_with_len_N};/1024_stddev 0.901 ns 0.901 ns 10 +std::string copy{str_with_len_N};/1024_cv 2.28 % 2.28 % 10 +std::string copy{str_with_len_N};/2048_mean 114 ns 114 ns 10 +std::string copy{str_with_len_N};/2048_median 115 ns 115 ns 10 +std::string copy{str_with_len_N};/2048_stddev 5.51 ns 5.51 ns 10 +std::string copy{str_with_len_N};/2048_cv 4.82 % 4.82 % 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 12.3 ns 12.3 ns 10 +std::string copy{str_with_len_N};/4096_cv 8.07 % 8.07 % 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};/15_median 1.12 ns 1.12 ns 10 +stringa copy{str_with_len_N};/15_stddev 0.021 ns 0.021 ns 10 +stringa copy{str_with_len_N};/15_cv 1.88 % 1.88 % 10 +stringa copy{str_with_len_N};/16_mean 1.09 ns 1.09 ns 10 +stringa copy{str_with_len_N};/16_median 1.09 ns 1.09 ns 10 +stringa copy{str_with_len_N};/16_stddev 0.012 ns 0.012 ns 10 +stringa copy{str_with_len_N};/16_cv 1.09 % 1.09 % 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.09 ns 1.09 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.029 ns 0.029 ns 10 +stringa copy{str_with_len_N};/23_cv 2.68 % 2.68 % 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.197 ns 0.197 ns 10 +stringa copy{str_with_len_N};/24_cv 1.22 % 1.22 % 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.143 ns 0.143 ns 10 +stringa copy{str_with_len_N};/32_cv 0.89 % 0.89 % 10 +stringa copy{str_with_len_N};/64_mean 16.3 ns 16.3 ns 10 +stringa copy{str_with_len_N};/64_median 16.2 ns 16.2 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.84 % 1.84 % 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};/128_stddev 0.148 ns 0.148 ns 10 +stringa copy{str_with_len_N};/128_cv 0.92 % 0.92 % 10 +stringa copy{str_with_len_N};/256_mean 16.3 ns 16.3 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.325 ns 0.325 ns 10 +stringa copy{str_with_len_N};/256_cv 2.00 % 2.00 % 10 +stringa copy{str_with_len_N};/512_mean 16.2 ns 16.2 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.567 ns 0.567 ns 10 -stringa copy{str_with_len_N};/4096_cv 3.44 % 3.44 % 10 +stringa copy{str_with_len_N};/512_stddev 0.323 ns 0.323 ns 10 +stringa copy{str_with_len_N};/512_cv 2.00 % 2.00 % 10 +stringa copy{str_with_len_N};/1024_mean 16.1 ns 16.1 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.249 ns 0.249 ns 10 +stringa copy{str_with_len_N};/1024_cv 1.55 % 1.55 % 10 +stringa copy{str_with_len_N};/2048_mean 17.9 ns 17.9 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 3.59 ns 3.59 ns 10 +stringa copy{str_with_len_N};/2048_cv 20.05 % 20.05 % 10 +stringa copy{str_with_len_N};/4096_mean 17.8 ns 17.8 ns 10 +stringa copy{str_with_len_N};/4096_median 16.1 ns 16.1 ns 10 +stringa copy{str_with_len_N};/4096_stddev 3.54 ns 3.54 ns 10 +stringa copy{str_with_len_N};/4096_cv 19.96 % 19.96 % 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.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};/15_median 4.44 ns 4.44 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.133 ns 0.133 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 3.00 % 3.00 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 4.48 ns 4.48 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 4.51 ns 4.51 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 0.124 ns 0.124 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 2.77 % 2.77 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 4.78 ns 4.78 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 4.78 ns 4.78 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 0.318 ns 0.318 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 6.65 % 6.65 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 24.8 ns 24.8 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 24.4 ns 24.4 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 1.70 ns 1.70 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 6.83 % 6.83 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 23.9 ns 23.9 ns 10 +lstringa<16> copy{str_with_len_N};/32_median 23.8 ns 23.8 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 0.467 ns 0.467 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 1.96 % 1.96 % 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 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 +lstringa<16> copy{str_with_len_N};/64_median 25.4 ns 25.4 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 0.568 ns 0.568 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 2.22 % 2.22 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 26.4 ns 26.4 ns 10 +lstringa<16> copy{str_with_len_N};/128_median 26.2 ns 26.2 ns 10 +lstringa<16> copy{str_with_len_N};/128_stddev 1.24 ns 1.24 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 4.70 % 4.70 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 27.4 ns 27.4 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 27.1 ns 27.1 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 0.971 ns 0.971 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 3.54 % 3.54 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 29.9 ns 29.9 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 30.1 ns 30.1 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 0.646 ns 0.646 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 2.16 % 2.16 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 93.1 ns 93.1 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 94.6 ns 94.6 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 6.41 ns 6.41 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 6.88 % 6.88 % 10 +lstringa<16> copy{str_with_len_N};/2048_mean 107 ns 107 ns 10 +lstringa<16> copy{str_with_len_N};/2048_median 109 ns 109 ns 10 +lstringa<16> copy{str_with_len_N};/2048_stddev 9.10 ns 9.10 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 8.53 % 8.53 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 128 ns 128 ns 10 +lstringa<16> copy{str_with_len_N};/4096_median 128 ns 128 ns 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 10.5 ns 10.6 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 8.23 % 8.23 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 4.54 ns 4.54 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 4.46 ns 4.46 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 0.301 ns 0.301 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 6.64 % 6.63 % 10 +lstringa<512> copy{str_with_len_N};/16_mean 4.50 ns 4.50 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.128 ns 0.128 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 2.83 % 2.83 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 4.58 ns 4.58 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 4.50 ns 4.50 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 0.208 ns 0.208 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 4.54 % 4.54 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 4.49 ns 4.49 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 4.46 ns 4.46 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.102 ns 0.102 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 2.26 % 2.26 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 4.09 ns 4.09 ns 10 +lstringa<512> copy{str_with_len_N};/32_median 4.08 ns 4.08 ns 10 +lstringa<512> copy{str_with_len_N};/32_stddev 0.066 ns 0.066 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 1.62 % 1.62 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 5.62 ns 5.62 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 5.59 ns 5.59 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.142 ns 0.142 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 2.52 % 2.52 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 7.65 ns 7.65 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 7.51 ns 7.51 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 0.644 ns 0.644 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 8.42 % 8.42 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 7.91 ns 7.91 ns 10 +lstringa<512> copy{str_with_len_N};/256_median 7.95 ns 7.95 ns 10 +lstringa<512> copy{str_with_len_N};/256_stddev 0.160 ns 0.160 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 23.0 ns 23.0 ns 10 +lstringa<512> copy{str_with_len_N};/512_median 23.0 ns 23.0 ns 10 +lstringa<512> copy{str_with_len_N};/512_stddev 0.438 ns 0.438 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 1.90 % 1.90 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 92.2 ns 92.2 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 92.7 ns 92.7 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 5.60 ns 5.60 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 6.08 % 6.08 % 10 +lstringa<512> copy{str_with_len_N};/2048_mean 110 ns 110 ns 10 +lstringa<512> copy{str_with_len_N};/2048_median 108 ns 108 ns 10 +lstringa<512> copy{str_with_len_N};/2048_stddev 9.96 ns 9.96 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 9.04 % 9.04 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 123 ns 123 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 123 ns 123 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 7.26 ns 7.26 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 5.90 % 5.90 % 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 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.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 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 27.0 ns 27.0 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 26.9 ns 26.9 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.838 ns 0.838 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 3.11 % 3.11 % 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 12.2 ns 12.2 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 12.1 ns 12.1 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.205 ns 0.205 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 1.69 % 1.69 % 10 +stringa s = "123456789"; int res = s.to_int_mean 9.52 ns 9.52 ns 10 +stringa s = "123456789"; int res = s.to_int_median 9.35 ns 9.35 ns 10 +stringa s = "123456789"; int res = s.to_int_stddev 0.457 ns 0.457 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 4.80 % 4.80 % 10 +ssa s = "123456789"; int res = s.to_int_mean 7.82 ns 7.82 ns 10 +ssa s = "123456789"; int res = s.to_int_median 7.79 ns 7.79 ns 10 +ssa s = "123456789"; int res = s.to_int_stddev 0.160 ns 0.160 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 2.04 % 2.04 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 8.20 ns 8.20 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 8.17 ns 8.17 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.201 ns 0.201 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 2.45 % 2.45 % 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.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 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 24.2 ns 24.2 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 23.4 ns 23.4 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 1.68 ns 1.68 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 6.96 % 6.96 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.61 ns 9.61 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.50 ns 9.50 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.219 ns 0.219 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 2.27 % 2.27 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 8.48 ns 8.48 ns 10 +stringa s = "abcDef"; int res = s.to_int_median 8.48 ns 8.48 ns 10 +stringa s = "abcDef"; int res = s.to_int_stddev 0.129 ns 0.129 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 1.53 % 1.53 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 7.78 ns 7.78 ns 10 +ssa s = "abcDef"; int res = s.to_int_median 7.73 ns 7.73 ns 10 +ssa s = "abcDef"; int res = s.to_int_stddev 0.279 ns 0.279 ns 10 +ssa s = "abcDef"; int res = s.to_int_cv 3.59 % 3.59 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_mean 8.37 ns 8.37 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_median 8.34 ns 8.34 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.311 ns 0.311 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 3.71 % 3.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 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 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 28.5 ns 28.5 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 0.525 ns 0.525 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 1.84 % 1.84 % 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 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 14.7 ns 14.7 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.522 ns 0.522 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 3.49 % 3.49 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 10.7 ns 10.7 ns 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 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.180 ns 0.180 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 1.68 % 1.68 % 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.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 s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 66.5 ns 66.5 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 64.1 ns 64.1 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 4.78 ns 4.78 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 7.19 % 7.19 % 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 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 25.0 ns 25.0 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 1.50 ns 1.50 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 5.86 % 5.86 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_mean 25.1 ns 25.1 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_median 24.7 ns 24.7 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.920 ns 0.920 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 3.66 % 3.66 % 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 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 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 1342 ns 1342 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 1340 ns 1340 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 34.5 ns 34.5 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 2.57 % 2.57 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 384 ns 384 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 381 ns 381 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 13.5 ns 13.5 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 3.51 % 3.51 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 369 ns 369 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 367 ns 367 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 15.2 ns 15.2 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 4.12 % 4.12 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 275 ns 275 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 281 ns 281 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 19.9 ns 19.9 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 7.23 % 7.23 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 215 ns 215 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 214 ns 214 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 3.06 ns 3.06 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 1.42 % 1.42 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 140 ns 140 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 139 ns 139 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 2.73 ns 2.73 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.95 % 1.95 % 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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 1366 ns 1366 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1366 ns 1366 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 31.4 ns 31.4 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 2.30 % 2.30 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1302 ns 1302 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1294 ns 1294 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 37.1 ns 37.1 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 2.85 % 2.85 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 445 ns 445 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 445 ns 445 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 14.8 ns 14.8 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.32 % 3.32 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 372 ns 372 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 369 ns 369 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 8.87 ns 8.87 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.38 % 2.38 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 325 ns 325 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 322 ns 322 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 12.4 ns 12.4 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.80 % 3.80 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 244 ns 244 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 243 ns 243 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 8.63 ns 8.63 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.53 % 3.53 % 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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 72361 ns 72362 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 72363 ns 72364 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 1875 ns 1875 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 2.59 % 2.59 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 75918 ns 75918 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 74663 ns 74663 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 3656 ns 3656 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.82 % 4.82 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 30423 ns 30423 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 30339 ns 30339 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1316 ns 1316 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.33 % 4.33 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 18518 ns 18518 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 18508 ns 18508 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 450 ns 450 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.43 % 2.43 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17088 ns 17088 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17075 ns 17075 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 315 ns 315 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.84 % 1.84 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17198 ns 17198 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17067 ns 17067 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 349 ns 349 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.03 % 2.03 % 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 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 +std::stringstream str; ... str << str_var1 << str_var2;_mean 1367 ns 1367 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 1356 ns 1356 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 38.7 ns 38.7 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 2.83 % 2.83 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 1440 ns 1440 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 1412 ns 1412 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 104 ns 104 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 7.26 % 7.26 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 539 ns 539 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 46.4 ns 46.4 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 8.61 % 8.61 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 442 ns 442 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 441 ns 441 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 13.0 ns 13.0 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 2.93 % 2.93 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 384 ns 384 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 383 ns 383 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 17.1 ns 17.1 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 4.46 % 4.46 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 305 ns 305 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 304 ns 304 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 5.50 ns 5.50 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 1.80 % 1.80 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::stringstream str; str << "test = " << k << " times";_mean 3038 ns 3038 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 3026 ns 3026 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 83.9 ns 83.9 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 2.76 % 2.76 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 455 ns 455 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 456 ns 456 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 8.02 ns 8.02 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 1.76 % 1.76 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1524 ns 1524 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1516 ns 1516 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 60.8 ns 60.8 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 3.99 % 3.99 % 10 +std::string str = std::format("test = {} times", k);_mean 1257 ns 1257 ns 10 +std::string str = std::format("test = {} times", k);_median 1205 ns 1205 ns 10 +std::string str = std::format("test = {} times", k);_stddev 131 ns 131 ns 10 +std::string str = std::format("test = {} times", k);_cv 10.44 % 10.44 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 1696 ns 1696 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 1683 ns 1683 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 100.0 ns 100.0 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 5.89 % 5.89 % 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 +lstringa<32> str; str.format("test = {} times", k);_median 1034 ns 1034 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 53.0 ns 53.0 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 5.01 % 5.01 % 10 +lstringa<8> str = "test = " + k + " times";_mean 311 ns 311 ns 10 +lstringa<8> str = "test = " + k + " times";_median 305 ns 305 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 14.3 ns 14.3 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 4.60 % 4.60 % 10 +lstringa<32> str = "test = " + k + " times";_mean 165 ns 165 ns 10 +lstringa<32> str = "test = " + k + " times";_median 164 ns 164 ns 10 +lstringa<32> str = "test = " + k + " times";_stddev 5.21 ns 5.21 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 3.15 % 3.15 % 10 +stringa str = "test = " + k + " times";_mean 157 ns 157 ns 10 +stringa str = "test = " + k + " times";_median 155 ns 155 ns 10 +stringa str = "test = " + k + " times";_stddev 7.31 ns 7.31 ns 10 +stringa str = "test = " + k + " times";_cv 4.65 % 4.65 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 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 +std::string::find + substr + std::strtol_mean 266 ns 266 ns 10 +std::string::find + substr + std::strtol_median 264 ns 264 ns 10 +std::string::find + substr + std::strtol_stddev 7.39 ns 7.39 ns 10 +std::string::find + substr + std::strtol_cv 2.78 % 2.78 % 10 +ssa::splitter + ssa::as_int_mean 134 ns 134 ns 10 +ssa::splitter + ssa::as_int_median 133 ns 133 ns 10 +ssa::splitter + ssa::as_int_stddev 2.79 ns 2.79 ns 10 +ssa::splitter + ssa::as_int_cv 2.09 % 2.09 % 10 +ssa::splitf + functor_mean 129 ns 129 ns 10 +ssa::splitf + functor_median 129 ns 129 ns 10 +ssa::splitf + functor_stddev 2.99 ns 2.99 ns 10 +ssa::splitf + functor_cv 2.31 % 2.31 % 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 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 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 +Naive (and wrong) replace symbols with std::string find + replace_mean 892 ns 892 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 853 ns 853 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 102 ns 102 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 11.39 % 11.39 % 10 +replace symbols with std::string find_first_of + replace_mean 2488 ns 2488 ns 10 +replace symbols with std::string find_first_of + replace_median 2477 ns 2477 ns 10 +replace symbols with std::string find_first_of + replace_stddev 57.1 ns 57.1 ns 10 +replace symbols with std::string find_first_of + replace_cv 2.29 % 2.29 % 10 +replace symbols with std::string_view find_first_of + copy_mean 1056 ns 1056 ns 10 +replace symbols with std::string_view find_first_of + copy_median 1052 ns 1052 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 17.6 ns 17.6 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 1.67 % 1.67 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 1534 ns 1534 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 1511 ns 1511 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 145 ns 145 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 9.48 % 9.48 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 1029 ns 1029 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 1025 ns 1025 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 35.4 ns 35.4 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 3.44 % 3.44 % 10 +replace const symbols with string expressions and without remembering all search results_mean 1217 ns 1217 ns 10 +replace const symbols with string expressions and without remembering all search results_median 1215 ns 1215 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 22.7 ns 22.7 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 1.86 % 1.86 % 10 +replace const symbols with string expressions and memorization of all search results_mean 860 ns 860 ns 10 +replace const symbols with string expressions and memorization of all search results_median 858 ns 858 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 21.1 ns 21.1 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 2.45 % 2.45 % 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 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 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 +Short Naive (and wrong) replace symbols with std::string find + replace_mean 164 ns 164 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 162 ns 162 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 5.61 ns 5.61 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 3.41 % 3.41 % 10 +Short replace symbols with std::string find_first_of + replace_mean 347 ns 347 ns 10 +Short replace symbols with std::string find_first_of + replace_median 339 ns 339 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 26.6 ns 26.6 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 7.68 % 7.68 % 10 +Short replace symbols with std::string_view find_first_of + copy_mean 168 ns 168 ns 10 +Short replace symbols with std::string_view find_first_of + copy_median 168 ns 168 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 2.94 ns 2.94 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 1.74 % 1.74 % 10 +Short replace runtime symbols with string expressions and without remembering all search results_mean 190 ns 190 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_median 190 ns 190 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 5.27 ns 5.27 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 2.77 % 2.77 % 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 184 ns 184 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 4.03 ns 4.03 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 2.18 % 2.18 % 10 +Short replace const symbols with string expressions and without remembering all search results_mean 157 ns 157 ns 10 +Short replace const symbols with string expressions and without remembering all search results_median 156 ns 156 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 3.90 ns 3.90 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 2.49 % 2.49 % 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 149 ns 149 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 3.75 ns 3.75 ns 10 +Short replace const symbols with string expressions and memorization of all search results_cv 2.51 % 2.51 % 10 ----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 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 ---- in std::string|64_median 163 ns 163 ns 10 +replace bb to ---- in std::string|64_stddev 2.53 ns 2.53 ns 10 +replace bb to ---- in std::string|64_cv 1.55 % 1.55 % 10 +replace bb to ---- in std::string|256_mean 493 ns 493 ns 10 +replace bb to ---- in std::string|256_median 486 ns 486 ns 10 +replace bb to ---- in std::string|256_stddev 24.8 ns 24.8 ns 10 +replace bb to ---- in std::string|256_cv 5.02 % 5.02 % 10 +replace bb to ---- in std::string|512_mean 980 ns 980 ns 10 +replace bb to ---- in std::string|512_median 971 ns 971 ns 10 +replace bb to ---- in std::string|512_stddev 33.2 ns 33.2 ns 10 +replace bb to ---- in std::string|512_cv 3.39 % 3.39 % 10 +replace bb to ---- in std::string|1024_mean 2467 ns 2467 ns 10 +replace bb to ---- in std::string|1024_median 2487 ns 2487 ns 10 +replace bb to ---- in std::string|1024_stddev 245 ns 245 ns 10 +replace bb to ---- in std::string|1024_cv 9.93 % 9.93 % 10 +replace bb to ---- in std::string|2048_mean 6568 ns 6568 ns 10 +replace bb to ---- in std::string|2048_median 6490 ns 6490 ns 10 +replace bb to ---- in std::string|2048_stddev 496 ns 496 ns 10 +replace bb to ---- in std::string|2048_cv 7.54 % 7.54 % 10 +replace bb to ---- in lstringa<8>|64_mean 158 ns 158 ns 10 +replace bb to ---- in lstringa<8>|64_median 156 ns 156 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 8.53 ns 8.53 ns 10 +replace bb to ---- in lstringa<8>|64_cv 5.39 % 5.39 % 10 +replace bb to ---- in lstringa<8>|256_mean 509 ns 509 ns 10 +replace bb to ---- in lstringa<8>|256_median 503 ns 503 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 35.4 ns 35.4 ns 10 +replace bb to ---- in lstringa<8>|256_cv 6.96 % 6.96 % 10 +replace bb to ---- in lstringa<8>|512_mean 916 ns 916 ns 10 +replace bb to ---- in lstringa<8>|512_median 913 ns 913 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 31.2 ns 31.2 ns 10 +replace bb to ---- in lstringa<8>|512_cv 3.41 % 3.41 % 10 +replace bb to ---- in lstringa<8>|1024_mean 1877 ns 1877 ns 10 +replace bb to ---- in lstringa<8>|1024_median 1866 ns 1866 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 68.4 ns 68.4 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 3.65 % 3.65 % 10 +replace bb to ---- in lstringa<8>|2048_mean 3516 ns 3516 ns 10 +replace bb to ---- in lstringa<8>|2048_median 3525 ns 3525 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 110 ns 110 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 3.12 % 3.12 % 10 +replace bb to ---- by init stringa|64_mean 105 ns 105 ns 10 +replace bb to ---- by init stringa|64_median 101 ns 101 ns 10 +replace bb to ---- by init stringa|64_stddev 9.27 ns 9.27 ns 10 +replace bb to ---- by init stringa|64_cv 8.84 % 8.84 % 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 bb to ---- by init stringa|256_median 295 ns 295 ns 10 +replace bb to ---- by init stringa|256_stddev 23.3 ns 23.3 ns 10 +replace bb to ---- by init stringa|256_cv 7.63 % 7.63 % 10 +replace bb to ---- by init stringa|512_mean 735 ns 735 ns 10 +replace bb to ---- by init stringa|512_median 736 ns 736 ns 10 +replace bb to ---- by init stringa|512_stddev 11.1 ns 11.1 ns 10 +replace bb to ---- by init stringa|512_cv 1.51 % 1.51 % 10 +replace bb to ---- by init stringa|1024_mean 1627 ns 1627 ns 10 +replace bb to ---- by init stringa|1024_median 1622 ns 1622 ns 10 +replace bb to ---- by init stringa|1024_stddev 36.2 ns 36.2 ns 10 +replace bb to ---- by init stringa|1024_cv 2.22 % 2.22 % 10 +replace bb to ---- by init stringa|2048_mean 3391 ns 3391 ns 10 +replace bb to ---- by init stringa|2048_median 3342 ns 3342 ns 10 +replace bb to ---- by init stringa|2048_stddev 129 ns 129 ns 10 +replace bb to ---- by init stringa|2048_cv 3.81 % 3.81 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 -- in std::string|64_mean 121 ns 121 ns 10 +replace bb to -- in std::string|64_median 120 ns 120 ns 10 +replace bb to -- in std::string|64_stddev 3.52 ns 3.52 ns 10 +replace bb to -- in std::string|64_cv 2.91 % 2.91 % 10 +replace bb to -- in std::string|256_mean 407 ns 407 ns 10 +replace bb to -- in std::string|256_median 404 ns 404 ns 10 +replace bb to -- in std::string|256_stddev 12.0 ns 12.0 ns 10 +replace bb to -- in std::string|256_cv 2.94 % 2.94 % 10 +replace bb to -- in std::string|512_mean 710 ns 710 ns 10 +replace bb to -- in std::string|512_median 710 ns 710 ns 10 +replace bb to -- in std::string|512_stddev 15.4 ns 15.4 ns 10 +replace bb to -- in std::string|512_cv 2.17 % 2.17 % 10 +replace bb to -- in std::string|1024_mean 1390 ns 1390 ns 10 +replace bb to -- in std::string|1024_median 1401 ns 1401 ns 10 +replace bb to -- in std::string|1024_stddev 38.0 ns 38.0 ns 10 +replace bb to -- in std::string|1024_cv 2.73 % 2.73 % 10 +replace bb to -- in std::string|2048_mean 2901 ns 2901 ns 10 +replace bb to -- in std::string|2048_median 2880 ns 2880 ns 10 +replace bb to -- in std::string|2048_stddev 119 ns 119 ns 10 +replace bb to -- in std::string|2048_cv 4.12 % 4.12 % 10 +replace bb to -- in lstringa<8>|64_mean 101 ns 101 ns 10 +replace bb to -- in lstringa<8>|64_median 101 ns 101 ns 10 +replace bb to -- in lstringa<8>|64_stddev 2.06 ns 2.06 ns 10 +replace bb to -- in lstringa<8>|64_cv 2.04 % 2.04 % 10 +replace bb to -- in lstringa<8>|256_mean 313 ns 313 ns 10 +replace bb to -- in lstringa<8>|256_median 311 ns 311 ns 10 +replace bb to -- in lstringa<8>|256_stddev 23.9 ns 23.9 ns 10 +replace bb to -- in lstringa<8>|256_cv 7.63 % 7.63 % 10 +replace bb to -- in lstringa<8>|512_mean 561 ns 561 ns 10 +replace bb to -- in lstringa<8>|512_median 546 ns 546 ns 10 +replace bb to -- in lstringa<8>|512_stddev 45.1 ns 45.1 ns 10 +replace bb to -- in lstringa<8>|512_cv 8.03 % 8.03 % 10 +replace bb to -- in lstringa<8>|1024_mean 1194 ns 1194 ns 10 +replace bb to -- in lstringa<8>|1024_median 1180 ns 1180 ns 10 +replace bb to -- in lstringa<8>|1024_stddev 94.6 ns 94.6 ns 10 +replace bb to -- in lstringa<8>|1024_cv 7.92 % 7.92 % 10 +replace bb to -- in lstringa<8>|2048_mean 2106 ns 2106 ns 10 +replace bb to -- in lstringa<8>|2048_median 2106 ns 2106 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 40.8 ns 40.8 ns 10 +replace bb to -- in lstringa<8>|2048_cv 1.94 % 1.94 % 10 +replace bb to -- by init stringa|64_mean 96.9 ns 96.9 ns 10 +replace bb to -- by init stringa|64_median 96.7 ns 96.7 ns 10 +replace bb to -- by init stringa|64_stddev 1.55 ns 1.55 ns 10 +replace bb to -- by init stringa|64_cv 1.60 % 1.60 % 10 +replace bb to -- by init stringa|256_mean 269 ns 269 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 +replace bb to -- by init stringa|256_stddev 7.18 ns 7.18 ns 10 +replace bb to -- by init stringa|256_cv 2.67 % 2.67 % 10 +replace bb to -- by init stringa|512_mean 512 ns 512 ns 10 +replace bb to -- by init stringa|512_median 512 ns 512 ns 10 +replace bb to -- by init stringa|512_stddev 9.10 ns 9.10 ns 10 +replace bb to -- by init stringa|512_cv 1.78 % 1.78 % 10 +replace bb to -- by init stringa|1024_mean 1030 ns 1030 ns 10 +replace bb to -- by init stringa|1024_median 1037 ns 1037 ns 10 +replace bb to -- by init stringa|1024_stddev 21.1 ns 21.1 ns 10 +replace bb to -- by init stringa|1024_cv 2.05 % 2.05 % 10 +replace bb to -- by init stringa|2048_mean 1958 ns 1958 ns 10 +replace bb to -- by init stringa|2048_median 1957 ns 1957 ns 10 +replace bb to -- by init stringa|2048_stddev 26.3 ns 26.3 ns 10 +replace bb to -- by init stringa|2048_cv 1.35 % 1.35 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +hashStrMapA emplace & find stringa;_mean 3615004 ns 3615019 ns 10 +hashStrMapA emplace & find stringa;_median 3609900 ns 3609915 ns 10 +hashStrMapA emplace & find stringa;_stddev 71410 ns 71410 ns 10 +hashStrMapA emplace & find stringa;_cv 1.98 % 1.98 % 10 +std::unordered_map emplace & find std::string;_mean 3642731 ns 3642743 ns 10 +std::unordered_map emplace & find std::string;_median 3661182 ns 3661193 ns 10 +std::unordered_map emplace & find std::string;_stddev 206184 ns 206185 ns 10 +std::unordered_map emplace & find std::string;_cv 5.66 % 5.66 % 10 +hashStrMapA emplace & find ssa;_mean 3606655 ns 3606670 ns 10 +hashStrMapA emplace & find ssa;_median 3609704 ns 3609719 ns 10 +hashStrMapA emplace & find ssa;_stddev 35780 ns 35778 ns 10 +hashStrMapA emplace & find ssa;_cv 0.99 % 0.99 % 10 +std::unordered_map emplace & find std::string_view;_mean 3902358 ns 3902371 ns 10 +std::unordered_map emplace & find std::string_view;_median 3907377 ns 3907388 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 68347 ns 68348 ns 10 +std::unordered_map emplace & find std::string_view;_cv 1.75 % 1.75 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Build func full name std::string;_mean 976 ns 976 ns 10 +Build func full name std::string;_median 959 ns 959 ns 10 +Build func full name std::string;_stddev 48.5 ns 48.5 ns 10 +Build func full name std::string;_cv 4.97 % 4.97 % 10 +Build func full name std::string 1;_mean 1053 ns 1053 ns 10 +Build func full name std::string 1;_median 1055 ns 1055 ns 10 +Build func full name std::string 1;_stddev 19.5 ns 19.5 ns 10 +Build func full name std::string 1;_cv 1.85 % 1.85 % 10 +Build func full name std::stream;_mean 2517 ns 2517 ns 10 +Build func full name std::stream;_median 2520 ns 2520 ns 10 +Build func full name std::stream;_stddev 55.2 ns 55.2 ns 10 +Build func full name std::stream;_cv 2.19 % 2.19 % 10 +Build func full name stringa;_mean 466 ns 466 ns 10 +Build func full name stringa;_median 463 ns 463 ns 10 +Build func full name stringa;_stddev 16.4 ns 16.4 ns 10 +Build func full name stringa;_cv 3.51 % 3.51 % 10 +Build func full name stringa 1;_mean 694 ns 694 ns 10 +Build func full name stringa 1;_median 683 ns 683 ns 10 +Build func full name stringa 1;_stddev 38.4 ns 38.4 ns 10 +Build func full name stringa 1;_cv 5.54 % 5.54 % 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 59bf7da..2e89417 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-29T19:33:03+03:00 +2026-01-30T14:37:24+03:00 Running benchStr.exe Run on (32 X 2494 MHz CPU s) CPU Caches: @@ -10,879 +10,887 @@ 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 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 +Concat std::string and number by std to std::string_mean 263 ns 263 ns 10 +Concat std::string and number by std to std::string_median 261 ns 261 ns 10 +Concat std::string and number by std to std::string_stddev 9.23 ns 9.70 ns 10 +Concat std::string and number by std to std::string_cv 3.51 % 3.69 % 10 +Concat std::string and number by StrExpr to std::string_mean 152 ns 152 ns 10 +Concat std::string and number by StrExpr to std::string_median 152 ns 153 ns 10 +Concat std::string and number by StrExpr to std::string_stddev 2.17 ns 2.47 ns 10 +Concat std::string and number by StrExpr to std::string_cv 1.42 % 1.63 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 67.5 ns 67.4 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 3.22 ns 3.16 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 4.78 % 4.69 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 74.8 ns 74.6 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 75.0 ns 75.0 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 1.62 ns 1.38 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 2.17 % 1.84 % 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 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 +Concat std::string and format hex number and literal to std::string_mean 717 ns 716 ns 10 +Concat std::string and format hex number and literal to std::string_median 714 ns 711 ns 10 +Concat std::string and format hex number and literal to std::string_stddev 22.9 ns 19.8 ns 10 +Concat std::string and format hex number and literal to std::string_cv 3.19 % 2.76 % 10 +std::format std::string and hex number by literal to std::string_mean 1502 ns 1496 ns 10 +std::format std::string and hex number by literal to std::string_median 1491 ns 1465 ns 10 +std::format std::string and hex number by literal to std::string_stddev 82.1 ns 95.1 ns 10 +std::format std::string and hex number by literal to std::string_cv 5.46 % 6.36 % 10 +Concat std::string and std::tochars and string to std::string_mean 193 ns 193 ns 10 +Concat std::string and std::tochars and string to std::string_median 192 ns 190 ns 10 +Concat std::string and std::tochars and string to std::string_stddev 6.73 ns 8.60 ns 10 +Concat std::string and std::tochars and string to std::string_cv 3.50 % 4.47 % 10 +Concat std::string and hex number and literal by StrExpr to std::string_mean 80.5 ns 80.6 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_median 79.5 ns 79.3 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_stddev 3.31 ns 3.37 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_cv 4.12 % 4.18 % 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 72.0 ns 72.0 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 71.7 ns 71.1 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 2.42 ns 2.81 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 3.36 % 3.90 % 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 81.6 ns 81.4 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_median 81.8 ns 82.0 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 1.75 ns 2.02 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 2.14 % 2.48 % 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_mean 152 ns 152 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_median 152 ns 152 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 5.56 ns 5.94 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_cv 3.64 % 3.90 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Concat std::string by std to std::string_mean 40.2 ns 40.2 ns 10 +Concat std::string by std to std::string_median 40.9 ns 40.5 ns 10 +Concat std::string by std to std::string_stddev 1.90 ns 1.78 ns 10 +Concat std::string by std to std::string_cv 4.73 % 4.42 % 10 +Concat std::string by StrExpr to std::string_mean 39.0 ns 38.9 ns 10 +Concat std::string by StrExpr to std::string_median 38.9 ns 38.9 ns 10 +Concat std::string by StrExpr to std::string_stddev 0.426 ns 0.711 ns 10 +Concat std::string by StrExpr to std::string_cv 1.09 % 1.83 % 10 +Concat stringa by StrExpr to stringa_mean 28.5 ns 28.4 ns 10 +Concat stringa by StrExpr to stringa_median 28.5 ns 28.3 ns 10 +Concat stringa by StrExpr to stringa_stddev 0.470 ns 0.424 ns 10 +Concat stringa by StrExpr to stringa_cv 1.65 % 1.49 % 10 ----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Find concat three std::string_mean 219 ns 218 ns 10 +Find concat three std::string_median 212 ns 209 ns 10 +Find concat three std::string_stddev 16.3 ns 16.2 ns 10 +Find concat three std::string_cv 7.45 % 7.45 % 10 +Find concat three strexpr_mean 132 ns 132 ns 10 +Find concat three strexpr_median 132 ns 132 ns 10 +Find concat three strexpr_stddev 7.74 ns 7.61 ns 10 +Find concat three strexpr_cv 5.85 % 5.76 % 10 +Find concat three simstr_mean 27.7 ns 27.7 ns 10 +Find concat three simstr_median 27.4 ns 27.3 ns 10 +Find concat three simstr_stddev 1.02 ns 0.780 ns 10 +Find concat three simstr_cv 3.67 % 2.82 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +BuildTypeNameStr 0/0_mean 8.25 ns 8.24 ns 10 +BuildTypeNameStr 0/0_median 8.08 ns 8.09 ns 10 +BuildTypeNameStr 0/0_stddev 0.433 ns 0.453 ns 10 +BuildTypeNameStr 0/0_cv 5.25 % 5.49 % 10 +BuildTypeNameExp 0/0_mean 7.79 ns 7.74 ns 10 +BuildTypeNameExp 0/0_median 7.80 ns 7.67 ns 10 +BuildTypeNameExp 0/0_stddev 0.150 ns 0.205 ns 10 +BuildTypeNameExp 0/0_cv 1.92 % 2.64 % 10 +BuildTypeNameSim 0/0_mean 7.83 ns 7.83 ns 10 +BuildTypeNameSim 0/0_median 7.81 ns 7.81 ns 10 +BuildTypeNameSim 0/0_stddev 0.235 ns 0.241 ns 10 +BuildTypeNameSim 0/0_cv 3.00 % 3.08 % 10 +BuildTypeNameStr 10/10_mean 63.1 ns 62.9 ns 10 +BuildTypeNameStr 10/10_median 63.2 ns 63.5 ns 10 +BuildTypeNameStr 10/10_stddev 4.50 ns 4.85 ns 10 +BuildTypeNameStr 10/10_cv 7.14 % 7.71 % 10 +BuildTypeNameExp 10/10_mean 35.1 ns 35.1 ns 10 +BuildTypeNameExp 10/10_median 34.5 ns 34.8 ns 10 +BuildTypeNameExp 10/10_stddev 2.05 ns 2.24 ns 10 +BuildTypeNameExp 10/10_cv 5.85 % 6.39 % 10 +BuildTypeNameSim 10/10_mean 25.7 ns 25.7 ns 10 +BuildTypeNameSim 10/10_median 25.2 ns 25.2 ns 10 +BuildTypeNameSim 10/10_stddev 1.43 ns 1.51 ns 10 +BuildTypeNameSim 10/10_cv 5.57 % 5.87 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Concat with replace str_mean 308 ns 307 ns 10 +Concat with replace str_median 307 ns 305 ns 10 +Concat with replace str_stddev 8.89 ns 8.86 ns 10 +Concat with replace str_cv 2.89 % 2.89 % 10 +Concat with replace exp_mean 217 ns 216 ns 10 +Concat with replace exp_median 216 ns 217 ns 10 +Concat with replace exp_stddev 10.5 ns 11.9 ns 10 +Concat with replace exp_cv 4.86 % 5.52 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 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 +std::string e;_mean 1.13 ns 1.12 ns 10 +std::string e;_median 1.11 ns 1.10 ns 10 +std::string e;_stddev 0.056 ns 0.052 ns 10 +std::string e;_cv 4.93 % 4.69 % 10 +std::string_view e;_mean 0.364 ns 0.363 ns 10 +std::string_view e;_median 0.363 ns 0.361 ns 10 +std::string_view e;_stddev 0.005 ns 0.006 ns 10 +std::string_view e;_cv 1.42 % 1.75 % 10 +ssa e;_mean 0.360 ns 0.359 ns 10 +ssa e;_median 0.358 ns 0.361 ns 10 +ssa e;_stddev 0.007 ns 0.009 ns 10 +ssa e;_cv 1.86 % 2.53 % 10 +stringa e;_mean 0.739 ns 0.739 ns 10 +stringa e;_median 0.730 ns 0.732 ns 10 +stringa e;_stddev 0.024 ns 0.024 ns 10 +stringa e;_cv 3.23 % 3.21 % 10 +lstringa<20> e;_mean 1.11 ns 1.11 ns 10 +lstringa<20> e;_median 1.11 ns 1.10 ns 10 +lstringa<20> e;_stddev 0.033 ns 0.035 ns 10 +lstringa<20> e;_cv 2.98 % 3.15 % 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.033 ns 0.035 ns 10 +lstringa<40> e;_cv 2.98 % 3.15 % 10 ----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e = "Test text";_mean 1.86 ns 1.86 ns 10 +std::string e = "Test text";_median 1.82 ns 1.82 ns 10 +std::string e = "Test text";_stddev 0.100 ns 0.107 ns 10 +std::string e = "Test text";_cv 5.41 % 5.74 % 10 +std::string_view e = "Test text";_mean 0.728 ns 0.725 ns 10 +std::string_view e = "Test text";_median 0.724 ns 0.724 ns 10 +std::string_view e = "Test text";_stddev 0.025 ns 0.025 ns 10 +std::string_view e = "Test text";_cv 3.45 % 3.44 % 10 +ssa e = "Test text";_mean 0.362 ns 0.361 ns 10 +ssa e = "Test text";_median 0.362 ns 0.361 ns 10 +ssa e = "Test text";_stddev 0.008 ns 0.008 ns 10 +ssa e = "Test text";_cv 2.17 % 2.34 % 10 +stringa e = "Test text";_mean 1.11 ns 1.10 ns 10 +stringa e = "Test text";_median 1.11 ns 1.10 ns 10 +stringa e = "Test text";_stddev 0.018 ns 0.025 ns 10 +stringa e = "Test text";_cv 1.60 % 2.28 % 10 +lstringa<20> e = "Test text";_mean 1.83 ns 1.82 ns 10 +lstringa<20> e = "Test text";_median 1.83 ns 1.84 ns 10 +lstringa<20> e = "Test text";_stddev 0.033 ns 0.037 ns 10 +lstringa<20> e = "Test text";_cv 1.80 % 2.05 % 10 +lstringa<40> e = "Test text";_mean 1.89 ns 1.89 ns 10 +lstringa<40> e = "Test text";_median 1.88 ns 1.88 ns 10 +lstringa<40> e = "Test text";_stddev 0.070 ns 0.067 ns 10 +lstringa<40> e = "Test text";_cv 3.72 % 3.56 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e = "123456789012345678901234567890";_mean 71.2 ns 71.1 ns 10 +std::string e = "123456789012345678901234567890";_median 71.0 ns 71.5 ns 10 +std::string e = "123456789012345678901234567890";_stddev 2.16 ns 2.57 ns 10 +std::string e = "123456789012345678901234567890";_cv 3.04 % 3.62 % 10 +std::string_view e = "123456789012345678901234567890";_mean 0.722 ns 0.720 ns 10 +std::string_view e = "123456789012345678901234567890";_median 0.721 ns 0.715 ns 10 +std::string_view e = "123456789012345678901234567890";_stddev 0.010 ns 0.008 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 1.42 % 1.17 % 10 +ssa e = "123456789012345678901234567890";_mean 0.363 ns 0.363 ns 10 +ssa e = "123456789012345678901234567890";_median 0.361 ns 0.361 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.005 ns 0.006 ns 10 +ssa e = "123456789012345678901234567890";_cv 1.29 % 1.75 % 10 +stringa e = "123456789012345678901234567890";_mean 1.09 ns 1.09 ns 10 +stringa e = "123456789012345678901234567890";_median 1.10 ns 1.10 ns 10 +stringa e = "123456789012345678901234567890";_stddev 0.016 ns 0.021 ns 10 +stringa e = "123456789012345678901234567890";_cv 1.50 % 1.89 % 10 +lstringa<20> e = "123456789012345678901234567890";_mean 72.4 ns 72.3 ns 10 +lstringa<20> e = "123456789012345678901234567890";_median 72.6 ns 72.5 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 1.82 ns 1.84 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 2.52 % 2.54 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 2.53 ns 2.52 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 2.51 ns 2.51 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.041 ns 0.035 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 1.63 % 1.40 % 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.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 +std::string e = "Test text"; auto c{e};_median 1.84 ns 1.84 ns 10 +std::string e = "Test text"; auto c{e};_stddev 0.024 ns 0.047 ns 10 +std::string e = "Test text"; auto c{e};_cv 1.31 % 2.57 % 10 +std::string_view e = "Test text"; auto c{e};_mean 0.363 ns 0.363 ns 10 +std::string_view e = "Test text"; auto c{e};_median 0.362 ns 0.361 ns 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.006 ns 0.008 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 1.68 % 2.09 % 10 +ssa e = "Test text"; auto c{e};_mean 0.367 ns 0.365 ns 10 +ssa e = "Test text"; auto c{e};_median 0.366 ns 0.364 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.006 ns 0.010 ns 10 +ssa e = "Test text"; auto c{e};_cv 1.65 % 2.69 % 10 +stringa e = "Test text"; auto c{e};_mean 1.28 ns 1.28 ns 10 +stringa e = "Test text"; auto c{e};_median 1.27 ns 1.27 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.021 ns 0.023 ns 10 +stringa e = "Test text"; auto c{e};_cv 1.66 % 1.80 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 5.19 ns 5.19 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 5.12 ns 5.16 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.405 ns 0.415 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 7.80 % 7.99 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 4.84 ns 4.83 ns 10 +lstringa<40> e = "Test text"; auto c{e};_median 4.79 ns 4.76 ns 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 0.254 ns 0.274 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 5.25 % 5.66 % 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 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 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 75.0 ns 74.8 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 74.5 ns 74.1 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 2.25 ns 1.73 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 3.00 % 2.32 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.726 ns 0.724 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.728 ns 0.724 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.009 ns 0.009 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.25 % 1.27 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.362 ns 0.360 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 0.363 ns 0.361 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.005 ns 0.007 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 1.32 % 1.95 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.84 ns 1.84 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 1.82 ns 1.82 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.052 ns 0.064 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 2.83 % 3.47 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 75.5 ns 75.3 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 75.0 ns 75.9 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 2.57 ns 2.70 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 3.40 % 3.59 % 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.47 ns 4.47 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 4.46 ns 4.45 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.166 ns 0.190 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 3.70 % 4.24 % 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.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 +std::string::find;_mean 39.2 ns 39.1 ns 10 +std::string::find;_median 39.1 ns 39.2 ns 10 +std::string::find;_stddev 0.874 ns 1.29 ns 10 +std::string::find;_cv 2.23 % 3.29 % 10 +std::string_view::find;_mean 39.4 ns 39.4 ns 10 +std::string_view::find;_median 39.1 ns 39.3 ns 10 +std::string_view::find;_stddev 1.48 ns 1.39 ns 10 +std::string_view::find;_cv 3.75 % 3.53 % 10 +ssa::find;_mean 17.7 ns 17.6 ns 10 +ssa::find;_median 17.6 ns 17.6 ns 10 +ssa::find;_stddev 0.642 ns 0.585 ns 10 +ssa::find;_cv 3.63 % 3.32 % 10 +stringa::find;_mean 18.0 ns 18.1 ns 10 +stringa::find;_median 18.1 ns 18.0 ns 10 +stringa::find;_stddev 0.476 ns 0.526 ns 10 +stringa::find;_cv 2.64 % 2.91 % 10 +lstringa<20>::find;_mean 18.6 ns 18.6 ns 10 +lstringa<20>::find;_median 18.4 ns 18.4 ns 10 +lstringa<20>::find;_stddev 0.914 ns 0.990 ns 10 +lstringa<20>::find;_cv 4.91 % 5.33 % 10 +lstringa<40>::find;_mean 17.6 ns 17.5 ns 10 +lstringa<40>::find;_median 17.9 ns 17.8 ns 10 +lstringa<40>::find;_stddev 0.550 ns 0.702 ns 10 +lstringa<40>::find;_cv 3.12 % 4.00 % 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.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.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 +std::string copy{str_with_len_N};/15_mean 1.83 ns 1.82 ns 10 +std::string copy{str_with_len_N};/15_median 1.83 ns 1.80 ns 10 +std::string copy{str_with_len_N};/15_stddev 0.031 ns 0.040 ns 10 +std::string copy{str_with_len_N};/15_cv 1.70 % 2.22 % 10 +std::string copy{str_with_len_N};/16_mean 77.0 ns 77.0 ns 10 +std::string copy{str_with_len_N};/16_median 76.5 ns 77.4 ns 10 +std::string copy{str_with_len_N};/16_stddev 2.00 ns 1.65 ns 10 +std::string copy{str_with_len_N};/16_cv 2.60 % 2.14 % 10 +std::string copy{str_with_len_N};/23_mean 76.6 ns 76.6 ns 10 +std::string copy{str_with_len_N};/23_median 76.4 ns 75.9 ns 10 +std::string copy{str_with_len_N};/23_stddev 2.18 ns 2.53 ns 10 +std::string copy{str_with_len_N};/23_cv 2.84 % 3.30 % 10 +std::string copy{str_with_len_N};/24_mean 78.5 ns 78.3 ns 10 +std::string copy{str_with_len_N};/24_median 78.1 ns 77.4 ns 10 +std::string copy{str_with_len_N};/24_stddev 4.12 ns 3.92 ns 10 +std::string copy{str_with_len_N};/24_cv 5.25 % 5.00 % 10 +std::string copy{str_with_len_N};/32_mean 83.9 ns 83.7 ns 10 +std::string copy{str_with_len_N};/32_median 82.2 ns 82.0 ns 10 +std::string copy{str_with_len_N};/32_stddev 7.49 ns 7.67 ns 10 +std::string copy{str_with_len_N};/32_cv 8.93 % 9.16 % 10 +std::string copy{str_with_len_N};/64_mean 80.9 ns 80.7 ns 10 +std::string copy{str_with_len_N};/64_median 79.3 ns 78.5 ns 10 +std::string copy{str_with_len_N};/64_stddev 4.28 ns 4.35 ns 10 +std::string copy{str_with_len_N};/64_cv 5.28 % 5.39 % 10 +std::string copy{str_with_len_N};/128_mean 87.4 ns 87.4 ns 10 +std::string copy{str_with_len_N};/128_median 83.5 ns 83.0 ns 10 +std::string copy{str_with_len_N};/128_stddev 7.38 ns 7.44 ns 10 +std::string copy{str_with_len_N};/128_cv 8.44 % 8.51 % 10 +std::string copy{str_with_len_N};/256_mean 84.4 ns 84.3 ns 10 +std::string copy{str_with_len_N};/256_median 84.4 ns 83.7 ns 10 +std::string copy{str_with_len_N};/256_stddev 1.25 ns 1.72 ns 10 +std::string copy{str_with_len_N};/256_cv 1.48 % 2.04 % 10 +std::string copy{str_with_len_N};/512_mean 86.3 ns 86.3 ns 10 +std::string copy{str_with_len_N};/512_median 85.9 ns 85.4 ns 10 +std::string copy{str_with_len_N};/512_stddev 1.68 ns 1.88 ns 10 +std::string copy{str_with_len_N};/512_cv 1.94 % 2.18 % 10 +std::string copy{str_with_len_N};/1024_mean 94.3 ns 94.2 ns 10 +std::string copy{str_with_len_N};/1024_median 93.6 ns 93.1 ns 10 +std::string copy{str_with_len_N};/1024_stddev 3.12 ns 2.96 ns 10 +std::string copy{str_with_len_N};/1024_cv 3.31 % 3.14 % 10 +std::string copy{str_with_len_N};/2048_mean 131 ns 131 ns 10 +std::string copy{str_with_len_N};/2048_median 129 ns 128 ns 10 +std::string copy{str_with_len_N};/2048_stddev 9.09 ns 9.37 ns 10 +std::string copy{str_with_len_N};/2048_cv 6.96 % 7.18 % 10 +std::string copy{str_with_len_N};/4096_mean 192 ns 192 ns 10 +std::string copy{str_with_len_N};/4096_median 193 ns 193 ns 10 +std::string copy{str_with_len_N};/4096_stddev 10.1 ns 9.63 ns 10 +std::string copy{str_with_len_N};/4096_cv 5.28 % 5.02 % 10 +stringa copy{str_with_len_N};/15_mean 1.29 ns 1.29 ns 10 +stringa copy{str_with_len_N};/15_median 1.28 ns 1.29 ns 10 +stringa copy{str_with_len_N};/15_stddev 0.050 ns 0.051 ns 10 +stringa copy{str_with_len_N};/15_cv 3.90 % 3.98 % 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.26 ns 1.27 ns 10 +stringa copy{str_with_len_N};/16_stddev 0.051 ns 0.048 ns 10 +stringa copy{str_with_len_N};/16_cv 3.95 % 3.73 % 10 +stringa copy{str_with_len_N};/23_mean 1.27 ns 1.27 ns 10 +stringa copy{str_with_len_N};/23_median 1.27 ns 1.27 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.025 ns 0.033 ns 10 +stringa copy{str_with_len_N};/23_cv 1.94 % 2.59 % 10 +stringa copy{str_with_len_N};/24_mean 16.3 ns 16.4 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 1.35 ns 1.26 ns 10 +stringa copy{str_with_len_N};/24_cv 8.27 % 7.68 % 10 +stringa copy{str_with_len_N};/32_mean 15.9 ns 15.9 ns 10 +stringa copy{str_with_len_N};/32_median 15.9 ns 15.9 ns 10 +stringa copy{str_with_len_N};/32_stddev 0.251 ns 0.287 ns 10 +stringa copy{str_with_len_N};/32_cv 1.58 % 1.80 % 10 +stringa copy{str_with_len_N};/64_mean 16.0 ns 15.9 ns 10 +stringa copy{str_with_len_N};/64_median 15.9 ns 16.0 ns 10 +stringa copy{str_with_len_N};/64_stddev 0.339 ns 0.235 ns 10 +stringa copy{str_with_len_N};/64_cv 2.12 % 1.48 % 10 +stringa copy{str_with_len_N};/128_mean 15.8 ns 15.8 ns 10 +stringa copy{str_with_len_N};/128_median 15.8 ns 15.7 ns 10 +stringa copy{str_with_len_N};/128_stddev 0.087 ns 0.168 ns 10 +stringa copy{str_with_len_N};/128_cv 0.55 % 1.07 % 10 +stringa copy{str_with_len_N};/256_mean 15.8 ns 15.8 ns 10 +stringa copy{str_with_len_N};/256_median 15.8 ns 15.7 ns 10 +stringa copy{str_with_len_N};/256_stddev 0.067 ns 0.147 ns 10 +stringa copy{str_with_len_N};/256_cv 0.43 % 0.93 % 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.053 ns 0.218 ns 10 +stringa copy{str_with_len_N};/512_cv 0.34 % 1.39 % 10 +stringa copy{str_with_len_N};/1024_mean 15.8 ns 15.8 ns 10 +stringa copy{str_with_len_N};/1024_median 15.8 ns 15.7 ns 10 +stringa copy{str_with_len_N};/1024_stddev 0.076 ns 0.162 ns 10 +stringa copy{str_with_len_N};/1024_cv 0.48 % 1.02 % 10 +stringa copy{str_with_len_N};/2048_mean 15.7 ns 15.7 ns 10 +stringa copy{str_with_len_N};/2048_median 15.7 ns 15.7 ns 10 +stringa copy{str_with_len_N};/2048_stddev 0.085 ns 0.110 ns 10 +stringa copy{str_with_len_N};/2048_cv 0.54 % 0.70 % 10 +stringa copy{str_with_len_N};/4096_mean 15.8 ns 15.7 ns 10 +stringa copy{str_with_len_N};/4096_median 15.8 ns 15.7 ns 10 +stringa copy{str_with_len_N};/4096_stddev 0.080 ns 0.198 ns 10 +stringa copy{str_with_len_N};/4096_cv 0.51 % 1.26 % 10 +lstringa<16> copy{str_with_len_N};/15_mean 4.42 ns 4.42 ns 10 +lstringa<16> copy{str_with_len_N};/15_median 4.39 ns 4.40 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.099 ns 0.107 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 2.23 % 2.42 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 4.48 ns 4.48 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 4.40 ns 4.40 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 0.194 ns 0.208 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 4.34 % 4.64 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 5.05 ns 5.03 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 5.06 ns 5.08 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 0.537 ns 0.498 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 10.62 % 9.91 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 74.9 ns 74.8 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 74.7 ns 73.9 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 1.87 ns 2.10 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 2.50 % 2.81 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 83.3 ns 83.3 ns 10 +lstringa<16> copy{str_with_len_N};/32_median 83.1 ns 82.7 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 2.07 ns 2.57 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 2.48 % 3.09 % 10 +lstringa<16> copy{str_with_len_N};/64_mean 77.8 ns 77.6 ns 10 +lstringa<16> copy{str_with_len_N};/64_median 77.8 ns 77.6 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 1.99 ns 1.88 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 2.56 % 2.43 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 83.5 ns 83.2 ns 10 +lstringa<16> copy{str_with_len_N};/128_median 81.6 ns 81.1 ns 10 +lstringa<16> copy{str_with_len_N};/128_stddev 7.48 ns 7.63 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 8.95 % 9.17 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 82.5 ns 82.7 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 82.7 ns 82.7 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 1.85 ns 1.78 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 2.24 % 2.15 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 85.9 ns 86.0 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 85.7 ns 85.8 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 2.20 ns 2.69 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 2.56 % 3.13 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 98.4 ns 98.1 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 98.0 ns 97.7 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 3.88 ns 4.72 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 3.95 % 4.81 % 10 +lstringa<16> copy{str_with_len_N};/2048_mean 127 ns 127 ns 10 +lstringa<16> copy{str_with_len_N};/2048_median 127 ns 127 ns 10 +lstringa<16> copy{str_with_len_N};/2048_stddev 6.31 ns 6.31 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 4.97 % 4.98 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 181 ns 181 ns 10 +lstringa<16> copy{str_with_len_N};/4096_median 181 ns 182 ns 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 2.58 ns 3.45 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 1.42 % 1.90 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 5.16 ns 5.16 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 5.12 ns 5.16 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 0.390 ns 0.411 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 7.56 % 7.96 % 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.19 ns 5.16 ns 10 +lstringa<512> copy{str_with_len_N};/16_stddev 0.454 ns 0.467 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 8.70 % 8.95 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 4.84 ns 4.83 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 4.76 ns 4.81 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 0.208 ns 0.198 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 4.30 % 4.09 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 4.82 ns 4.81 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 4.79 ns 4.81 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.154 ns 0.127 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 3.19 % 2.65 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 7.79 ns 7.76 ns 10 +lstringa<512> copy{str_with_len_N};/32_median 7.81 ns 7.76 ns 10 +lstringa<512> copy{str_with_len_N};/32_stddev 0.193 ns 0.188 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 2.48 % 2.43 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 7.74 ns 7.73 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 7.73 ns 7.67 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.182 ns 0.230 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 2.35 % 2.97 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 8.17 ns 8.18 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 8.16 ns 8.20 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 0.200 ns 0.192 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 2.44 % 2.35 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 9.12 ns 9.10 ns 10 +lstringa<512> copy{str_with_len_N};/256_median 9.10 ns 9.00 ns 10 +lstringa<512> copy{str_with_len_N};/256_stddev 0.250 ns 0.226 ns 10 +lstringa<512> copy{str_with_len_N};/256_cv 2.74 % 2.48 % 10 +lstringa<512> copy{str_with_len_N};/512_mean 10.8 ns 10.8 ns 10 +lstringa<512> copy{str_with_len_N};/512_median 10.8 ns 10.9 ns 10 +lstringa<512> copy{str_with_len_N};/512_stddev 0.309 ns 0.385 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 2.87 % 3.57 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 100 ns 100 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 101 ns 101 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 7.97 ns 7.63 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 7.96 % 7.63 % 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.54 ns 5.74 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 4.34 % 4.52 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 187 ns 187 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 188 ns 188 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 3.95 ns 4.04 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 2.11 % 2.17 % 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 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 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 31.0 ns 31.0 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 30.9 ns 30.7 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.439 ns 0.360 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 1.42 % 1.16 % 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 14.0 ns 13.9 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 13.9 ns 13.8 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.290 ns 0.219 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 2.08 % 1.57 % 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.0 ns 14.0 ns 10 +stringa s = "123456789"; int res = s.to_int_stddev 0.356 ns 0.404 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 2.52 % 2.87 % 10 +ssa s = "123456789"; int res = s.to_int_mean 13.4 ns 13.3 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.204 ns 0.305 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 1.53 % 2.29 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 14.1 ns 14.1 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 13.8 ns 13.8 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.701 ns 0.717 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 4.97 % 5.08 % 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.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 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 34.0 ns 33.8 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 33.7 ns 33.8 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.985 ns 0.919 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 2.90 % 2.71 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 8.09 ns 8.09 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 8.06 ns 8.11 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.128 ns 0.168 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 1.58 % 2.08 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 12.4 ns 12.4 ns 10 +stringa s = "abcDef"; int res = s.to_int_median 12.4 ns 12.3 ns 10 +stringa s = "abcDef"; int res = s.to_int_stddev 0.262 ns 0.265 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 2.12 % 2.14 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 12.1 ns 12.1 ns 10 +ssa s = "abcDef"; int res = s.to_int_median 12.1 ns 12.0 ns 10 +ssa s = "abcDef"; int res = s.to_int_stddev 0.271 ns 0.300 ns 10 +ssa s = "abcDef"; int res = s.to_int_cv 2.23 % 2.48 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_mean 12.2 ns 12.1 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_median 12.1 ns 12.0 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.270 ns 0.329 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 2.22 % 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 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 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 43.2 ns 43.1 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 43.3 ns 43.0 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 0.942 ns 1.07 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 2.18 % 2.50 % 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 18.6 ns 18.6 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 18.6 ns 18.6 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.423 ns 0.478 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 2.27 % 2.57 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 15.6 ns 15.5 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 15.5 ns 15.5 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.549 ns 0.559 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 3.53 % 3.59 % 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 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 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 101 ns 101 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 101 ns 101 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 2.42 ns 2.43 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 2.39 % 2.40 % 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 60.4 ns 60.0 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 59.8 ns 60.0 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 2.39 ns 2.79 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 3.96 % 4.65 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_mean 34.9 ns 34.8 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_median 35.0 ns 34.9 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.482 ns 0.537 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 1.38 % 1.54 % 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 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 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 4911 ns 4891 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 4908 ns 4922 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 150 ns 166 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 3.06 % 3.38 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 1071 ns 1067 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 1057 ns 1050 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 55.2 ns 61.0 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 5.15 % 5.71 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 734 ns 731 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 733 ns 732 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 9.55 ns 13.5 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 1.30 % 1.84 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 406 ns 405 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 398 ns 397 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 35.7 ns 36.5 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 8.80 % 9.01 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 229 ns 228 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 228 ns 228 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 3.63 ns 3.66 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 1.58 % 1.60 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 153 ns 152 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 153 ns 153 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 1.66 ns 2.94 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.09 % 1.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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 4649 ns 4635 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 4635 ns 4656 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 162 ns 140 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 3.48 % 3.02 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 3931 ns 3932 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 3897 ns 3924 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 113 ns 119 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 2.87 % 3.04 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 745 ns 745 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 727 ns 724 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 64.7 ns 65.8 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 8.69 % 8.84 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 453 ns 453 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 450 ns 455 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 13.0 ns 11.5 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.87 % 2.53 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 298 ns 298 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 298 ns 298 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 5.70 ns 6.99 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.91 % 2.34 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 208 ns 208 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 208 ns 210 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 3.78 ns 4.12 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.82 % 1.98 % 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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 222544 ns 222318 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 220507 ns 219702 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 7854 ns 6640 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 3.53 % 2.99 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 200929 ns 200492 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 200047 ns 200911 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 12344 ns 11913 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 6.14 % 5.94 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 19728 ns 19678 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 19234 ns 19043 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1468 ns 1545 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 7.44 % 7.85 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16771 ns 16766 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16748 ns 16881 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 413 ns 513 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.47 % 3.06 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16447 ns 16357 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16258 ns 16044 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 824 ns 779 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.01 % 4.76 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16187 ns 16183 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16097 ns 16044 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 548 ns 550 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.39 % 3.40 % 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 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 +std::stringstream str; ... str << str_var1 << str_var2;_mean 4484 ns 4478 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 4472 ns 4499 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 111 ns 119 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 2.48 % 2.65 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 4039 ns 4037 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 3985 ns 4011 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 169 ns 170 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 4.18 % 4.20 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 837 ns 837 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_median 806 ns 806 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_stddev 74.3 ns 78.9 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 8.88 % 9.43 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 522 ns 520 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 522 ns 523 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 12.6 ns 16.6 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 2.42 % 3.18 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 390 ns 390 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 381 ns 381 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 23.1 ns 24.2 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 5.92 % 6.20 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 294 ns 294 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 285 ns 285 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 25.0 ns 26.9 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 8.50 % 9.15 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::stringstream str; str << "test = " << k << " times";_mean 10900 ns 10882 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 10804 ns 10882 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 280 ns 327 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 2.57 % 3.01 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 1060 ns 1057 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 1062 ns 1062 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 13.2 ns 20.1 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 1.24 % 1.90 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 2790 ns 2769 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 2791 ns 2757 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 48.9 ns 56.2 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 1.75 % 2.03 % 10 +std::string str = std::format("test = {} times", k);_mean 1884 ns 1888 ns 10 +std::string str = std::format("test = {} times", k);_median 1870 ns 1862 ns 10 +std::string str = std::format("test = {} times", k);_stddev 59.2 ns 66.8 ns 10 +std::string str = std::format("test = {} times", k);_cv 3.14 % 3.54 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 2071 ns 2072 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 2065 ns 2063 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 45.2 ns 43.0 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 2.18 % 2.08 % 10 +lstringa<32> str; str.format("test = {} times", k);_mean 1047 ns 1048 ns 10 +lstringa<32> str; str.format("test = {} times", k);_median 1040 ns 1046 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 15.2 ns 18.3 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 1.45 % 1.75 % 10 +lstringa<8> str = "test = " + k + " times";_mean 840 ns 839 ns 10 +lstringa<8> str = "test = " + k + " times";_median 847 ns 837 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 45.8 ns 46.7 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 5.44 % 5.57 % 10 +lstringa<32> str = "test = " + k + " times";_mean 159 ns 159 ns 10 +lstringa<32> str = "test = " + k + " times";_median 159 ns 157 ns 10 +lstringa<32> str = "test = " + k + " times";_stddev 10.8 ns 11.8 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 6.76 % 7.40 % 10 +stringa str = "test = " + k + " times";_mean 167 ns 167 ns 10 +stringa str = "test = " + k + " times";_median 158 ns 159 ns 10 +stringa str = "test = " + k + " times";_stddev 19.8 ns 19.6 ns 10 +stringa str = "test = " + k + " times";_cv 11.81 % 11.76 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string::find + substr + std::strtol_mean 535 ns 536 ns 10 +std::string::find + substr + std::strtol_median 535 ns 531 ns 10 +std::string::find + substr + std::strtol_stddev 9.03 ns 10.5 ns 10 +std::string::find + substr + std::strtol_cv 1.69 % 1.97 % 10 +ssa::splitter + ssa::as_int_mean 158 ns 158 ns 10 +ssa::splitter + ssa::as_int_median 159 ns 159 ns 10 +ssa::splitter + ssa::as_int_stddev 3.18 ns 3.82 ns 10 +ssa::splitter + ssa::as_int_cv 2.01 % 2.42 % 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 +ssa::splitf + functor_median 192 ns 193 ns 10 +ssa::splitf + functor_stddev 3.86 ns 5.24 ns 10 +ssa::splitf + functor_cv 2.02 % 2.76 % 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 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 +Naive (and wrong) replace symbols with std::string find + replace_mean 1161 ns 1162 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 1142 ns 1147 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 52.4 ns 50.4 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 4.51 % 4.34 % 10 +replace symbols with std::string find_first_of + replace_mean 2164 ns 2163 ns 10 +replace symbols with std::string find_first_of + replace_median 2109 ns 2124 ns 10 +replace symbols with std::string find_first_of + replace_stddev 156 ns 154 ns 10 +replace symbols with std::string find_first_of + replace_cv 7.19 % 7.14 % 10 +replace symbols with std::string_view find_first_of + copy_mean 2371 ns 2365 ns 10 +replace symbols with std::string_view find_first_of + copy_median 2357 ns 2354 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 72.6 ns 64.3 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 3.06 % 2.72 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 1415 ns 1412 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 1422 ns 1420 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 32.2 ns 30.3 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 2.28 % 2.14 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 1318 ns 1315 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 1309 ns 1318 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 45.9 ns 50.1 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 3.49 % 3.81 % 10 +replace const symbols with string expressions and without remembering all search results_mean 1132 ns 1130 ns 10 +replace const symbols with string expressions and without remembering all search results_median 1124 ns 1130 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 34.5 ns 32.9 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 3.05 % 2.91 % 10 +replace const symbols with string expressions and memorization of all search results_mean 1225 ns 1222 ns 10 +replace const symbols with string expressions and memorization of all search results_median 1200 ns 1200 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 83.0 ns 80.9 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 6.77 % 6.62 % 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 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 +Short Naive (and wrong) replace symbols with std::string find + replace_mean 331 ns 331 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 323 ns 322 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 24.6 ns 25.1 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 7.42 % 7.58 % 10 +Short replace symbols with std::string find_first_of + replace_mean 371 ns 372 ns 10 +Short replace symbols with std::string find_first_of + replace_median 371 ns 372 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 7.05 ns 5.85 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 1.90 % 1.57 % 10 +Short replace symbols with std::string_view find_first_of + copy_mean 320 ns 320 ns 10 +Short replace symbols with std::string_view find_first_of + copy_median 318 ns 317 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 8.08 ns 7.68 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 2.52 % 2.40 % 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 255 ns 257 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 8.97 ns 7.25 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 3.48 % 2.82 % 10 +Short replace runtime symbols with simstr and memorization of all search results_mean 382 ns 382 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_median 382 ns 381 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 30.3 ns 30.1 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 7.93 % 7.87 % 10 +Short replace const symbols with string expressions and without remembering all search results_mean 210 ns 209 ns 10 +Short replace const symbols with string expressions and without remembering all search results_median 207 ns 205 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 8.10 ns 9.05 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 3.86 % 4.32 % 10 +Short replace const symbols with string expressions and memorization of all search results_mean 319 ns 318 ns 10 +Short replace const symbols with string expressions and memorization of all search results_median 318 ns 321 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 7.77 ns 9.97 ns 10 +Short replace const symbols with string expressions and memorization of all search results_cv 2.44 % 3.14 % 10 ----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 bb to ---- in std::string|64_mean 228 ns 228 ns 10 +replace bb to ---- in std::string|64_median 227 ns 228 ns 10 +replace bb to ---- in std::string|64_stddev 5.15 ns 5.65 ns 10 +replace bb to ---- in std::string|64_cv 2.26 % 2.48 % 10 +replace bb to ---- in std::string|256_mean 773 ns 774 ns 10 +replace bb to ---- in std::string|256_median 769 ns 767 ns 10 +replace bb to ---- in std::string|256_stddev 22.5 ns 23.5 ns 10 +replace bb to ---- in std::string|256_cv 2.91 % 3.04 % 10 +replace bb to ---- in std::string|512_mean 1456 ns 1456 ns 10 +replace bb to ---- in std::string|512_median 1455 ns 1460 ns 10 +replace bb to ---- in std::string|512_stddev 36.5 ns 36.8 ns 10 +replace bb to ---- in std::string|512_cv 2.51 % 2.53 % 10 +replace bb to ---- in std::string|1024_mean 3151 ns 3153 ns 10 +replace bb to ---- in std::string|1024_median 3150 ns 3139 ns 10 +replace bb to ---- in std::string|1024_stddev 38.2 ns 44.1 ns 10 +replace bb to ---- in std::string|1024_cv 1.21 % 1.40 % 10 +replace bb to ---- in std::string|2048_mean 8263 ns 8248 ns 10 +replace bb to ---- in std::string|2048_median 8036 ns 8022 ns 10 +replace bb to ---- in std::string|2048_stddev 683 ns 632 ns 10 +replace bb to ---- in std::string|2048_cv 8.27 % 7.66 % 10 +replace bb to ---- in lstringa<8>|64_mean 229 ns 229 ns 10 +replace bb to ---- in lstringa<8>|64_median 228 ns 229 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 14.9 ns 15.2 ns 10 +replace bb to ---- in lstringa<8>|64_cv 6.50 % 6.63 % 10 +replace bb to ---- in lstringa<8>|256_mean 612 ns 608 ns 10 +replace bb to ---- in lstringa<8>|256_median 606 ns 600 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 17.3 ns 16.4 ns 10 +replace bb to ---- in lstringa<8>|256_cv 2.82 % 2.69 % 10 +replace bb to ---- in lstringa<8>|512_mean 1063 ns 1065 ns 10 +replace bb to ---- in lstringa<8>|512_median 1068 ns 1067 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 47.0 ns 48.8 ns 10 +replace bb to ---- in lstringa<8>|512_cv 4.42 % 4.58 % 10 +replace bb to ---- in lstringa<8>|1024_mean 1863 ns 1862 ns 10 +replace bb to ---- in lstringa<8>|1024_median 1866 ns 1862 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 43.0 ns 35.6 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 2.31 % 1.91 % 10 +replace bb to ---- in lstringa<8>|2048_mean 3465 ns 3449 ns 10 +replace bb to ---- in lstringa<8>|2048_median 3450 ns 3449 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 81.7 ns 113 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 2.36 % 3.29 % 10 +replace bb to ---- by init stringa|64_mean 172 ns 172 ns 10 +replace bb to ---- by init stringa|64_median 173 ns 171 ns 10 +replace bb to ---- by init stringa|64_stddev 5.28 ns 5.26 ns 10 +replace bb to ---- by init stringa|64_cv 3.07 % 3.05 % 10 +replace bb to ---- by init stringa|256_mean 390 ns 390 ns 10 +replace bb to ---- by init stringa|256_median 386 ns 385 ns 10 +replace bb to ---- by init stringa|256_stddev 9.86 ns 11.3 ns 10 +replace bb to ---- by init stringa|256_cv 2.53 % 2.90 % 10 +replace bb to ---- by init stringa|512_mean 839 ns 839 ns 10 +replace bb to ---- by init stringa|512_median 837 ns 837 ns 10 +replace bb to ---- by init stringa|512_stddev 16.8 ns 15.3 ns 10 +replace bb to ---- by init stringa|512_cv 2.00 % 1.82 % 10 +replace bb to ---- by init stringa|1024_mean 1673 ns 1669 ns 10 +replace bb to ---- by init stringa|1024_median 1672 ns 1688 ns 10 +replace bb to ---- by init stringa|1024_stddev 36.1 ns 37.3 ns 10 +replace bb to ---- by init stringa|1024_cv 2.16 % 2.23 % 10 +replace bb to ---- by init stringa|2048_mean 3133 ns 3125 ns 10 +replace bb to ---- by init stringa|2048_median 3126 ns 3069 ns 10 +replace bb to ---- by init stringa|2048_stddev 61.4 ns 72.0 ns 10 +replace bb to ---- by init stringa|2048_cv 1.96 % 2.31 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +replace bb to -- in std::string|64_mean 194 ns 195 ns 10 +replace bb to -- in std::string|64_median 193 ns 195 ns 10 +replace bb to -- in std::string|64_stddev 8.96 ns 8.93 ns 10 +replace bb to -- in std::string|64_cv 4.61 % 4.59 % 10 +replace bb to -- in std::string|256_mean 475 ns 474 ns 10 +replace bb to -- in std::string|256_median 476 ns 474 ns 10 +replace bb to -- in std::string|256_stddev 16.3 ns 17.4 ns 10 +replace bb to -- in std::string|256_cv 3.43 % 3.67 % 10 +replace bb to -- in std::string|512_mean 870 ns 868 ns 10 +replace bb to -- in std::string|512_median 865 ns 868 ns 10 +replace bb to -- in std::string|512_stddev 10.8 ns 11.0 ns 10 +replace bb to -- in std::string|512_cv 1.24 % 1.27 % 10 +replace bb to -- in std::string|1024_mean 1593 ns 1590 ns 10 +replace bb to -- in std::string|1024_median 1597 ns 1604 ns 10 +replace bb to -- in std::string|1024_stddev 21.5 ns 18.0 ns 10 +replace bb to -- in std::string|1024_cv 1.35 % 1.13 % 10 +replace bb to -- in std::string|2048_mean 3248 ns 3244 ns 10 +replace bb to -- in std::string|2048_median 3251 ns 3209 ns 10 +replace bb to -- in std::string|2048_stddev 54.3 ns 49.3 ns 10 +replace bb to -- in std::string|2048_cv 1.67 % 1.52 % 10 +replace bb to -- in lstringa<8>|64_mean 184 ns 184 ns 10 +replace bb to -- in lstringa<8>|64_median 183 ns 180 ns 10 +replace bb to -- in lstringa<8>|64_stddev 7.49 ns 8.24 ns 10 +replace bb to -- in lstringa<8>|64_cv 4.07 % 4.49 % 10 +replace bb to -- in lstringa<8>|256_mean 444 ns 443 ns 10 +replace bb to -- in lstringa<8>|256_median 444 ns 439 ns 10 +replace bb to -- in lstringa<8>|256_stddev 6.78 ns 6.83 ns 10 +replace bb to -- in lstringa<8>|256_cv 1.53 % 1.54 % 10 +replace bb to -- in lstringa<8>|512_mean 776 ns 776 ns 10 +replace bb to -- in lstringa<8>|512_median 780 ns 776 ns 10 +replace bb to -- in lstringa<8>|512_stddev 12.0 ns 14.8 ns 10 +replace bb to -- in lstringa<8>|512_cv 1.55 % 1.91 % 10 +replace bb to -- in lstringa<8>|1024_mean 1435 ns 1434 ns 10 +replace bb to -- in lstringa<8>|1024_median 1432 ns 1444 ns 10 +replace bb to -- in lstringa<8>|1024_stddev 27.6 ns 36.4 ns 10 +replace bb to -- in lstringa<8>|1024_cv 1.92 % 2.54 % 10 +replace bb to -- in lstringa<8>|2048_mean 2934 ns 2930 ns 10 +replace bb to -- in lstringa<8>|2048_median 2857 ns 2860 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 212 ns 192 ns 10 +replace bb to -- in lstringa<8>|2048_cv 7.24 % 6.54 % 10 +replace bb to -- by init stringa|64_mean 154 ns 154 ns 10 +replace bb to -- by init stringa|64_median 153 ns 153 ns 10 +replace bb to -- by init stringa|64_stddev 5.79 ns 5.05 ns 10 +replace bb to -- by init stringa|64_cv 3.75 % 3.29 % 10 +replace bb to -- by init stringa|256_mean 350 ns 348 ns 10 +replace bb to -- by init stringa|256_median 353 ns 347 ns 10 +replace bb to -- by init stringa|256_stddev 7.19 ns 8.09 ns 10 +replace bb to -- by init stringa|256_cv 2.06 % 2.32 % 10 +replace bb to -- by init stringa|512_mean 600 ns 597 ns 10 +replace bb to -- by init stringa|512_median 602 ns 600 ns 10 +replace bb to -- by init stringa|512_stddev 12.0 ns 12.8 ns 10 +replace bb to -- by init stringa|512_cv 1.99 % 2.15 % 10 +replace bb to -- by init stringa|1024_mean 1095 ns 1091 ns 10 +replace bb to -- by init stringa|1024_median 1072 ns 1074 ns 10 +replace bb to -- by init stringa|1024_stddev 50.8 ns 48.9 ns 10 +replace bb to -- by init stringa|1024_cv 4.64 % 4.48 % 10 +replace bb to -- by init stringa|2048_mean 2061 ns 2054 ns 10 +replace bb to -- by init stringa|2048_median 2044 ns 2040 ns 10 +replace bb to -- by init stringa|2048_stddev 84.7 ns 88.3 ns 10 +replace bb to -- by init stringa|2048_cv 4.11 % 4.30 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +hashStrMapA emplace & find stringa;_mean 3836756 ns 3770950 ns 10 +hashStrMapA emplace & find stringa;_median 3799536 ns 3797137 ns 10 +hashStrMapA emplace & find stringa;_stddev 218864 ns 168661 ns 10 +hashStrMapA emplace & find stringa;_cv 5.70 % 4.47 % 10 +std::unordered_map emplace & find std::string;_mean 5263843 ns 5259487 ns 10 +std::unordered_map emplace & find std::string;_median 5233935 ns 5161830 ns 10 +std::unordered_map emplace & find std::string;_stddev 144170 ns 147789 ns 10 +std::unordered_map emplace & find std::string;_cv 2.74 % 2.81 % 10 +hashStrMapA emplace & find ssa;_mean 3437345 ns 3431373 ns 10 +hashStrMapA emplace & find ssa;_median 3438017 ns 3446691 ns 10 +hashStrMapA emplace & find ssa;_stddev 93669 ns 86956 ns 10 +hashStrMapA emplace & find ssa;_cv 2.73 % 2.53 % 10 +std::unordered_map emplace & find std::string_view;_mean 6320906 ns 6312500 ns 10 +std::unordered_map emplace & find std::string_view;_median 6328500 ns 6328125 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 115489 ns 109251 ns 10 +std::unordered_map emplace & find std::string_view;_cv 1.83 % 1.73 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Build func full name std::string;_mean 1528 ns 1524 ns 10 +Build func full name std::string;_median 1516 ns 1517 ns 10 +Build func full name std::string;_stddev 34.5 ns 28.7 ns 10 +Build func full name std::string;_cv 2.26 % 1.88 % 10 +Build func full name std::string 1;_mean 1573 ns 1573 ns 10 +Build func full name std::string 1;_median 1565 ns 1569 ns 10 +Build func full name std::string 1;_stddev 48.9 ns 53.1 ns 10 +Build func full name std::string 1;_cv 3.11 % 3.38 % 10 +Build func full name std::stream;_mean 8149 ns 8119 ns 10 +Build func full name std::stream;_median 8147 ns 8057 ns 10 +Build func full name std::stream;_stddev 226 ns 293 ns 10 +Build func full name std::stream;_cv 2.77 % 3.60 % 10 +Build func full name stringa;_mean 816 ns 816 ns 10 +Build func full name stringa;_median 813 ns 811 ns 10 +Build func full name stringa;_stddev 26.6 ns 24.4 ns 10 +Build func full name stringa;_cv 3.27 % 2.99 % 10 +Build func full name stringa 1;_mean 1001 ns 998 ns 10 +Build func full name stringa 1;_median 978 ns 984 ns 10 +Build func full name stringa 1;_stddev 82.3 ns 86.6 ns 10 +Build func full name stringa 1;_cv 8.22 % 8.67 % 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 1d19a3c..d7e9e6f 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-29T18:44:28+03:00 +2026-01-30T15:12:38+03:00 Running benchStr.exe Run on (32 X 2494 MHz CPU s) CPU Caches: @@ -10,879 +10,887 @@ 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 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 +Concat std::string and number by std to std::string_mean 314 ns 314 ns 10 +Concat std::string and number by std to std::string_median 312 ns 314 ns 10 +Concat std::string and number by std to std::string_stddev 6.52 ns 5.70 ns 10 +Concat std::string and number by std to std::string_cv 2.07 % 1.81 % 10 +Concat std::string and number by StrExpr to std::string_mean 227 ns 227 ns 10 +Concat std::string and number by StrExpr to std::string_median 227 ns 227 ns 10 +Concat std::string and number by StrExpr to std::string_stddev 16.8 ns 16.5 ns 10 +Concat std::string and number by StrExpr to std::string_cv 7.42 % 7.27 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 112 ns 113 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_median 112 ns 112 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_stddev 2.05 ns 2.43 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 1.82 % 2.16 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 116 ns 116 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 116 ns 116 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 2.54 ns 3.10 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 2.19 % 2.67 % 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 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 +Concat std::string and format hex number and literal to std::string_mean 1064 ns 1063 ns 10 +Concat std::string and format hex number and literal to std::string_median 1059 ns 1057 ns 10 +Concat std::string and format hex number and literal to std::string_stddev 53.7 ns 51.1 ns 10 +Concat std::string and format hex number and literal to std::string_cv 5.05 % 4.80 % 10 +std::format std::string and hex number by literal to std::string_mean 1852 ns 1842 ns 10 +std::format std::string and hex number by literal to std::string_median 1864 ns 1842 ns 10 +std::format std::string and hex number by literal to std::string_stddev 41.8 ns 40.4 ns 10 +std::format std::string and hex number by literal to std::string_cv 2.26 % 2.20 % 10 +Concat std::string and std::tochars and string to std::string_mean 253 ns 253 ns 10 +Concat std::string and std::tochars and string to std::string_median 253 ns 251 ns 10 +Concat std::string and std::tochars and string to std::string_stddev 5.55 ns 6.47 ns 10 +Concat std::string and std::tochars and string to std::string_cv 2.19 % 2.56 % 10 +Concat std::string and hex number and literal by StrExpr to std::string_mean 114 ns 114 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_median 114 ns 114 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_stddev 3.34 ns 4.12 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_cv 2.92 % 3.62 % 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 105 ns 104 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 102 ns 101 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 7.37 ns 7.88 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 7.05 % 7.56 % 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 106 ns 105 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_median 105 ns 105 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 2.75 ns 3.00 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 2.60 % 2.85 % 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_mean 175 ns 175 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_median 174 ns 174 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 5.06 ns 6.67 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_cv 2.89 % 3.82 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Concat std::string by std to std::string_mean 55.5 ns 55.6 ns 10 +Concat std::string by std to std::string_median 55.2 ns 55.8 ns 10 +Concat std::string by std to std::string_stddev 1.08 ns 0.990 ns 10 +Concat std::string by std to std::string_cv 1.94 % 1.78 % 10 +Concat std::string by StrExpr to std::string_mean 81.4 ns 81.3 ns 10 +Concat std::string by StrExpr to std::string_median 81.0 ns 81.1 ns 10 +Concat std::string by StrExpr to std::string_stddev 2.06 ns 2.05 ns 10 +Concat std::string by StrExpr to std::string_cv 2.52 % 2.52 % 10 +Concat stringa by StrExpr to stringa_mean 52.3 ns 52.3 ns 10 +Concat stringa by StrExpr to stringa_median 52.5 ns 53.0 ns 10 +Concat stringa by StrExpr to stringa_stddev 0.962 ns 0.986 ns 10 +Concat stringa by StrExpr to stringa_cv 1.84 % 1.89 % 10 ----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Find concat three std::string_mean 224 ns 223 ns 10 +Find concat three std::string_median 223 ns 222 ns 10 +Find concat three std::string_stddev 4.00 ns 5.54 ns 10 +Find concat three std::string_cv 1.79 % 2.48 % 10 +Find concat three strexpr_mean 125 ns 124 ns 10 +Find concat three strexpr_median 124 ns 123 ns 10 +Find concat three strexpr_stddev 5.27 ns 4.97 ns 10 +Find concat three strexpr_cv 4.22 % 4.00 % 10 +Find concat three simstr_mean 28.6 ns 28.5 ns 10 +Find concat three simstr_median 27.9 ns 27.9 ns 10 +Find concat three simstr_stddev 2.09 ns 2.26 ns 10 +Find concat three simstr_cv 7.31 % 7.92 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +BuildTypeNameStr 0/0_mean 18.2 ns 18.2 ns 10 +BuildTypeNameStr 0/0_median 18.2 ns 18.2 ns 10 +BuildTypeNameStr 0/0_stddev 0.486 ns 0.404 ns 10 +BuildTypeNameStr 0/0_cv 2.67 % 2.23 % 10 +BuildTypeNameExp 0/0_mean 12.7 ns 12.7 ns 10 +BuildTypeNameExp 0/0_median 12.7 ns 12.6 ns 10 +BuildTypeNameExp 0/0_stddev 0.240 ns 0.337 ns 10 +BuildTypeNameExp 0/0_cv 1.89 % 2.66 % 10 +BuildTypeNameSim 0/0_mean 16.7 ns 16.8 ns 10 +BuildTypeNameSim 0/0_median 16.8 ns 16.8 ns 10 +BuildTypeNameSim 0/0_stddev 0.561 ns 0.517 ns 10 +BuildTypeNameSim 0/0_cv 3.35 % 3.08 % 10 +BuildTypeNameStr 10/10_mean 80.2 ns 79.9 ns 10 +BuildTypeNameStr 10/10_median 79.5 ns 79.5 ns 10 +BuildTypeNameStr 10/10_stddev 2.90 ns 2.93 ns 10 +BuildTypeNameStr 10/10_cv 3.61 % 3.66 % 10 +BuildTypeNameExp 10/10_mean 39.5 ns 39.4 ns 10 +BuildTypeNameExp 10/10_median 39.2 ns 39.3 ns 10 +BuildTypeNameExp 10/10_stddev 1.29 ns 1.39 ns 10 +BuildTypeNameExp 10/10_cv 3.26 % 3.53 % 10 +BuildTypeNameSim 10/10_mean 37.3 ns 37.3 ns 10 +BuildTypeNameSim 10/10_median 36.9 ns 37.3 ns 10 +BuildTypeNameSim 10/10_stddev 1.51 ns 1.52 ns 10 +BuildTypeNameSim 10/10_cv 4.04 % 4.09 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Concat with replace str_mean 347 ns 346 ns 10 +Concat with replace str_median 351 ns 345 ns 10 +Concat with replace str_stddev 9.37 ns 9.60 ns 10 +Concat with replace str_cv 2.70 % 2.78 % 10 +Concat with replace exp_mean 241 ns 240 ns 10 +Concat with replace exp_median 233 ns 231 ns 10 +Concat with replace exp_stddev 17.8 ns 17.0 ns 10 +Concat with replace exp_cv 7.38 % 7.10 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e;_mean 2.56 ns 2.57 ns 10 +std::string e;_median 2.57 ns 2.57 ns 10 +std::string e;_stddev 0.033 ns 0.037 ns 10 +std::string e;_cv 1.30 % 1.45 % 10 +std::string_view e;_mean 1.83 ns 1.82 ns 10 +std::string_view e;_median 1.83 ns 1.82 ns 10 +std::string_view e;_stddev 0.027 ns 0.036 ns 10 +std::string_view e;_cv 1.50 % 1.95 % 10 +ssa e;_mean 1.81 ns 1.80 ns 10 +ssa e;_median 1.81 ns 1.80 ns 10 +ssa e;_stddev 0.020 ns 0.026 ns 10 +ssa e;_cv 1.10 % 1.42 % 10 +stringa e;_mean 2.19 ns 2.19 ns 10 +stringa e;_median 2.21 ns 2.20 ns 10 +stringa e;_stddev 0.046 ns 0.054 ns 10 +stringa e;_cv 2.10 % 2.45 % 10 +lstringa<20> e;_mean 2.55 ns 2.54 ns 10 +lstringa<20> e;_median 2.54 ns 2.57 ns 10 +lstringa<20> e;_stddev 0.052 ns 0.071 ns 10 +lstringa<20> e;_cv 2.03 % 2.77 % 10 +lstringa<40> e;_mean 2.58 ns 2.59 ns 10 +lstringa<40> e;_median 2.55 ns 2.55 ns 10 +lstringa<40> e;_stddev 0.088 ns 0.094 ns 10 +lstringa<40> e;_cv 3.43 % 3.62 % 10 ----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e = "Test text";_mean 2.57 ns 2.56 ns 10 +std::string e = "Test text";_median 2.57 ns 2.55 ns 10 +std::string e = "Test text";_stddev 0.045 ns 0.047 ns 10 +std::string e = "Test text";_cv 1.75 % 1.83 % 10 +std::string_view e = "Test text";_mean 1.85 ns 1.85 ns 10 +std::string_view e = "Test text";_median 1.82 ns 1.82 ns 10 +std::string_view e = "Test text";_stddev 0.073 ns 0.071 ns 10 +std::string_view e = "Test text";_cv 3.95 % 3.82 % 10 +ssa e = "Test text";_mean 1.82 ns 1.82 ns 10 +ssa e = "Test text";_median 1.81 ns 1.80 ns 10 +ssa e = "Test text";_stddev 0.033 ns 0.032 ns 10 +ssa e = "Test text";_cv 1.80 % 1.78 % 10 +stringa e = "Test text";_mean 2.57 ns 2.56 ns 10 +stringa e = "Test text";_median 2.56 ns 2.57 ns 10 +stringa e = "Test text";_stddev 0.029 ns 0.018 ns 10 +stringa e = "Test text";_cv 1.12 % 0.69 % 10 +lstringa<20> e = "Test text";_mean 2.60 ns 2.60 ns 10 +lstringa<20> e = "Test text";_median 2.60 ns 2.61 ns 10 +lstringa<20> e = "Test text";_stddev 0.059 ns 0.061 ns 10 +lstringa<20> e = "Test text";_cv 2.26 % 2.36 % 10 +lstringa<40> e = "Test text";_mean 2.62 ns 2.62 ns 10 +lstringa<40> e = "Test text";_median 2.59 ns 2.59 ns 10 +lstringa<40> e = "Test text";_stddev 0.116 ns 0.129 ns 10 +lstringa<40> e = "Test text";_cv 4.44 % 4.91 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e = "123456789012345678901234567890";_mean 75.9 ns 75.6 ns 10 +std::string e = "123456789012345678901234567890";_median 76.0 ns 75.3 ns 10 +std::string e = "123456789012345678901234567890";_stddev 2.18 ns 1.84 ns 10 +std::string e = "123456789012345678901234567890";_cv 2.87 % 2.43 % 10 +std::string_view e = "123456789012345678901234567890";_mean 1.83 ns 1.83 ns 10 +std::string_view e = "123456789012345678901234567890";_median 1.84 ns 1.84 ns 10 +std::string_view e = "123456789012345678901234567890";_stddev 0.027 ns 0.032 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 1.45 % 1.77 % 10 +ssa e = "123456789012345678901234567890";_mean 1.84 ns 1.84 ns 10 +ssa e = "123456789012345678901234567890";_median 1.84 ns 1.84 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.020 ns 0.026 ns 10 +ssa e = "123456789012345678901234567890";_cv 1.07 % 1.39 % 10 +stringa e = "123456789012345678901234567890";_mean 2.22 ns 2.22 ns 10 +stringa e = "123456789012345678901234567890";_median 2.19 ns 2.20 ns 10 +stringa e = "123456789012345678901234567890";_stddev 0.060 ns 0.062 ns 10 +stringa e = "123456789012345678901234567890";_cv 2.72 % 2.79 % 10 +lstringa<20> e = "123456789012345678901234567890";_mean 75.6 ns 75.3 ns 10 +lstringa<20> e = "123456789012345678901234567890";_median 75.3 ns 74.1 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 2.40 ns 2.57 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 3.18 % 3.42 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 3.30 ns 3.28 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 3.29 ns 3.26 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.077 ns 0.076 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 2.32 % 2.31 % 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.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 +std::string e = "Test text"; auto c{e};_mean 5.11 ns 5.06 ns 10 +std::string e = "Test text"; auto c{e};_median 5.06 ns 5.00 ns 10 +std::string e = "Test text"; auto c{e};_stddev 0.203 ns 0.168 ns 10 +std::string e = "Test text"; auto c{e};_cv 3.97 % 3.32 % 10 +std::string_view e = "Test text"; auto c{e};_mean 3.80 ns 3.80 ns 10 +std::string_view e = "Test text"; auto c{e};_median 3.79 ns 3.81 ns 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.052 ns 0.081 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 1.37 % 2.13 % 10 +ssa e = "Test text"; auto c{e};_mean 3.80 ns 3.79 ns 10 +ssa e = "Test text"; auto c{e};_median 3.80 ns 3.77 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.062 ns 0.079 ns 10 +ssa e = "Test text"; auto c{e};_cv 1.62 % 2.09 % 10 +stringa e = "Test text"; auto c{e};_mean 4.02 ns 4.00 ns 10 +stringa e = "Test text"; auto c{e};_median 4.02 ns 4.01 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.089 ns 0.112 ns 10 +stringa e = "Test text"; auto c{e};_cv 2.22 % 2.80 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 7.74 ns 7.73 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 7.71 ns 7.67 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.259 ns 0.261 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 3.35 % 3.37 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 8.20 ns 8.21 ns 10 +lstringa<40> e = "Test text"; auto c{e};_median 8.18 ns 8.20 ns 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 0.218 ns 0.239 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 2.66 % 2.91 % 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 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 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 77.2 ns 77.1 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 75.8 ns 75.9 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 3.12 ns 3.37 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 4.04 % 4.37 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 1.50 ns 1.50 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 1.49 ns 1.49 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.066 ns 0.066 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 4.40 % 4.39 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 1.48 ns 1.48 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 1.48 ns 1.46 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.033 ns 0.024 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 2.23 % 1.65 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 2.98 ns 2.95 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 2.97 ns 2.95 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.106 ns 0.066 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 3.54 % 2.24 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 78.3 ns 78.3 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 78.4 ns 78.5 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 2.26 ns 2.65 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 2.89 % 3.38 % 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 7.08 ns 7.06 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 7.00 ns 6.98 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.381 ns 0.355 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 5.38 % 5.03 % 10 ----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string::find;_mean 40.8 ns 40.5 ns 10 +std::string::find;_median 40.9 ns 40.6 ns 10 +std::string::find;_stddev 0.593 ns 0.809 ns 10 +std::string::find;_cv 1.45 % 2.00 % 10 +std::string_view::find;_mean 39.9 ns 39.8 ns 10 +std::string_view::find;_median 40.0 ns 40.1 ns 10 +std::string_view::find;_stddev 1.02 ns 1.18 ns 10 +std::string_view::find;_cv 2.57 % 2.96 % 10 +ssa::find;_mean 22.2 ns 22.2 ns 10 +ssa::find;_median 22.1 ns 22.2 ns 10 +ssa::find;_stddev 0.753 ns 0.790 ns 10 +ssa::find;_cv 3.39 % 3.55 % 10 +stringa::find;_mean 29.7 ns 29.6 ns 10 +stringa::find;_median 29.5 ns 29.5 ns 10 +stringa::find;_stddev 1.16 ns 1.04 ns 10 +stringa::find;_cv 3.91 % 3.53 % 10 +lstringa<20>::find;_mean 21.8 ns 21.8 ns 10 +lstringa<20>::find;_median 21.7 ns 21.7 ns 10 +lstringa<20>::find;_stddev 0.487 ns 0.566 ns 10 +lstringa<20>::find;_cv 2.23 % 2.59 % 10 +lstringa<40>::find;_mean 21.1 ns 21.1 ns 10 +lstringa<40>::find;_median 21.1 ns 21.1 ns 10 +lstringa<40>::find;_stddev 0.349 ns 0.487 ns 10 +lstringa<40>::find;_cv 1.65 % 2.31 % 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 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 +std::string copy{str_with_len_N};/15_mean 4.40 ns 4.40 ns 10 +std::string copy{str_with_len_N};/15_median 4.39 ns 4.39 ns 10 +std::string copy{str_with_len_N};/15_stddev 0.117 ns 0.126 ns 10 +std::string copy{str_with_len_N};/15_cv 2.67 % 2.85 % 10 +std::string copy{str_with_len_N};/16_mean 80.2 ns 79.9 ns 10 +std::string copy{str_with_len_N};/16_median 80.2 ns 80.2 ns 10 +std::string copy{str_with_len_N};/16_stddev 1.69 ns 2.14 ns 10 +std::string copy{str_with_len_N};/16_cv 2.10 % 2.68 % 10 +std::string copy{str_with_len_N};/23_mean 81.4 ns 81.4 ns 10 +std::string copy{str_with_len_N};/23_median 79.7 ns 80.2 ns 10 +std::string copy{str_with_len_N};/23_stddev 5.84 ns 5.99 ns 10 +std::string copy{str_with_len_N};/23_cv 7.18 % 7.35 % 10 +std::string copy{str_with_len_N};/24_mean 79.7 ns 79.7 ns 10 +std::string copy{str_with_len_N};/24_median 79.3 ns 78.5 ns 10 +std::string copy{str_with_len_N};/24_stddev 2.36 ns 2.61 ns 10 +std::string copy{str_with_len_N};/24_cv 2.96 % 3.27 % 10 +std::string copy{str_with_len_N};/32_mean 86.8 ns 86.8 ns 10 +std::string copy{str_with_len_N};/32_median 86.7 ns 86.8 ns 10 +std::string copy{str_with_len_N};/32_stddev 1.86 ns 1.78 ns 10 +std::string copy{str_with_len_N};/32_cv 2.14 % 2.05 % 10 +std::string copy{str_with_len_N};/64_mean 84.2 ns 84.2 ns 10 +std::string copy{str_with_len_N};/64_median 83.0 ns 82.8 ns 10 +std::string copy{str_with_len_N};/64_stddev 5.01 ns 5.00 ns 10 +std::string copy{str_with_len_N};/64_cv 5.94 % 5.94 % 10 +std::string copy{str_with_len_N};/128_mean 86.2 ns 85.8 ns 10 +std::string copy{str_with_len_N};/128_median 86.8 ns 85.8 ns 10 +std::string copy{str_with_len_N};/128_stddev 2.20 ns 1.97 ns 10 +std::string copy{str_with_len_N};/128_cv 2.55 % 2.30 % 10 +std::string copy{str_with_len_N};/256_mean 88.1 ns 87.9 ns 10 +std::string copy{str_with_len_N};/256_median 89.0 ns 88.9 ns 10 +std::string copy{str_with_len_N};/256_stddev 2.32 ns 2.42 ns 10 +std::string copy{str_with_len_N};/256_cv 2.63 % 2.75 % 10 +std::string copy{str_with_len_N};/512_mean 91.5 ns 91.4 ns 10 +std::string copy{str_with_len_N};/512_median 90.6 ns 90.0 ns 10 +std::string copy{str_with_len_N};/512_stddev 3.37 ns 2.97 ns 10 +std::string copy{str_with_len_N};/512_cv 3.68 % 3.25 % 10 +std::string copy{str_with_len_N};/1024_mean 101 ns 101 ns 10 +std::string copy{str_with_len_N};/1024_median 100 ns 100 ns 10 +std::string copy{str_with_len_N};/1024_stddev 4.11 ns 4.24 ns 10 +std::string copy{str_with_len_N};/1024_cv 4.09 % 4.21 % 10 +std::string copy{str_with_len_N};/2048_mean 129 ns 128 ns 10 +std::string copy{str_with_len_N};/2048_median 128 ns 129 ns 10 +std::string copy{str_with_len_N};/2048_stddev 3.64 ns 4.04 ns 10 +std::string copy{str_with_len_N};/2048_cv 2.83 % 3.15 % 10 +std::string copy{str_with_len_N};/4096_mean 179 ns 178 ns 10 +std::string copy{str_with_len_N};/4096_median 178 ns 178 ns 10 +std::string copy{str_with_len_N};/4096_stddev 2.44 ns 3.71 ns 10 +std::string copy{str_with_len_N};/4096_cv 1.36 % 2.08 % 10 +stringa copy{str_with_len_N};/15_mean 4.01 ns 3.99 ns 10 +stringa copy{str_with_len_N};/15_median 4.00 ns 4.01 ns 10 +stringa copy{str_with_len_N};/15_stddev 0.062 ns 0.090 ns 10 +stringa copy{str_with_len_N};/15_cv 1.53 % 2.26 % 10 +stringa copy{str_with_len_N};/16_mean 4.07 ns 4.07 ns 10 +stringa copy{str_with_len_N};/16_median 4.06 ns 4.08 ns 10 +stringa copy{str_with_len_N};/16_stddev 0.083 ns 0.067 ns 10 +stringa copy{str_with_len_N};/16_cv 2.05 % 1.64 % 10 +stringa copy{str_with_len_N};/23_mean 4.01 ns 3.99 ns 10 +stringa copy{str_with_len_N};/23_median 4.00 ns 3.99 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.062 ns 0.096 ns 10 +stringa copy{str_with_len_N};/23_cv 1.55 % 2.40 % 10 +stringa copy{str_with_len_N};/24_mean 18.3 ns 18.2 ns 10 +stringa copy{str_with_len_N};/24_median 18.3 ns 18.4 ns 10 +stringa copy{str_with_len_N};/24_stddev 0.092 ns 0.216 ns 10 +stringa copy{str_with_len_N};/24_cv 0.50 % 1.18 % 10 +stringa copy{str_with_len_N};/32_mean 18.6 ns 18.6 ns 10 +stringa copy{str_with_len_N};/32_median 18.6 ns 18.6 ns 10 +stringa copy{str_with_len_N};/32_stddev 0.253 ns 0.293 ns 10 +stringa copy{str_with_len_N};/32_cv 1.36 % 1.57 % 10 +stringa copy{str_with_len_N};/64_mean 18.5 ns 18.5 ns 10 +stringa copy{str_with_len_N};/64_median 18.5 ns 18.6 ns 10 +stringa copy{str_with_len_N};/64_stddev 0.268 ns 0.480 ns 10 +stringa copy{str_with_len_N};/64_cv 1.44 % 2.60 % 10 +stringa copy{str_with_len_N};/128_mean 18.6 ns 18.6 ns 10 +stringa copy{str_with_len_N};/128_median 18.4 ns 18.4 ns 10 +stringa copy{str_with_len_N};/128_stddev 0.657 ns 0.718 ns 10 +stringa copy{str_with_len_N};/128_cv 3.53 % 3.86 % 10 +stringa copy{str_with_len_N};/256_mean 18.3 ns 18.3 ns 10 +stringa copy{str_with_len_N};/256_median 18.3 ns 18.4 ns 10 +stringa copy{str_with_len_N};/256_stddev 0.084 ns 0.162 ns 10 +stringa copy{str_with_len_N};/256_cv 0.46 % 0.88 % 10 +stringa copy{str_with_len_N};/512_mean 18.5 ns 18.5 ns 10 +stringa copy{str_with_len_N};/512_median 18.4 ns 18.4 ns 10 +stringa copy{str_with_len_N};/512_stddev 0.505 ns 0.461 ns 10 +stringa copy{str_with_len_N};/512_cv 2.72 % 2.50 % 10 +stringa copy{str_with_len_N};/1024_mean 18.3 ns 18.3 ns 10 +stringa copy{str_with_len_N};/1024_median 18.4 ns 18.4 ns 10 +stringa copy{str_with_len_N};/1024_stddev 0.135 ns 0.185 ns 10 +stringa copy{str_with_len_N};/1024_cv 0.74 % 1.01 % 10 +stringa copy{str_with_len_N};/2048_mean 18.3 ns 18.3 ns 10 +stringa copy{str_with_len_N};/2048_median 18.3 ns 18.4 ns 10 +stringa copy{str_with_len_N};/2048_stddev 0.098 ns 0.202 ns 10 +stringa copy{str_with_len_N};/2048_cv 0.54 % 1.11 % 10 +stringa copy{str_with_len_N};/4096_mean 18.5 ns 18.5 ns 10 +stringa copy{str_with_len_N};/4096_median 18.5 ns 18.4 ns 10 +stringa copy{str_with_len_N};/4096_stddev 0.275 ns 0.330 ns 10 +stringa copy{str_with_len_N};/4096_cv 1.49 % 1.78 % 10 +lstringa<16> copy{str_with_len_N};/15_mean 7.45 ns 7.44 ns 10 +lstringa<16> copy{str_with_len_N};/15_median 7.40 ns 7.39 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.238 ns 0.255 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 3.20 % 3.43 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 7.54 ns 7.50 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 7.41 ns 7.41 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 0.381 ns 0.419 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 5.05 % 5.59 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 7.45 ns 7.46 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 7.38 ns 7.39 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 0.237 ns 0.248 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 3.19 % 3.33 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 78.1 ns 78.0 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 77.5 ns 77.6 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 1.67 ns 2.02 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 2.14 % 2.59 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 89.5 ns 89.4 ns 10 +lstringa<16> copy{str_with_len_N};/32_median 89.2 ns 90.0 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 5.26 ns 5.22 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 5.88 % 5.85 % 10 +lstringa<16> copy{str_with_len_N};/64_mean 82.6 ns 82.5 ns 10 +lstringa<16> copy{str_with_len_N};/64_median 81.5 ns 82.0 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 2.54 ns 2.47 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 3.08 % 3.00 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 84.5 ns 84.3 ns 10 +lstringa<16> copy{str_with_len_N};/128_median 85.3 ns 84.8 ns 10 +lstringa<16> copy{str_with_len_N};/128_stddev 1.71 ns 1.72 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 2.02 % 2.04 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 86.8 ns 86.8 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 87.2 ns 87.9 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 2.24 ns 2.47 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 2.58 % 2.84 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 89.9 ns 89.1 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 89.1 ns 88.9 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 2.44 ns 2.25 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 2.71 % 2.52 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 97.1 ns 96.7 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 96.9 ns 96.3 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 4.19 ns 3.80 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 4.31 % 3.93 % 10 +lstringa<16> copy{str_with_len_N};/2048_mean 128 ns 128 ns 10 +lstringa<16> copy{str_with_len_N};/2048_median 127 ns 128 ns 10 +lstringa<16> copy{str_with_len_N};/2048_stddev 3.77 ns 5.43 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 2.95 % 4.26 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 186 ns 186 ns 10 +lstringa<16> copy{str_with_len_N};/4096_median 187 ns 188 ns 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 4.29 ns 4.93 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 2.30 % 2.65 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 8.77 ns 8.71 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 8.65 ns 8.68 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 0.594 ns 0.610 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 6.77 % 7.00 % 10 +lstringa<512> copy{str_with_len_N};/16_mean 8.49 ns 8.48 ns 10 +lstringa<512> copy{str_with_len_N};/16_median 8.45 ns 8.46 ns 10 +lstringa<512> copy{str_with_len_N};/16_stddev 0.222 ns 0.187 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 2.61 % 2.21 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 8.36 ns 8.33 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 8.29 ns 8.37 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 0.270 ns 0.276 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 3.23 % 3.31 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 8.48 ns 8.46 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 8.48 ns 8.46 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.159 ns 0.148 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 1.87 % 1.75 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 11.4 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.207 ns 0.230 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 1.82 % 2.02 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 11.5 ns 11.5 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 11.5 ns 11.6 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.315 ns 0.314 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 2.73 % 2.74 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 12.2 ns 12.2 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 11.9 ns 12.0 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 0.734 ns 0.609 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 6.00 % 4.99 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 13.0 ns 13.0 ns 10 +lstringa<512> copy{str_with_len_N};/256_median 12.8 ns 12.9 ns 10 +lstringa<512> copy{str_with_len_N};/256_stddev 0.576 ns 0.632 ns 10 +lstringa<512> copy{str_with_len_N};/256_cv 4.42 % 4.85 % 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.305 ns 0.329 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 2.13 % 2.30 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 99.0 ns 98.8 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 100 ns 100 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 3.14 ns 2.38 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 3.17 % 2.41 % 10 +lstringa<512> copy{str_with_len_N};/2048_mean 131 ns 130 ns 10 +lstringa<512> copy{str_with_len_N};/2048_median 130 ns 129 ns 10 +lstringa<512> copy{str_with_len_N};/2048_stddev 6.40 ns 6.49 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 4.89 % 4.98 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 191 ns 189 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 190 ns 188 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 3.53 ns 3.30 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 1.85 % 1.75 % 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 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 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 52.0 ns 51.9 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 51.9 ns 51.6 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.602 ns 0.988 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 1.16 % 1.90 % 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.174 ns 0.228 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 1.26 % 1.67 % 10 +stringa s = "123456789"; int res = s.to_int_mean 15.4 ns 15.4 ns 10 +stringa s = "123456789"; int res = s.to_int_median 15.0 ns 14.9 ns 10 +stringa s = "123456789"; int res = s.to_int_stddev 1.05 ns 1.05 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 6.82 % 6.80 % 10 +ssa s = "123456789"; int res = s.to_int_mean 15.3 ns 15.3 ns 10 +ssa s = "123456789"; int res = s.to_int_median 15.1 ns 15.0 ns 10 +ssa s = "123456789"; int res = s.to_int_stddev 0.810 ns 0.822 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 5.28 % 5.37 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 14.7 ns 14.7 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 14.6 ns 14.4 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.755 ns 0.732 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 5.13 % 4.97 % 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 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 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 35.4 ns 35.5 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 35.2 ns 35.0 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 1.33 ns 1.48 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 3.74 % 4.16 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 12.3 ns 12.3 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 12.3 ns 12.3 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.158 ns 0.186 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 1.29 % 1.52 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 14.1 ns 14.0 ns 10 +stringa s = "abcDef"; int res = s.to_int_median 14.1 ns 14.0 ns 10 +stringa s = "abcDef"; int res = s.to_int_stddev 0.163 ns 0.258 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 1.16 % 1.84 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 13.9 ns 13.9 ns 10 +ssa s = "abcDef"; int res = s.to_int_median 13.8 ns 13.8 ns 10 +ssa s = "abcDef"; int res = s.to_int_stddev 0.322 ns 0.258 ns 10 +ssa s = "abcDef"; int res = s.to_int_cv 2.32 % 1.86 % 10 +lstringa<20> s = "abcDef"; int res = s.to_int_mean 14.2 ns 14.2 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_median 14.2 ns 14.1 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.222 ns 0.248 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 1.56 % 1.75 % 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 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 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 45.3 ns 45.2 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 45.2 ns 45.0 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 0.567 ns 0.833 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 1.25 % 1.84 % 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 19.2 ns 19.1 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 19.0 ns 18.8 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.776 ns 0.818 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 4.05 % 4.29 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 16.8 ns 16.8 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 16.9 ns 16.9 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.280 ns 0.404 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 1.66 % 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 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 +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 101 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 2.14 ns 3.16 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 2.11 % 3.11 % 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 77.2 ns 76.9 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 76.6 ns 76.7 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 2.30 ns 2.39 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 2.98 % 3.11 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_mean 36.6 ns 36.4 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.18 ns 1.32 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 3.23 % 3.63 % 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 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 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 5946 ns 5953 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 5802 ns 5781 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 493 ns 486 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 8.29 % 8.16 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 1228 ns 1219 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 1225 ns 1228 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 12.3 ns 18.8 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 1.00 % 1.54 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 927 ns 925 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 907 ns 910 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 47.9 ns 53.9 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 5.16 % 5.82 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 562 ns 561 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 552 ns 551 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 37.7 ns 37.1 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 6.71 % 6.61 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 357 ns 357 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 352 ns 353 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 17.7 ns 18.2 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 4.96 % 5.09 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 244 ns 244 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 246 ns 246 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 6.88 ns 6.55 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 2.81 % 2.68 % 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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 5660 ns 5650 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 5578 ns 5580 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 357 ns 343 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 6.31 % 6.08 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 3839 ns 3827 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 3749 ns 3763 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 223 ns 209 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 5.81 % 5.45 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 808 ns 806 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 799 ns 802 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 27.5 ns 25.7 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.40 % 3.19 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 531 ns 528 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 531 ns 531 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 13.7 ns 14.4 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.58 % 2.72 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 400 ns 399 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 397 ns 399 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 16.5 ns 18.1 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 4.12 % 4.55 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 272 ns 272 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 270 ns 267 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 6.31 ns 8.59 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.32 % 3.16 % 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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 280515 ns 278700 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 281061 ns 278700 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 5257 ns 6847 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 1.87 % 2.46 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 192412 ns 192121 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 193180 ns 192540 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 3693 ns 3665 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.92 % 1.91 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 24325 ns 24274 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 24380 ns 24327 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 469 ns 505 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.93 % 2.08 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 21822 ns 21815 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 21882 ns 21711 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 350 ns 431 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.60 % 1.97 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 22706 ns 22705 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 22633 ns 22705 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 841 ns 928 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.71 % 4.09 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 22733 ns 22757 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 22160 ns 21972 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1661 ns 1748 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 7.31 % 7.68 % 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 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 +std::stringstream str; ... str << str_var1 << str_var2;_mean 5409 ns 5385 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 5414 ns 5371 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 214 ns 230 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 3.95 % 4.27 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 3876 ns 3876 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 3856 ns 3850 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 75.6 ns 79.4 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 1.95 % 2.05 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 901 ns 898 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_median 902 ns 900 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_stddev 21.2 ns 23.0 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 2.35 % 2.57 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 645 ns 643 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 630 ns 621 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 62.6 ns 65.3 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 9.71 % 10.15 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 450 ns 449 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 452 ns 450 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 11.6 ns 9.77 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 2.58 % 2.18 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 341 ns 341 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 340 ns 338 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 7.73 ns 9.01 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 2.27 % 2.64 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::stringstream str; str << "test = " << k << " times";_mean 11520 ns 11523 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 11522 ns 11475 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 297 ns 321 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 2.58 % 2.79 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 1215 ns 1216 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 1210 ns 1208 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 43.3 ns 45.7 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 3.57 % 3.76 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 2811 ns 2803 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 2809 ns 2783 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 59.0 ns 54.6 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 2.10 % 1.95 % 10 +std::string str = std::format("test = {} times", k);_mean 2384 ns 2386 ns 10 +std::string str = std::format("test = {} times", k);_median 2385 ns 2407 ns 10 +std::string str = std::format("test = {} times", k);_stddev 36.0 ns 44.1 ns 10 +std::string str = std::format("test = {} times", k);_cv 1.51 % 1.85 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 2590 ns 2567 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 2591 ns 2550 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 57.1 ns 48.8 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 2.20 % 1.90 % 10 +lstringa<32> str; str.format("test = {} times", k);_mean 1592 ns 1590 ns 10 +lstringa<32> str; str.format("test = {} times", k);_median 1551 ns 1535 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 98.9 ns 98.9 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 6.21 % 6.22 % 10 +lstringa<8> str = "test = " + k + " times";_mean 862 ns 863 ns 10 +lstringa<8> str = "test = " + k + " times";_median 857 ns 854 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 23.3 ns 23.6 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 2.70 % 2.74 % 10 +lstringa<32> str = "test = " + k + " times";_mean 179 ns 179 ns 10 +lstringa<32> str = "test = " + k + " times";_median 177 ns 178 ns 10 +lstringa<32> str = "test = " + k + " times";_stddev 3.41 ns 4.04 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 1.90 % 2.26 % 10 +stringa str = "test = " + k + " times";_mean 241 ns 242 ns 10 +stringa str = "test = " + k + " times";_median 241 ns 242 ns 10 +stringa str = "test = " + k + " times";_stddev 6.93 ns 8.06 ns 10 +stringa str = "test = " + k + " times";_cv 2.87 % 3.33 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string::find + substr + std::strtol_mean 554 ns 555 ns 10 +std::string::find + substr + std::strtol_median 551 ns 547 ns 10 +std::string::find + substr + std::strtol_stddev 13.2 ns 18.4 ns 10 +std::string::find + substr + std::strtol_cv 2.39 % 3.32 % 10 +ssa::splitter + ssa::as_int_mean 297 ns 297 ns 10 +ssa::splitter + ssa::as_int_median 298 ns 298 ns 10 +ssa::splitter + ssa::as_int_stddev 5.62 ns 5.17 ns 10 +ssa::splitter + ssa::as_int_cv 1.89 % 1.74 % 10 +ssa::splitf + functor_mean 217 ns 217 ns 10 +ssa::splitf + functor_median 215 ns 215 ns 10 +ssa::splitf + functor_stddev 6.10 ns 6.34 ns 10 +ssa::splitf + functor_cv 2.81 % 2.93 % 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 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 +Naive (and wrong) replace symbols with std::string find + replace_mean 1311 ns 1309 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 1294 ns 1311 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 74.1 ns 82.6 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 5.65 % 6.31 % 10 +replace symbols with std::string find_first_of + replace_mean 2239 ns 2227 ns 10 +replace symbols with std::string find_first_of + replace_median 2229 ns 2246 ns 10 +replace symbols with std::string find_first_of + replace_stddev 58.2 ns 57.3 ns 10 +replace symbols with std::string find_first_of + replace_cv 2.60 % 2.57 % 10 +replace symbols with std::string_view find_first_of + copy_mean 2515 ns 2514 ns 10 +replace symbols with std::string_view find_first_of + copy_median 2493 ns 2490 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 99.5 ns 109 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 3.96 % 4.33 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 1586 ns 1587 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 1570 ns 1569 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 56.6 ns 55.1 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 3.57 % 3.48 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 1480 ns 1478 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 1439 ns 1444 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 85.3 ns 89.3 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 5.77 % 6.04 % 10 +replace const symbols with string expressions and without remembering all search results_mean 1281 ns 1278 ns 10 +replace const symbols with string expressions and without remembering all search results_median 1268 ns 1270 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 37.7 ns 34.3 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 2.94 % 2.68 % 10 +replace const symbols with string expressions and memorization of all search results_mean 1244 ns 1238 ns 10 +replace const symbols with string expressions and memorization of all search results_median 1232 ns 1221 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 24.8 ns 30.6 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 1.99 % 2.47 % 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 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 +Short Naive (and wrong) replace symbols with std::string find + replace_mean 331 ns 330 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 333 ns 330 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 7.76 ns 7.72 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 2.34 % 2.34 % 10 +Short replace symbols with std::string find_first_of + replace_mean 435 ns 435 ns 10 +Short replace symbols with std::string find_first_of + replace_median 428 ns 425 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 20.9 ns 21.3 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 4.80 % 4.90 % 10 +Short replace symbols with std::string_view find_first_of + copy_mean 378 ns 376 ns 10 +Short replace symbols with std::string_view find_first_of + copy_median 372 ns 376 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 26.7 ns 27.1 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 7.06 % 7.21 % 10 +Short replace runtime symbols with string expressions and without remembering all search results_mean 325 ns 324 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_median 321 ns 321 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 10.5 ns 11.5 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 3.24 % 3.55 % 10 +Short replace runtime symbols with simstr and memorization of all search results_mean 386 ns 385 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_median 383 ns 381 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 11.5 ns 10.7 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 2.99 % 2.77 % 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 257 ns 257 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 5.29 ns 6.68 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 2.06 % 2.60 % 10 +Short replace const symbols with string expressions and memorization of all search results_mean 347 ns 347 ns 10 +Short replace const symbols with string expressions and memorization of all search results_median 343 ns 345 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 18.8 ns 19.7 ns 10 +Short replace const symbols with string expressions and memorization of all search results_cv 5.41 % 5.69 % 10 ----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 bb to ---- in std::string|64_mean 249 ns 249 ns 10 +replace bb to ---- in std::string|64_median 247 ns 246 ns 10 +replace bb to ---- in std::string|64_stddev 9.93 ns 10.2 ns 10 +replace bb to ---- in std::string|64_cv 3.99 % 4.12 % 10 +replace bb to ---- in std::string|256_mean 823 ns 823 ns 10 +replace bb to ---- in std::string|256_median 819 ns 820 ns 10 +replace bb to ---- in std::string|256_stddev 20.5 ns 21.4 ns 10 +replace bb to ---- in std::string|256_cv 2.49 % 2.60 % 10 +replace bb to ---- in std::string|512_mean 1559 ns 1551 ns 10 +replace bb to ---- in std::string|512_median 1555 ns 1554 ns 10 +replace bb to ---- in std::string|512_stddev 55.8 ns 49.5 ns 10 +replace bb to ---- in std::string|512_cv 3.58 % 3.19 % 10 +replace bb to ---- in std::string|1024_mean 3325 ns 3313 ns 10 +replace bb to ---- in std::string|1024_median 3280 ns 3278 ns 10 +replace bb to ---- in std::string|1024_stddev 239 ns 238 ns 10 +replace bb to ---- in std::string|1024_cv 7.19 % 7.17 % 10 +replace bb to ---- in std::string|2048_mean 8393 ns 8370 ns 10 +replace bb to ---- in std::string|2048_median 8321 ns 8370 ns 10 +replace bb to ---- in std::string|2048_stddev 560 ns 540 ns 10 +replace bb to ---- in std::string|2048_cv 6.67 % 6.45 % 10 +replace bb to ---- in lstringa<8>|64_mean 233 ns 233 ns 10 +replace bb to ---- in lstringa<8>|64_median 234 ns 235 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 6.10 ns 6.64 ns 10 +replace bb to ---- in lstringa<8>|64_cv 2.62 % 2.85 % 10 +replace bb to ---- in lstringa<8>|256_mean 663 ns 663 ns 10 +replace bb to ---- in lstringa<8>|256_median 664 ns 670 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 15.6 ns 16.4 ns 10 +replace bb to ---- in lstringa<8>|256_cv 2.35 % 2.48 % 10 +replace bb to ---- in lstringa<8>|512_mean 1124 ns 1121 ns 10 +replace bb to ---- in lstringa<8>|512_median 1121 ns 1123 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 34.8 ns 48.1 ns 10 +replace bb to ---- in lstringa<8>|512_cv 3.09 % 4.29 % 10 +replace bb to ---- in lstringa<8>|1024_mean 2035 ns 2027 ns 10 +replace bb to ---- in lstringa<8>|1024_median 2023 ns 2040 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 33.7 ns 30.6 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 1.66 % 1.51 % 10 +replace bb to ---- in lstringa<8>|2048_mean 3885 ns 3880 ns 10 +replace bb to ---- in lstringa<8>|2048_median 3909 ns 3880 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 58.9 ns 94.2 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 1.52 % 2.43 % 10 +replace bb to ---- by init stringa|64_mean 210 ns 210 ns 10 +replace bb to ---- by init stringa|64_median 209 ns 210 ns 10 +replace bb to ---- by init stringa|64_stddev 5.15 ns 6.91 ns 10 +replace bb to ---- by init stringa|64_cv 2.45 % 3.29 % 10 +replace bb to ---- by init stringa|256_mean 512 ns 512 ns 10 +replace bb to ---- by init stringa|256_median 507 ns 507 ns 10 +replace bb to ---- by init stringa|256_stddev 29.5 ns 31.4 ns 10 +replace bb to ---- by init stringa|256_cv 5.75 % 6.13 % 10 +replace bb to ---- by init stringa|512_mean 1079 ns 1074 ns 10 +replace bb to ---- by init stringa|512_median 1069 ns 1062 ns 10 +replace bb to ---- by init stringa|512_stddev 46.3 ns 44.6 ns 10 +replace bb to ---- by init stringa|512_cv 4.29 % 4.15 % 10 +replace bb to ---- by init stringa|1024_mean 2161 ns 2153 ns 10 +replace bb to ---- by init stringa|1024_median 2164 ns 2148 ns 10 +replace bb to ---- by init stringa|1024_stddev 37.1 ns 36.0 ns 10 +replace bb to ---- by init stringa|1024_cv 1.72 % 1.67 % 10 +replace bb to ---- by init stringa|2048_mean 4314 ns 4313 ns 10 +replace bb to ---- by init stringa|2048_median 4328 ns 4285 ns 10 +replace bb to ---- by init stringa|2048_stddev 62.3 ns 97.3 ns 10 +replace bb to ---- by init stringa|2048_cv 1.44 % 2.26 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 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|64_mean 210 ns 209 ns 10 +replace bb to -- in std::string|64_median 213 ns 213 ns 10 +replace bb to -- in std::string|64_stddev 5.62 ns 7.02 ns 10 +replace bb to -- in std::string|64_cv 2.67 % 3.35 % 10 +replace bb to -- in std::string|256_mean 555 ns 554 ns 10 +replace bb to -- in std::string|256_median 544 ns 544 ns 10 +replace bb to -- in std::string|256_stddev 36.9 ns 40.6 ns 10 +replace bb to -- in std::string|256_cv 6.66 % 7.32 % 10 +replace bb to -- in std::string|512_mean 968 ns 964 ns 10 +replace bb to -- in std::string|512_median 958 ns 952 ns 10 +replace bb to -- in std::string|512_stddev 45.9 ns 53.1 ns 10 +replace bb to -- in std::string|512_cv 4.74 % 5.50 % 10 +replace bb to -- in std::string|1024_mean 1820 ns 1815 ns 10 +replace bb to -- in std::string|1024_median 1811 ns 1803 ns 10 +replace bb to -- in std::string|1024_stddev 56.6 ns 60.1 ns 10 +replace bb to -- in std::string|1024_cv 3.11 % 3.31 % 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 +replace bb to -- in std::string|2048_median 3599 ns 3610 ns 10 +replace bb to -- in std::string|2048_stddev 52.6 ns 63.3 ns 10 +replace bb to -- in std::string|2048_cv 1.46 % 1.76 % 10 +replace bb to -- in lstringa<8>|64_mean 204 ns 204 ns 10 +replace bb to -- in lstringa<8>|64_median 205 ns 206 ns 10 +replace bb to -- in lstringa<8>|64_stddev 9.74 ns 10.3 ns 10 +replace bb to -- in lstringa<8>|64_cv 4.77 % 5.02 % 10 +replace bb to -- in lstringa<8>|256_mean 483 ns 481 ns 10 +replace bb to -- in lstringa<8>|256_median 471 ns 474 ns 10 +replace bb to -- in lstringa<8>|256_stddev 24.5 ns 24.4 ns 10 +replace bb to -- in lstringa<8>|256_cv 5.08 % 5.06 % 10 +replace bb to -- in lstringa<8>|512_mean 812 ns 810 ns 10 +replace bb to -- in lstringa<8>|512_median 803 ns 816 ns 10 +replace bb to -- in lstringa<8>|512_stddev 29.7 ns 22.2 ns 10 +replace bb to -- in lstringa<8>|512_cv 3.66 % 2.74 % 10 +replace bb to -- in lstringa<8>|1024_mean 1490 ns 1486 ns 10 +replace bb to -- in lstringa<8>|1024_median 1489 ns 1500 ns 10 +replace bb to -- in lstringa<8>|1024_stddev 34.0 ns 29.4 ns 10 +replace bb to -- in lstringa<8>|1024_cv 2.28 % 1.98 % 10 +replace bb to -- in lstringa<8>|2048_mean 2919 ns 2922 ns 10 +replace bb to -- in lstringa<8>|2048_median 2918 ns 2916 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 61.4 ns 58.0 ns 10 +replace bb to -- in lstringa<8>|2048_cv 2.10 % 1.99 % 10 +replace bb to -- by init stringa|64_mean 178 ns 177 ns 10 +replace bb to -- by init stringa|64_median 178 ns 176 ns 10 +replace bb to -- by init stringa|64_stddev 4.00 ns 4.59 ns 10 +replace bb to -- by init stringa|64_cv 2.26 % 2.60 % 10 +replace bb to -- by init stringa|256_mean 387 ns 386 ns 10 +replace bb to -- by init stringa|256_median 385 ns 386 ns 10 +replace bb to -- by init stringa|256_stddev 9.69 ns 10.9 ns 10 +replace bb to -- by init stringa|256_cv 2.51 % 2.82 % 10 +replace bb to -- by init stringa|512_mean 672 ns 668 ns 10 +replace bb to -- by init stringa|512_median 664 ns 663 ns 10 +replace bb to -- by init stringa|512_stddev 24.9 ns 28.5 ns 10 +replace bb to -- by init stringa|512_cv 3.70 % 4.27 % 10 +replace bb to -- by init stringa|1024_mean 1246 ns 1245 ns 10 +replace bb to -- by init stringa|1024_median 1227 ns 1221 ns 10 +replace bb to -- by init stringa|1024_stddev 68.9 ns 69.1 ns 10 +replace bb to -- by init stringa|1024_cv 5.53 % 5.55 % 10 +replace bb to -- by init stringa|2048_mean 2307 ns 2302 ns 10 +replace bb to -- by init stringa|2048_median 2270 ns 2276 ns 10 +replace bb to -- by init stringa|2048_stddev 104 ns 105 ns 10 +replace bb to -- by init stringa|2048_cv 4.51 % 4.55 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +hashStrMapA emplace & find stringa;_mean 4177853 ns 4160156 ns 10 +hashStrMapA emplace & find stringa;_median 4226513 ns 4150391 ns 10 +hashStrMapA emplace & find stringa;_stddev 231658 ns 226465 ns 10 +hashStrMapA emplace & find stringa;_cv 5.54 % 5.44 % 10 +std::unordered_map emplace & find std::string;_mean 5291437 ns 5281250 ns 10 +std::unordered_map emplace & find std::string;_median 5280418 ns 5312500 ns 10 +std::unordered_map emplace & find std::string;_stddev 81841 ns 98821 ns 10 +std::unordered_map emplace & find std::string;_cv 1.55 % 1.87 % 10 +hashStrMapA emplace & find ssa;_mean 3878928 ns 3877005 ns 10 +hashStrMapA emplace & find ssa;_median 3871452 ns 3885361 ns 10 +hashStrMapA emplace & find ssa;_stddev 46967 ns 80723 ns 10 +hashStrMapA emplace & find ssa;_cv 1.21 % 2.08 % 10 +std::unordered_map emplace & find std::string_view;_mean 6508746 ns 6493056 ns 10 +std::unordered_map emplace & find std::string_view;_median 6486619 ns 6510417 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 246615 ns 273893 ns 10 +std::unordered_map emplace & find std::string_view;_cv 3.79 % 4.22 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Build func full name std::string;_mean 1796 ns 1791 ns 10 +Build func full name std::string;_median 1793 ns 1800 ns 10 +Build func full name std::string;_stddev 125 ns 118 ns 10 +Build func full name std::string;_cv 6.96 % 6.59 % 10 +Build func full name std::string 1;_mean 1699 ns 1692 ns 10 +Build func full name std::string 1;_median 1696 ns 1688 ns 10 +Build func full name std::string 1;_stddev 47.4 ns 55.6 ns 10 +Build func full name std::string 1;_cv 2.79 % 3.29 % 10 +Build func full name std::stream;_mean 9810 ns 9793 ns 10 +Build func full name std::stream;_median 9836 ns 9835 ns 10 +Build func full name std::stream;_stddev 245 ns 257 ns 10 +Build func full name std::stream;_cv 2.49 % 2.63 % 10 +Build func full name stringa;_mean 945 ns 944 ns 10 +Build func full name stringa;_median 942 ns 952 ns 10 +Build func full name stringa;_stddev 72.2 ns 69.4 ns 10 +Build func full name stringa;_cv 7.64 % 7.35 % 10 +Build func full name stringa 1;_mean 1053 ns 1053 ns 10 +Build func full name stringa 1;_median 1053 ns 1046 ns 10 +Build func full name stringa 1;_stddev 19.2 ns 22.2 ns 10 +Build func full name stringa 1;_cv 1.82 % 2.11 % 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 5c44835..65203e3 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,879 +4,887 @@ 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 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 std to std::string_mean 947 ns 947 ns 10 +Concat std::string and number by std to std::string_median 924 ns 924 ns 10 +Concat std::string and number by std to std::string_stddev 73.2 ns 73.2 ns 10 +Concat std::string and number by std to std::string_cv 7.73 % 7.73 % 10 +Concat std::string and number by StrExpr to std::string_mean 409 ns 409 ns 10 +Concat std::string and number by StrExpr to std::string_median 406 ns 406 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 +Concat std::string and number by StrExpr to std::string_cv 4.77 % 4.77 % 10 +Concat stringa and number by StrExpr to simstr::stringa_mean 225 ns 225 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_median 224 ns 224 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_stddev 23.9 ns 23.9 ns 10 +Concat stringa and number by StrExpr to simstr::stringa_cv 10.60 % 10.60 % 10 +Concat stringa and number by e_concat to simstr::stringa_mean 221 ns 221 ns 10 +Concat stringa and number by e_concat to simstr::stringa_median 216 ns 216 ns 10 +Concat stringa and number by e_concat to simstr::stringa_stddev 16.1 ns 16.1 ns 10 +Concat stringa and number by e_concat to simstr::stringa_cv 7.25 % 7.25 % 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 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 +Concat std::string and format hex number and literal to std::string_mean 1426 ns 1426 ns 10 +Concat std::string and format hex number and literal to std::string_median 1439 ns 1439 ns 10 +Concat std::string and format hex number and literal to std::string_stddev 54.3 ns 54.3 ns 10 +Concat std::string and format hex number and literal to std::string_cv 3.81 % 3.81 % 10 +std::format std::string and hex number by literal to std::string_mean 1603 ns 1603 ns 10 +std::format std::string and hex number by literal to std::string_median 1584 ns 1584 ns 10 +std::format std::string and hex number by literal to std::string_stddev 58.6 ns 58.6 ns 10 +std::format std::string and hex number by literal to std::string_cv 3.65 % 3.65 % 10 +Concat std::string and std::tochars and string to std::string_mean 669 ns 669 ns 10 +Concat std::string and std::tochars and string to std::string_median 662 ns 662 ns 10 +Concat std::string and std::tochars and string to std::string_stddev 39.5 ns 39.5 ns 10 +Concat std::string and std::tochars and string to std::string_cv 5.90 % 5.90 % 10 +Concat std::string and hex number and literal by StrExpr to std::string_mean 414 ns 414 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_median 408 ns 408 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_stddev 26.3 ns 26.3 ns 10 +Concat std::string and hex number and literal by StrExpr to std::string_cv 6.35 % 6.35 % 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 208 ns 208 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 209 ns 209 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 10.1 ns 10.1 ns 10 +Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 4.84 % 4.84 % 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 219 ns 219 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_median 217 ns 217 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 14.4 ns 14.4 ns 10 +Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 6.60 % 6.60 % 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_mean 464 ns 464 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_median 452 ns 452 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 43.8 ns 43.8 ns 10 +Subst stringa and hex number by e_subst literal to simstr::stringa_cv 9.44 % 9.44 % 10 ----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Concat std::string by std to std::string_mean 97.5 ns 97.5 ns 10 +Concat std::string by std to std::string_median 96.6 ns 96.6 ns 10 +Concat std::string by std to std::string_stddev 6.77 ns 6.77 ns 10 +Concat std::string by std to std::string_cv 6.94 % 6.94 % 10 +Concat std::string by StrExpr to std::string_mean 110 ns 110 ns 10 +Concat std::string by StrExpr to std::string_median 110 ns 110 ns 10 +Concat std::string by StrExpr to std::string_stddev 8.38 ns 8.38 ns 10 +Concat std::string by StrExpr to std::string_cv 7.64 % 7.64 % 10 +Concat stringa by StrExpr to stringa_mean 96.3 ns 96.3 ns 10 +Concat stringa by StrExpr to stringa_median 95.7 ns 95.7 ns 10 +Concat stringa by StrExpr to stringa_stddev 3.61 ns 3.64 ns 10 +Concat stringa by StrExpr to stringa_cv 3.75 % 3.78 % 10 ----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 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 std::string_mean 190 ns 190 ns 10 +Find concat three std::string_median 189 ns 189 ns 10 +Find concat three std::string_stddev 13.0 ns 13.0 ns 10 +Find concat three std::string_cv 6.84 % 6.84 % 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.03 ns 3.03 ns 10 +Find concat three strexpr_cv 2.86 % 2.86 % 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 +Find concat three simstr_median 75.9 ns 75.9 ns 10 +Find concat three simstr_stddev 2.70 ns 2.70 ns 10 +Find concat three simstr_cv 3.54 % 3.54 % 10 ----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +BuildTypeNameStr 0/0_mean 18.1 ns 18.1 ns 10 +BuildTypeNameStr 0/0_median 17.8 ns 17.8 ns 10 +BuildTypeNameStr 0/0_stddev 1.52 ns 1.52 ns 10 +BuildTypeNameStr 0/0_cv 8.40 % 8.40 % 10 +BuildTypeNameExp 0/0_mean 17.7 ns 17.7 ns 10 +BuildTypeNameExp 0/0_median 17.7 ns 17.7 ns 10 +BuildTypeNameExp 0/0_stddev 1.21 ns 1.21 ns 10 +BuildTypeNameExp 0/0_cv 6.83 % 6.83 % 10 +BuildTypeNameSim 0/0_mean 16.7 ns 16.7 ns 10 +BuildTypeNameSim 0/0_median 16.7 ns 16.7 ns 10 +BuildTypeNameSim 0/0_stddev 0.443 ns 0.443 ns 10 +BuildTypeNameSim 0/0_cv 2.65 % 2.65 % 10 +BuildTypeNameStr 10/10_mean 282 ns 282 ns 10 +BuildTypeNameStr 10/10_median 281 ns 281 ns 10 +BuildTypeNameStr 10/10_stddev 24.1 ns 24.1 ns 10 +BuildTypeNameStr 10/10_cv 8.54 % 8.54 % 10 +BuildTypeNameExp 10/10_mean 99.9 ns 99.9 ns 10 +BuildTypeNameExp 10/10_median 101 ns 101 ns 10 +BuildTypeNameExp 10/10_stddev 5.05 ns 5.06 ns 10 +BuildTypeNameExp 10/10_cv 5.05 % 5.06 % 10 +BuildTypeNameSim 10/10_mean 69.9 ns 69.9 ns 10 +BuildTypeNameSim 10/10_median 68.3 ns 68.3 ns 10 +BuildTypeNameSim 10/10_stddev 4.43 ns 4.43 ns 10 +BuildTypeNameSim 10/10_cv 6.34 % 6.34 % 10 ----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Concat with replace str_mean 475 ns 475 ns 10 +Concat with replace str_median 478 ns 478 ns 10 +Concat with replace str_stddev 29.4 ns 29.4 ns 10 +Concat with replace str_cv 6.18 % 6.18 % 10 +Concat with replace exp_mean 256 ns 256 ns 10 +Concat with replace exp_median 255 ns 255 ns 10 +Concat with replace exp_stddev 14.0 ns 14.0 ns 10 +Concat with replace exp_cv 5.45 % 5.48 % 10 ----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e;_mean 2.16 ns 2.16 ns 10 +std::string e;_median 2.15 ns 2.15 ns 10 +std::string e;_stddev 0.038 ns 0.038 ns 10 +std::string e;_cv 1.76 % 1.76 % 10 +std::string_view e;_mean 0.973 ns 0.973 ns 10 +std::string_view e;_median 0.972 ns 0.972 ns 10 +std::string_view e;_stddev 0.018 ns 0.018 ns 10 +std::string_view e;_cv 1.87 % 1.87 % 10 +ssa e;_mean 0.942 ns 0.942 ns 10 +ssa e;_median 0.939 ns 0.939 ns 10 +ssa e;_stddev 0.008 ns 0.008 ns 10 +ssa e;_cv 0.87 % 0.87 % 10 +stringa e;_mean 2.17 ns 2.17 ns 10 +stringa e;_median 2.16 ns 2.16 ns 10 +stringa e;_stddev 0.042 ns 0.042 ns 10 +stringa e;_cv 1.95 % 1.95 % 10 +lstringa<20> e;_mean 2.22 ns 2.22 ns 10 +lstringa<20> e;_median 2.21 ns 2.21 ns 10 +lstringa<20> e;_stddev 0.057 ns 0.057 ns 10 +lstringa<20> e;_cv 2.57 % 2.57 % 10 +lstringa<40> e;_mean 2.57 ns 2.57 ns 10 +lstringa<40> e;_median 2.57 ns 2.57 ns 10 +lstringa<40> e;_stddev 0.031 ns 0.031 ns 10 +lstringa<40> e;_cv 1.19 % 1.19 % 10 ----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string e = "Test text";_mean 2.34 ns 2.34 ns 10 +std::string e = "Test text";_median 2.30 ns 2.30 ns 10 +std::string e = "Test text";_stddev 0.092 ns 0.092 ns 10 +std::string e = "Test text";_cv 3.94 % 3.94 % 10 +std::string_view e = "Test text";_mean 1.25 ns 1.25 ns 10 +std::string_view e = "Test text";_median 1.25 ns 1.25 ns 10 +std::string_view e = "Test text";_stddev 0.034 ns 0.034 ns 10 +std::string_view e = "Test text";_cv 2.74 % 2.74 % 10 +ssa e = "Test text";_mean 0.999 ns 0.999 ns 10 +ssa e = "Test text";_median 0.994 ns 0.994 ns 10 +ssa e = "Test text";_stddev 0.035 ns 0.035 ns 10 +ssa e = "Test text";_cv 3.50 % 3.50 % 10 +stringa e = "Test text";_mean 2.19 ns 2.19 ns 10 +stringa e = "Test text";_median 2.18 ns 2.18 ns 10 +stringa e = "Test text";_stddev 0.045 ns 0.045 ns 10 +stringa e = "Test text";_cv 2.04 % 2.04 % 10 +lstringa<20> e = "Test text";_mean 2.67 ns 2.67 ns 10 +lstringa<20> e = "Test text";_median 2.66 ns 2.66 ns 10 +lstringa<20> e = "Test text";_stddev 0.047 ns 0.047 ns 10 +lstringa<20> e = "Test text";_cv 1.77 % 1.77 % 10 +lstringa<40> e = "Test text";_mean 2.82 ns 2.82 ns 10 +lstringa<40> e = "Test text";_median 2.77 ns 2.77 ns 10 +lstringa<40> e = "Test text";_stddev 0.145 ns 0.145 ns 10 +lstringa<40> e = "Test text";_cv 5.13 % 5.13 % 10 ----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 e = "123456789012345678901234567890";_mean 16.2 ns 16.2 ns 10 +std::string e = "123456789012345678901234567890";_median 16.1 ns 16.1 ns 10 +std::string e = "123456789012345678901234567890";_stddev 0.433 ns 0.433 ns 10 +std::string e = "123456789012345678901234567890";_cv 2.67 % 2.67 % 10 +std::string_view e = "123456789012345678901234567890";_mean 1.27 ns 1.27 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 +std::string_view e = "123456789012345678901234567890";_stddev 0.042 ns 0.042 ns 10 +std::string_view e = "123456789012345678901234567890";_cv 3.32 % 3.32 % 10 +ssa e = "123456789012345678901234567890";_mean 0.995 ns 0.995 ns 10 +ssa e = "123456789012345678901234567890";_median 1.00 ns 1.00 ns 10 +ssa e = "123456789012345678901234567890";_stddev 0.023 ns 0.023 ns 10 +ssa e = "123456789012345678901234567890";_cv 2.31 % 2.31 % 10 +stringa e = "123456789012345678901234567890";_mean 2.24 ns 2.24 ns 10 +stringa e = "123456789012345678901234567890";_median 2.23 ns 2.23 ns 10 +stringa e = "123456789012345678901234567890";_stddev 0.066 ns 0.066 ns 10 +stringa e = "123456789012345678901234567890";_cv 2.95 % 2.95 % 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 +lstringa<20> e = "123456789012345678901234567890";_median 16.5 ns 16.5 ns 10 +lstringa<20> e = "123456789012345678901234567890";_stddev 0.310 ns 0.310 ns 10 +lstringa<20> e = "123456789012345678901234567890";_cv 1.88 % 1.88 % 10 +lstringa<40> e = "123456789012345678901234567890";_mean 2.96 ns 2.96 ns 10 +lstringa<40> e = "123456789012345678901234567890";_median 2.96 ns 2.96 ns 10 +lstringa<40> e = "123456789012345678901234567890";_stddev 0.069 ns 0.069 ns 10 +lstringa<40> e = "123456789012345678901234567890";_cv 2.34 % 2.34 % 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.21 ns 2.21 ns 10 +std::string e = "Test text"; auto c{e};_mean 2.22 ns 2.22 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.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 +std::string e = "Test text"; auto c{e};_stddev 0.038 ns 0.038 ns 10 +std::string e = "Test text"; auto c{e};_cv 1.71 % 1.71 % 10 +std::string_view e = "Test text"; auto c{e};_mean 1.23 ns 1.23 ns 10 +std::string_view e = "Test text"; auto c{e};_median 1.22 ns 1.22 ns 10 +std::string_view e = "Test text"; auto c{e};_stddev 0.023 ns 0.023 ns 10 +std::string_view e = "Test text"; auto c{e};_cv 1.84 % 1.84 % 10 +ssa e = "Test text"; auto c{e};_mean 1.23 ns 1.23 ns 10 +ssa e = "Test text"; auto c{e};_median 1.23 ns 1.23 ns 10 +ssa e = "Test text"; auto c{e};_stddev 0.019 ns 0.019 ns 10 +ssa e = "Test text"; auto c{e};_cv 1.56 % 1.56 % 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 1.50 ns 1.50 ns 10 -lstringa<40> e = "Test text"; auto c{e};_cv 10.34 % 10.34 % 10 +stringa e = "Test text"; auto c{e};_median 2.54 ns 2.54 ns 10 +stringa e = "Test text"; auto c{e};_stddev 0.032 ns 0.032 ns 10 +stringa e = "Test text"; auto c{e};_cv 1.27 % 1.27 % 10 +lstringa<20> e = "Test text"; auto c{e};_mean 15.3 ns 15.3 ns 10 +lstringa<20> e = "Test text"; auto c{e};_median 15.0 ns 15.0 ns 10 +lstringa<20> e = "Test text"; auto c{e};_stddev 0.965 ns 0.965 ns 10 +lstringa<20> e = "Test text"; auto c{e};_cv 6.31 % 6.31 % 10 +lstringa<40> e = "Test text"; auto c{e};_mean 14.6 ns 14.6 ns 10 +lstringa<40> e = "Test text"; auto c{e};_median 14.6 ns 14.6 ns 10 +lstringa<40> e = "Test text"; auto c{e};_stddev 0.848 ns 0.848 ns 10 +lstringa<40> e = "Test text"; auto c{e};_cv 5.80 % 5.80 % 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 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 +std::string e = "123456789012345678901234567890"; auto c{e};_mean 35.5 ns 35.5 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_median 35.0 ns 35.0 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_stddev 2.15 ns 2.15 ns 10 +std::string e = "123456789012345678901234567890"; auto c{e};_cv 6.07 % 6.07 % 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 1.24 ns 1.24 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_median 1.22 ns 1.22 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.035 ns 0.035 ns 10 +std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 2.83 % 2.83 % 10 +ssa e = "123456789012345678901234567890"; auto c{e};_mean 1.02 ns 1.02 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_median 1.02 ns 1.02 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.041 ns 0.041 ns 10 +ssa e = "123456789012345678901234567890"; auto c{e};_cv 4.06 % 4.06 % 10 +stringa e = "123456789012345678901234567890"; auto c{e};_mean 2.21 ns 2.21 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_median 2.21 ns 2.21 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.036 ns 0.036 ns 10 +stringa e = "123456789012345678901234567890"; auto c{e};_cv 1.62 % 1.62 % 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 16.3 ns 16.3 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 16.2 ns 16.2 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.657 ns 0.657 ns 10 +lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 4.03 % 4.03 % 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 14.3 ns 14.3 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 14.4 ns 14.4 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.394 ns 0.390 ns 10 +lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 2.75 % 2.73 % 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.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 +std::string::find;_mean 45.7 ns 45.7 ns 10 +std::string::find;_median 45.7 ns 45.7 ns 10 +std::string::find;_stddev 0.933 ns 0.933 ns 10 +std::string::find;_cv 2.04 % 2.04 % 10 +std::string_view::find;_mean 53.5 ns 53.5 ns 10 +std::string_view::find;_median 53.3 ns 53.3 ns 10 +std::string_view::find;_stddev 2.49 ns 2.50 ns 10 +std::string_view::find;_cv 4.66 % 4.68 % 10 +ssa::find;_mean 51.0 ns 51.0 ns 10 +ssa::find;_median 51.1 ns 51.1 ns 10 +ssa::find;_stddev 1.53 ns 1.53 ns 10 +ssa::find;_cv 3.00 % 3.00 % 10 +stringa::find;_mean 51.7 ns 51.7 ns 10 +stringa::find;_median 51.9 ns 51.9 ns 10 +stringa::find;_stddev 0.987 ns 0.987 ns 10 +stringa::find;_cv 1.91 % 1.91 % 10 +lstringa<20>::find;_mean 44.5 ns 44.5 ns 10 +lstringa<20>::find;_median 44.6 ns 44.6 ns 10 +lstringa<20>::find;_stddev 1.25 ns 1.25 ns 10 +lstringa<20>::find;_cv 2.81 % 2.81 % 10 +lstringa<40>::find;_mean 44.2 ns 44.2 ns 10 +lstringa<40>::find;_median 44.2 ns 44.2 ns 10 +lstringa<40>::find;_stddev 1.60 ns 1.60 ns 10 +lstringa<40>::find;_cv 3.63 % 3.63 % 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 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};/15_mean 36.2 ns 36.2 ns 10 +std::string copy{str_with_len_N};/15_median 36.3 ns 36.3 ns 10 +std::string copy{str_with_len_N};/15_stddev 1.31 ns 1.31 ns 10 +std::string copy{str_with_len_N};/15_cv 3.61 % 3.61 % 10 +std::string copy{str_with_len_N};/16_mean 36.3 ns 36.3 ns 10 +std::string copy{str_with_len_N};/16_median 35.6 ns 35.6 ns 10 +std::string copy{str_with_len_N};/16_stddev 1.88 ns 1.88 ns 10 +std::string copy{str_with_len_N};/16_cv 5.20 % 5.20 % 10 +std::string copy{str_with_len_N};/23_mean 35.6 ns 35.6 ns 10 +std::string copy{str_with_len_N};/23_median 35.1 ns 35.1 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 +std::string copy{str_with_len_N};/23_cv 3.90 % 3.90 % 10 +std::string copy{str_with_len_N};/24_mean 36.4 ns 36.4 ns 10 +std::string copy{str_with_len_N};/24_median 36.3 ns 36.3 ns 10 +std::string copy{str_with_len_N};/24_stddev 0.706 ns 0.706 ns 10 +std::string copy{str_with_len_N};/24_cv 1.94 % 1.94 % 10 +std::string copy{str_with_len_N};/32_mean 40.9 ns 40.9 ns 10 +std::string copy{str_with_len_N};/32_median 40.1 ns 40.1 ns 10 +std::string copy{str_with_len_N};/32_stddev 2.03 ns 2.04 ns 10 +std::string copy{str_with_len_N};/32_cv 4.97 % 5.00 % 10 +std::string copy{str_with_len_N};/64_mean 40.6 ns 40.6 ns 10 +std::string copy{str_with_len_N};/64_median 40.9 ns 40.9 ns 10 +std::string copy{str_with_len_N};/64_stddev 1.95 ns 1.95 ns 10 +std::string copy{str_with_len_N};/64_cv 4.82 % 4.82 % 10 +std::string copy{str_with_len_N};/128_mean 42.3 ns 42.3 ns 10 +std::string copy{str_with_len_N};/128_median 41.3 ns 41.3 ns 10 +std::string copy{str_with_len_N};/128_stddev 5.32 ns 5.32 ns 10 +std::string copy{str_with_len_N};/128_cv 12.58 % 12.58 % 10 +std::string copy{str_with_len_N};/256_mean 62.6 ns 62.6 ns 10 +std::string copy{str_with_len_N};/256_median 65.7 ns 65.7 ns 10 +std::string copy{str_with_len_N};/256_stddev 8.79 ns 8.79 ns 10 +std::string copy{str_with_len_N};/256_cv 14.03 % 14.03 % 10 +std::string copy{str_with_len_N};/512_mean 62.1 ns 62.1 ns 10 +std::string copy{str_with_len_N};/512_median 63.1 ns 63.1 ns 10 +std::string copy{str_with_len_N};/512_stddev 8.65 ns 8.65 ns 10 +std::string copy{str_with_len_N};/512_cv 13.93 % 13.93 % 10 +std::string copy{str_with_len_N};/1024_mean 66.3 ns 66.3 ns 10 +std::string copy{str_with_len_N};/1024_median 66.8 ns 66.8 ns 10 +std::string copy{str_with_len_N};/1024_stddev 9.19 ns 9.19 ns 10 +std::string copy{str_with_len_N};/1024_cv 13.85 % 13.85 % 10 +std::string copy{str_with_len_N};/2048_mean 99.3 ns 99.3 ns 10 +std::string copy{str_with_len_N};/2048_median 101 ns 101 ns 10 +std::string copy{str_with_len_N};/2048_stddev 13.1 ns 13.1 ns 10 +std::string copy{str_with_len_N};/2048_cv 13.17 % 13.17 % 10 +std::string copy{str_with_len_N};/4096_mean 153 ns 153 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.3 ns 10.3 ns 10 +std::string copy{str_with_len_N};/4096_cv 6.69 % 6.69 % 10 +stringa copy{str_with_len_N};/15_mean 2.55 ns 2.55 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};/15_stddev 0.071 ns 0.071 ns 10 +stringa copy{str_with_len_N};/15_cv 2.78 % 2.78 % 10 +stringa copy{str_with_len_N};/16_mean 4.83 ns 4.83 ns 10 +stringa copy{str_with_len_N};/16_median 4.80 ns 4.80 ns 10 +stringa copy{str_with_len_N};/16_stddev 0.079 ns 0.079 ns 10 +stringa copy{str_with_len_N};/16_cv 1.64 % 1.64 % 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};/23_median 4.81 ns 4.81 ns 10 +stringa copy{str_with_len_N};/23_stddev 0.089 ns 0.089 ns 10 +stringa copy{str_with_len_N};/23_cv 1.84 % 1.84 % 10 +stringa copy{str_with_len_N};/24_mean 4.97 ns 4.97 ns 10 +stringa copy{str_with_len_N};/24_median 4.91 ns 4.91 ns 10 +stringa copy{str_with_len_N};/24_stddev 0.136 ns 0.136 ns 10 +stringa copy{str_with_len_N};/24_cv 2.73 % 2.73 % 10 +stringa copy{str_with_len_N};/32_mean 4.92 ns 4.92 ns 10 +stringa copy{str_with_len_N};/32_median 4.88 ns 4.88 ns 10 +stringa copy{str_with_len_N};/32_stddev 0.113 ns 0.113 ns 10 +stringa copy{str_with_len_N};/32_cv 2.30 % 2.30 % 10 +stringa copy{str_with_len_N};/64_mean 4.85 ns 4.85 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.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 +stringa copy{str_with_len_N};/64_stddev 0.108 ns 0.108 ns 10 +stringa copy{str_with_len_N};/64_cv 2.23 % 2.23 % 10 +stringa copy{str_with_len_N};/128_mean 4.84 ns 4.84 ns 10 +stringa copy{str_with_len_N};/128_median 4.85 ns 4.85 ns 10 +stringa copy{str_with_len_N};/128_stddev 0.078 ns 0.078 ns 10 +stringa copy{str_with_len_N};/128_cv 1.60 % 1.60 % 10 +stringa copy{str_with_len_N};/256_mean 4.89 ns 4.89 ns 10 +stringa copy{str_with_len_N};/256_median 4.88 ns 4.88 ns 10 +stringa copy{str_with_len_N};/256_stddev 0.091 ns 0.091 ns 10 +stringa copy{str_with_len_N};/256_cv 1.86 % 1.86 % 10 +stringa copy{str_with_len_N};/512_mean 4.84 ns 4.84 ns 10 +stringa copy{str_with_len_N};/512_median 4.81 ns 4.81 ns 10 +stringa copy{str_with_len_N};/512_stddev 0.107 ns 0.107 ns 10 +stringa copy{str_with_len_N};/512_cv 2.20 % 2.20 % 10 +stringa copy{str_with_len_N};/1024_mean 4.89 ns 4.89 ns 10 +stringa copy{str_with_len_N};/1024_median 4.86 ns 4.86 ns 10 +stringa copy{str_with_len_N};/1024_stddev 0.207 ns 0.207 ns 10 +stringa copy{str_with_len_N};/1024_cv 4.23 % 4.23 % 10 +stringa copy{str_with_len_N};/2048_mean 4.88 ns 4.88 ns 10 +stringa copy{str_with_len_N};/2048_median 4.86 ns 4.86 ns 10 +stringa copy{str_with_len_N};/2048_stddev 0.134 ns 0.134 ns 10 +stringa copy{str_with_len_N};/2048_cv 2.76 % 2.76 % 10 +stringa copy{str_with_len_N};/4096_mean 4.93 ns 4.93 ns 10 +stringa copy{str_with_len_N};/4096_median 4.92 ns 4.92 ns 10 +stringa copy{str_with_len_N};/4096_stddev 0.139 ns 0.139 ns 10 +stringa copy{str_with_len_N};/4096_cv 2.82 % 2.82 % 10 +lstringa<16> copy{str_with_len_N};/15_mean 14.5 ns 14.5 ns 10 +lstringa<16> copy{str_with_len_N};/15_median 14.6 ns 14.6 ns 10 +lstringa<16> copy{str_with_len_N};/15_stddev 0.809 ns 0.809 ns 10 +lstringa<16> copy{str_with_len_N};/15_cv 5.59 % 5.59 % 10 +lstringa<16> copy{str_with_len_N};/16_mean 14.2 ns 14.2 ns 10 +lstringa<16> copy{str_with_len_N};/16_median 14.1 ns 14.1 ns 10 +lstringa<16> copy{str_with_len_N};/16_stddev 0.716 ns 0.716 ns 10 +lstringa<16> copy{str_with_len_N};/16_cv 5.06 % 5.06 % 10 +lstringa<16> copy{str_with_len_N};/23_mean 29.5 ns 29.5 ns 10 +lstringa<16> copy{str_with_len_N};/23_median 29.5 ns 29.5 ns 10 +lstringa<16> copy{str_with_len_N};/23_stddev 2.05 ns 2.05 ns 10 +lstringa<16> copy{str_with_len_N};/23_cv 6.94 % 6.94 % 10 +lstringa<16> copy{str_with_len_N};/24_mean 30.1 ns 30.1 ns 10 +lstringa<16> copy{str_with_len_N};/24_median 29.4 ns 29.4 ns 10 +lstringa<16> copy{str_with_len_N};/24_stddev 2.16 ns 2.16 ns 10 +lstringa<16> copy{str_with_len_N};/24_cv 7.18 % 7.18 % 10 +lstringa<16> copy{str_with_len_N};/32_mean 32.1 ns 32.1 ns 10 +lstringa<16> copy{str_with_len_N};/32_median 31.8 ns 31.8 ns 10 +lstringa<16> copy{str_with_len_N};/32_stddev 1.07 ns 1.07 ns 10 +lstringa<16> copy{str_with_len_N};/32_cv 3.33 % 3.33 % 10 +lstringa<16> copy{str_with_len_N};/64_mean 32.6 ns 32.6 ns 10 +lstringa<16> copy{str_with_len_N};/64_median 32.5 ns 32.5 ns 10 +lstringa<16> copy{str_with_len_N};/64_stddev 1.03 ns 1.03 ns 10 +lstringa<16> copy{str_with_len_N};/64_cv 3.17 % 3.17 % 10 +lstringa<16> copy{str_with_len_N};/128_mean 37.0 ns 37.0 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 6.99 ns 6.99 ns 10 +lstringa<16> copy{str_with_len_N};/128_cv 18.88 % 18.88 % 10 +lstringa<16> copy{str_with_len_N};/256_mean 55.7 ns 55.7 ns 10 +lstringa<16> copy{str_with_len_N};/256_median 59.9 ns 59.9 ns 10 +lstringa<16> copy{str_with_len_N};/256_stddev 9.51 ns 9.51 ns 10 +lstringa<16> copy{str_with_len_N};/256_cv 17.08 % 17.08 % 10 +lstringa<16> copy{str_with_len_N};/512_mean 55.7 ns 55.7 ns 10 +lstringa<16> copy{str_with_len_N};/512_median 57.3 ns 57.3 ns 10 +lstringa<16> copy{str_with_len_N};/512_stddev 9.28 ns 9.28 ns 10 +lstringa<16> copy{str_with_len_N};/512_cv 16.67 % 16.67 % 10 +lstringa<16> copy{str_with_len_N};/1024_mean 61.8 ns 61.8 ns 10 +lstringa<16> copy{str_with_len_N};/1024_median 63.4 ns 63.4 ns 10 +lstringa<16> copy{str_with_len_N};/1024_stddev 8.00 ns 8.00 ns 10 +lstringa<16> copy{str_with_len_N};/1024_cv 12.94 % 12.94 % 10 +lstringa<16> copy{str_with_len_N};/2048_mean 92.0 ns 92.0 ns 10 +lstringa<16> copy{str_with_len_N};/2048_median 92.6 ns 92.6 ns 10 +lstringa<16> copy{str_with_len_N};/2048_stddev 12.0 ns 12.0 ns 10 +lstringa<16> copy{str_with_len_N};/2048_cv 13.08 % 13.08 % 10 +lstringa<16> copy{str_with_len_N};/4096_mean 142 ns 142 ns 10 +lstringa<16> copy{str_with_len_N};/4096_median 143 ns 143 ns 10 +lstringa<16> copy{str_with_len_N};/4096_stddev 6.13 ns 6.13 ns 10 +lstringa<16> copy{str_with_len_N};/4096_cv 4.32 % 4.32 % 10 +lstringa<512> copy{str_with_len_N};/15_mean 14.4 ns 14.4 ns 10 +lstringa<512> copy{str_with_len_N};/15_median 14.0 ns 14.0 ns 10 +lstringa<512> copy{str_with_len_N};/15_stddev 1.21 ns 1.21 ns 10 +lstringa<512> copy{str_with_len_N};/15_cv 8.42 % 8.42 % 10 +lstringa<512> copy{str_with_len_N};/16_mean 14.5 ns 14.5 ns 10 +lstringa<512> copy{str_with_len_N};/16_median 14.4 ns 14.4 ns 10 +lstringa<512> copy{str_with_len_N};/16_stddev 0.600 ns 0.600 ns 10 +lstringa<512> copy{str_with_len_N};/16_cv 4.15 % 4.15 % 10 +lstringa<512> copy{str_with_len_N};/23_mean 15.3 ns 15.3 ns 10 +lstringa<512> copy{str_with_len_N};/23_median 15.6 ns 15.6 ns 10 +lstringa<512> copy{str_with_len_N};/23_stddev 1.25 ns 1.25 ns 10 +lstringa<512> copy{str_with_len_N};/23_cv 8.15 % 8.15 % 10 +lstringa<512> copy{str_with_len_N};/24_mean 14.6 ns 14.6 ns 10 +lstringa<512> copy{str_with_len_N};/24_median 14.5 ns 14.5 ns 10 +lstringa<512> copy{str_with_len_N};/24_stddev 0.938 ns 0.938 ns 10 +lstringa<512> copy{str_with_len_N};/24_cv 6.40 % 6.40 % 10 +lstringa<512> copy{str_with_len_N};/32_mean 18.1 ns 18.1 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.940 ns 0.940 ns 10 +lstringa<512> copy{str_with_len_N};/32_cv 5.21 % 5.21 % 10 +lstringa<512> copy{str_with_len_N};/64_mean 17.6 ns 17.6 ns 10 +lstringa<512> copy{str_with_len_N};/64_median 17.7 ns 17.7 ns 10 +lstringa<512> copy{str_with_len_N};/64_stddev 0.458 ns 0.458 ns 10 +lstringa<512> copy{str_with_len_N};/64_cv 2.60 % 2.60 % 10 +lstringa<512> copy{str_with_len_N};/128_mean 18.2 ns 18.2 ns 10 +lstringa<512> copy{str_with_len_N};/128_median 18.1 ns 18.1 ns 10 +lstringa<512> copy{str_with_len_N};/128_stddev 0.654 ns 0.654 ns 10 +lstringa<512> copy{str_with_len_N};/128_cv 3.58 % 3.58 % 10 +lstringa<512> copy{str_with_len_N};/256_mean 19.8 ns 19.8 ns 10 +lstringa<512> copy{str_with_len_N};/256_median 19.8 ns 19.8 ns 10 +lstringa<512> copy{str_with_len_N};/256_stddev 0.843 ns 0.843 ns 10 +lstringa<512> copy{str_with_len_N};/256_cv 4.25 % 4.25 % 10 +lstringa<512> copy{str_with_len_N};/512_mean 22.1 ns 22.1 ns 10 +lstringa<512> copy{str_with_len_N};/512_median 22.0 ns 22.0 ns 10 +lstringa<512> copy{str_with_len_N};/512_stddev 1.09 ns 1.09 ns 10 +lstringa<512> copy{str_with_len_N};/512_cv 4.93 % 4.93 % 10 +lstringa<512> copy{str_with_len_N};/1024_mean 62.6 ns 62.6 ns 10 +lstringa<512> copy{str_with_len_N};/1024_median 63.4 ns 63.4 ns 10 +lstringa<512> copy{str_with_len_N};/1024_stddev 8.04 ns 8.04 ns 10 +lstringa<512> copy{str_with_len_N};/1024_cv 12.84 % 12.84 % 10 +lstringa<512> copy{str_with_len_N};/2048_mean 92.1 ns 92.1 ns 10 +lstringa<512> copy{str_with_len_N};/2048_median 94.1 ns 94.1 ns 10 +lstringa<512> copy{str_with_len_N};/2048_stddev 11.7 ns 11.7 ns 10 +lstringa<512> copy{str_with_len_N};/2048_cv 12.70 % 12.70 % 10 +lstringa<512> copy{str_with_len_N};/4096_mean 147 ns 147 ns 10 +lstringa<512> copy{str_with_len_N};/4096_median 151 ns 151 ns 10 +lstringa<512> copy{str_with_len_N};/4096_stddev 10.5 ns 10.5 ns 10 +lstringa<512> copy{str_with_len_N};/4096_cv 7.14 % 7.14 % 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 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 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 71.1 ns 71.1 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 70.7 ns 70.7 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 1.42 ns 1.42 ns 10 +std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 1.99 % 1.99 % 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 27.4 ns 27.4 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 26.9 ns 26.9 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 1.12 ns 1.12 ns 10 +std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 4.09 % 4.09 % 10 +stringa s = "123456789"; int res = s.to_int_mean 19.1 ns 19.1 ns 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 +stringa s = "123456789"; int res = s.to_int_stddev 0.814 ns 0.814 ns 10 +stringa s = "123456789"; int res = s.to_int_cv 4.26 % 4.26 % 10 +ssa s = "123456789"; int res = s.to_int_mean 17.2 ns 17.2 ns 10 +ssa s = "123456789"; int res = s.to_int_median 16.9 ns 16.9 ns 10 +ssa s = "123456789"; int res = s.to_int_stddev 0.572 ns 0.572 ns 10 +ssa s = "123456789"; int res = s.to_int_cv 3.33 % 3.33 % 10 +lstringa<20> s = "123456789"; int res = s.to_int_mean 17.2 ns 17.2 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_median 17.0 ns 17.0 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_stddev 0.749 ns 0.749 ns 10 +lstringa<20> s = "123456789"; int res = s.to_int_cv 4.36 % 4.36 % 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 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 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 54.9 ns 54.9 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 54.9 ns 54.9 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.713 ns 0.713 ns 10 +std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 1.30 % 1.30 % 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 28.6 ns 28.6 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 28.5 ns 28.5 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.387 ns 0.387 ns 10 +std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 1.35 % 1.35 % 10 +stringa s = "abcDef"; int res = s.to_int_mean 17.5 ns 17.5 ns 10 +stringa s = "abcDef"; int res = s.to_int_median 17.5 ns 17.5 ns 10 +stringa s = "abcDef"; int res = s.to_int_stddev 0.405 ns 0.405 ns 10 +stringa s = "abcDef"; int res = s.to_int_cv 2.32 % 2.32 % 10 +ssa s = "abcDef"; int res = s.to_int_mean 17.2 ns 17.2 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 1.14 ns 1.14 ns 10 +ssa s = "abcDef"; int res = s.to_int_cv 6.64 % 6.64 % 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.1 ns 16.1 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_stddev 0.405 ns 0.405 ns 10 +lstringa<20> s = "abcDef"; int res = s.to_int_cv 2.51 % 2.51 % 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 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 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 77.8 ns 77.8 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 77.7 ns 77.7 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 1.60 ns 1.60 ns 10 +std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 2.06 % 2.06 % 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_mean 24.0 ns 24.0 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_median 24.0 ns 24.0 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_stddev 0.204 ns 0.204 ns 10 +stringa s = " 123456789"; int res = s.to_int; // Check overflow_cv 0.85 % 0.85 % 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_mean 22.7 ns 22.7 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_median 22.6 ns 22.6 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_stddev 0.684 ns 0.684 ns 10 +ssa s = " 123456789"; int res = s.to_int; // No check overflow_cv 3.01 % 3.01 % 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 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 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 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_mean 207 ns 207 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 207 ns 207 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 8.89 ns 8.89 ns 10 +std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 4.30 % 4.30 % 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 107 ns 107 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 107 ns 107 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 1.78 ns 1.78 ns 10 +std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 1.65 % 1.65 % 10 +ssa s = "1234.567e10"; double res = *s.to_double()_mean 42.2 ns 42.2 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_median 42.1 ns 42.1 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.830 ns 0.830 ns 10 +ssa s = "1234.567e10"; double res = *s.to_double()_cv 1.97 % 1.97 % 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 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 +std::stringstream str; ... str << "abbaabbaabbaabba";_mean 4462 ns 4462 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_median 4448 ns 4448 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 133 ns 133 ns 10 +std::stringstream str; ... str << "abbaabbaabbaabba";_cv 2.97 % 2.97 % 10 +std::string str; ... str += "abbaabbaabbaabba";_mean 629 ns 629 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_median 630 ns 630 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_stddev 30.1 ns 30.1 ns 10 +std::string str; ... str += "abbaabbaabbaabba";_cv 4.79 % 4.79 % 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 780 ns 780 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_median 767 ns 767 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 48.3 ns 48.3 ns 10 +lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 6.18 % 6.18 % 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 625 ns 625 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_median 610 ns 610 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 66.9 ns 66.9 ns 10 +lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 10.70 % 10.70 % 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 499 ns 499 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_median 469 ns 469 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 71.5 ns 71.5 ns 10 +lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 14.33 % 14.33 % 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 395 ns 395 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 393 ns 393 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 5.71 ns 5.71 ns 10 +lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.44 % 1.44 % 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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_mean 4589 ns 4589 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 4499 ns 4499 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 218 ns 218 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 4.75 % 4.75 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1962 ns 1962 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1973 ns 1973 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 71.1 ns 71.1 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 3.62 % 3.62 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 905 ns 905 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 884 ns 884 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 67.1 ns 67.1 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 7.41 % 7.41 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 768 ns 768 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 745 ns 745 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 95.2 ns 95.2 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 12.40 % 12.40 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 648 ns 648 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 644 ns 644 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 52.9 ns 52.9 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 8.18 % 8.18 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 533 ns 533 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 539 ns 539 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 29.8 ns 29.8 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.60 % 5.60 % 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 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 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_mean 225107 ns 225107 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 222971 ns 222971 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 7206 ns 7206 ns 10 +std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 3.20 % 3.20 % 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 105312 ns 105312 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 104105 ns 104105 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 7466 ns 7466 ns 10 +std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 7.09 % 7.09 % 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 43046 ns 43046 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 42951 ns 42951 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2686 ns 2686 ns 10 +lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 6.24 % 6.24 % 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 39544 ns 39549 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 39142 ns 39142 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1926 ns 1923 ns 10 +lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.87 % 4.86 % 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 38237 ns 38237 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 37844 ns 37844 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1811 ns 1811 ns 10 +lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.74 % 4.74 % 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 38420 ns 38420 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 38690 ns 38690 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1960 ns 1960 ns 10 +lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.10 % 5.10 % 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 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 +std::stringstream str; ... str << str_var1 << str_var2;_mean 4614 ns 4614 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_median 4596 ns 4596 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_stddev 104 ns 104 ns 10 +std::stringstream str; ... str << str_var1 << str_var2;_cv 2.25 % 2.25 % 10 +std::string str; ... str += str_var1 + str_var2;_mean 2454 ns 2454 ns 10 +std::string str; ... str += str_var1 + str_var2;_median 2459 ns 2459 ns 10 +std::string str; ... str += str_var1 + str_var2;_stddev 95.4 ns 95.4 ns 10 +std::string str; ... str += str_var1 + str_var2;_cv 3.89 % 3.89 % 10 +lstringa<16> str; ... str += str_var1 + str_var2;_mean 1218 ns 1218 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_median 1230 ns 1230 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_stddev 72.6 ns 72.6 ns 10 +lstringa<16> str; ... str += str_var1 + str_var2;_cv 5.96 % 5.96 % 10 +lstringa<128> str; ... str += str_var1 + str_var2;_mean 1105 ns 1105 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_median 1120 ns 1120 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_stddev 42.5 ns 42.5 ns 10 +lstringa<128> str; ... str += str_var1 + str_var2;_cv 3.85 % 3.85 % 10 +lstringa<512> str; ... str += str_var1 + str_var2;_mean 945 ns 945 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_median 937 ns 937 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_stddev 43.9 ns 43.9 ns 10 +lstringa<512> str; ... str += str_var1 + str_var2;_cv 4.64 % 4.64 % 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_mean 897 ns 897 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_median 913 ns 913 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 49.3 ns 49.3 ns 10 +lstringa<1024> str; ... str += str_var1 + str_var2;_cv 5.49 % 5.49 % 10 -- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::stringstream str; str << "test = " << k << " times";_mean 6454 ns 6454 ns 10 +std::stringstream str; str << "test = " << k << " times";_median 6441 ns 6441 ns 10 +std::stringstream str; str << "test = " << k << " times";_stddev 308 ns 308 ns 10 +std::stringstream str; str << "test = " << k << " times";_cv 4.77 % 4.77 % 10 +std::string str = "test = " + std::to_string(k) + " times";_mean 1599 ns 1599 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_median 1587 ns 1587 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_stddev 60.1 ns 60.1 ns 10 +std::string str = "test = " + std::to_string(k) + " times";_cv 3.76 % 3.76 % 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 2891 ns 2891 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 2902 ns 2902 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 71.1 ns 71.1 ns 10 +char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 2.46 % 2.46 % 10 +std::string str = std::format("test = {} times", k);_mean 2003 ns 2003 ns 10 +std::string str = std::format("test = {} times", k);_median 2004 ns 2004 ns 10 +std::string str = std::format("test = {} times", k);_stddev 67.1 ns 67.1 ns 10 +std::string str = std::format("test = {} times", k);_cv 3.35 % 3.35 % 10 +lstringa<8> str; str.format("test = {} times", k);_mean 3067 ns 3067 ns 10 +lstringa<8> str; str.format("test = {} times", k);_median 3072 ns 3072 ns 10 +lstringa<8> str; str.format("test = {} times", k);_stddev 112 ns 112 ns 10 +lstringa<8> str; str.format("test = {} times", k);_cv 3.65 % 3.65 % 10 +lstringa<32> str; str.format("test = {} times", k);_mean 2448 ns 2448 ns 10 +lstringa<32> str; str.format("test = {} times", k);_median 2446 ns 2446 ns 10 +lstringa<32> str; str.format("test = {} times", k);_stddev 47.9 ns 47.3 ns 10 +lstringa<32> str; str.format("test = {} times", k);_cv 1.96 % 1.93 % 10 +lstringa<8> str = "test = " + k + " times";_mean 591 ns 591 ns 10 +lstringa<8> str = "test = " + k + " times";_median 591 ns 591 ns 10 +lstringa<8> str = "test = " + k + " times";_stddev 30.7 ns 30.7 ns 10 +lstringa<8> str = "test = " + k + " times";_cv 5.20 % 5.20 % 10 +lstringa<32> str = "test = " + k + " times";_mean 364 ns 364 ns 10 +lstringa<32> str = "test = " + k + " times";_median 357 ns 357 ns 10 +lstringa<32> str = "test = " + k + " times";_stddev 20.8 ns 20.8 ns 10 +lstringa<32> str = "test = " + k + " times";_cv 5.72 % 5.73 % 10 +stringa str = "test = " + k + " times";_mean 565 ns 565 ns 10 +stringa str = "test = " + k + " times";_median 569 ns 569 ns 10 +stringa str = "test = " + k + " times";_stddev 27.7 ns 27.7 ns 10 +stringa str = "test = " + k + " times";_cv 4.91 % 4.91 % 10 -- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +std::string::find + substr + std::strtol_mean 637 ns 637 ns 10 +std::string::find + substr + std::strtol_median 625 ns 625 ns 10 +std::string::find + substr + std::strtol_stddev 33.0 ns 33.0 ns 10 +std::string::find + substr + std::strtol_cv 5.18 % 5.18 % 10 +ssa::splitter + ssa::as_int_mean 291 ns 291 ns 10 +ssa::splitter + ssa::as_int_median 288 ns 288 ns 10 +ssa::splitter + ssa::as_int_stddev 15.5 ns 15.5 ns 10 +ssa::splitter + ssa::as_int_cv 5.33 % 5.33 % 10 +ssa::splitf + functor_mean 324 ns 324 ns 10 +ssa::splitf + functor_median 323 ns 323 ns 10 +ssa::splitf + functor_stddev 9.71 ns 9.71 ns 10 +ssa::splitf + functor_cv 3.00 % 3.00 % 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 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 +Naive (and wrong) replace symbols with std::string find + replace_mean 3008 ns 3008 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_median 3026 ns 3026 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_stddev 129 ns 129 ns 10 +Naive (and wrong) replace symbols with std::string find + replace_cv 4.28 % 4.28 % 10 +replace symbols with std::string find_first_of + replace_mean 4019 ns 4019 ns 10 +replace symbols with std::string find_first_of + replace_median 3978 ns 3978 ns 10 +replace symbols with std::string find_first_of + replace_stddev 205 ns 205 ns 10 +replace symbols with std::string find_first_of + replace_cv 5.11 % 5.11 % 10 +replace symbols with std::string_view find_first_of + copy_mean 3001 ns 3001 ns 10 +replace symbols with std::string_view find_first_of + copy_median 2990 ns 2990 ns 10 +replace symbols with std::string_view find_first_of + copy_stddev 158 ns 158 ns 10 +replace symbols with std::string_view find_first_of + copy_cv 5.26 % 5.26 % 10 +replace runtime symbols with string expressions and without remembering all search results_mean 3241 ns 3241 ns 10 +replace runtime symbols with string expressions and without remembering all search results_median 3248 ns 3248 ns 10 +replace runtime symbols with string expressions and without remembering all search results_stddev 59.6 ns 59.6 ns 10 +replace runtime symbols with string expressions and without remembering all search results_cv 1.84 % 1.84 % 10 +replace runtime symbols with simstr and memorization of all search results_mean 2783 ns 2783 ns 10 +replace runtime symbols with simstr and memorization of all search results_median 2760 ns 2760 ns 10 +replace runtime symbols with simstr and memorization of all search results_stddev 109 ns 109 ns 10 +replace runtime symbols with simstr and memorization of all search results_cv 3.91 % 3.91 % 10 +replace const symbols with string expressions and without remembering all search results_mean 2521 ns 2521 ns 10 +replace const symbols with string expressions and without remembering all search results_median 2522 ns 2522 ns 10 +replace const symbols with string expressions and without remembering all search results_stddev 81.7 ns 81.7 ns 10 +replace const symbols with string expressions and without remembering all search results_cv 3.24 % 3.24 % 10 +replace const symbols with string expressions and memorization of all search results_mean 2447 ns 2447 ns 10 +replace const symbols with string expressions and memorization of all search results_median 2429 ns 2429 ns 10 +replace const symbols with string expressions and memorization of all search results_stddev 77.6 ns 77.6 ns 10 +replace const symbols with string expressions and memorization of all search results_cv 3.17 % 3.17 % 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 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 +Short Naive (and wrong) replace symbols with std::string find + replace_mean 436 ns 436 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_median 433 ns 433 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_stddev 16.7 ns 16.7 ns 10 +Short Naive (and wrong) replace symbols with std::string find + replace_cv 3.82 % 3.82 % 10 +Short replace symbols with std::string find_first_of + replace_mean 480 ns 480 ns 10 +Short replace symbols with std::string find_first_of + replace_median 475 ns 475 ns 10 +Short replace symbols with std::string find_first_of + replace_stddev 18.0 ns 18.0 ns 10 +Short replace symbols with std::string find_first_of + replace_cv 3.76 % 3.76 % 10 +Short replace symbols with std::string_view find_first_of + copy_mean 409 ns 409 ns 10 +Short replace symbols with std::string_view find_first_of + copy_median 410 ns 410 ns 10 +Short replace symbols with std::string_view find_first_of + copy_stddev 12.5 ns 12.5 ns 10 +Short replace symbols with std::string_view find_first_of + copy_cv 3.05 % 3.05 % 10 +Short replace runtime symbols with string expressions and without remembering all search results_mean 396 ns 396 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_median 396 ns 396 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_stddev 18.8 ns 18.8 ns 10 +Short replace runtime symbols with string expressions and without remembering all search results_cv 4.74 % 4.74 % 10 +Short replace runtime symbols with simstr and memorization of all search results_mean 427 ns 427 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_median 423 ns 423 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_stddev 20.5 ns 20.5 ns 10 +Short replace runtime symbols with simstr and memorization of all search results_cv 4.81 % 4.81 % 10 +Short replace const symbols with string expressions and without remembering all search results_mean 261 ns 261 ns 10 +Short replace const symbols with string expressions and without remembering all search results_median 260 ns 260 ns 10 +Short replace const symbols with string expressions and without remembering all search results_stddev 20.7 ns 20.7 ns 10 +Short replace const symbols with string expressions and without remembering all search results_cv 7.92 % 7.92 % 10 +Short replace const symbols with string expressions and memorization of all search results_mean 299 ns 299 ns 10 +Short replace const symbols with string expressions and memorization of all search results_median 297 ns 297 ns 10 +Short replace const symbols with string expressions and memorization of all search results_stddev 12.6 ns 12.6 ns 10 +Short replace const symbols with string expressions and memorization of all search results_cv 4.22 % 4.22 % 10 ----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 std::string|64_mean 370 ns 370 ns 10 +replace bb to ---- in std::string|64_median 372 ns 372 ns 10 +replace bb to ---- in std::string|64_stddev 11.1 ns 11.1 ns 10 +replace bb to ---- in std::string|64_cv 2.99 % 2.99 % 10 +replace bb to ---- in std::string|256_mean 1328 ns 1328 ns 10 +replace bb to ---- in std::string|256_median 1317 ns 1317 ns 10 +replace bb to ---- in std::string|256_stddev 54.1 ns 54.1 ns 10 +replace bb to ---- in std::string|256_cv 4.07 % 4.07 % 10 +replace bb to ---- in std::string|512_mean 2633 ns 2633 ns 10 +replace bb to ---- in std::string|512_median 2612 ns 2612 ns 10 +replace bb to ---- in std::string|512_stddev 94.2 ns 94.2 ns 10 +replace bb to ---- in std::string|512_cv 3.58 % 3.58 % 10 +replace bb to ---- in std::string|1024_mean 5569 ns 5569 ns 10 +replace bb to ---- in std::string|1024_median 5605 ns 5605 ns 10 +replace bb to ---- in std::string|1024_stddev 321 ns 321 ns 10 +replace bb to ---- in std::string|1024_cv 5.76 % 5.76 % 10 +replace bb to ---- in std::string|2048_mean 12248 ns 12248 ns 10 +replace bb to ---- in std::string|2048_median 12198 ns 12198 ns 10 +replace bb to ---- in std::string|2048_stddev 434 ns 434 ns 10 +replace bb to ---- in std::string|2048_cv 3.54 % 3.54 % 10 +replace bb to ---- in lstringa<8>|64_mean 298 ns 298 ns 10 +replace bb to ---- in lstringa<8>|64_median 296 ns 296 ns 10 +replace bb to ---- in lstringa<8>|64_stddev 9.58 ns 9.58 ns 10 +replace bb to ---- in lstringa<8>|64_cv 3.21 % 3.21 % 10 +replace bb to ---- in lstringa<8>|256_mean 1121 ns 1121 ns 10 +replace bb to ---- in lstringa<8>|256_median 1122 ns 1122 ns 10 +replace bb to ---- in lstringa<8>|256_stddev 73.6 ns 73.6 ns 10 +replace bb to ---- in lstringa<8>|256_cv 6.56 % 6.56 % 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 bb to ---- in lstringa<8>|512_median 2124 ns 2124 ns 10 +replace bb to ---- in lstringa<8>|512_stddev 106 ns 106 ns 10 +replace bb to ---- in lstringa<8>|512_cv 5.00 % 5.00 % 10 +replace bb to ---- in lstringa<8>|1024_mean 3949 ns 3949 ns 10 +replace bb to ---- in lstringa<8>|1024_median 3960 ns 3960 ns 10 +replace bb to ---- in lstringa<8>|1024_stddev 92.0 ns 92.0 ns 10 +replace bb to ---- in lstringa<8>|1024_cv 2.33 % 2.33 % 10 +replace bb to ---- in lstringa<8>|2048_mean 7688 ns 7688 ns 10 +replace bb to ---- in lstringa<8>|2048_median 7720 ns 7720 ns 10 +replace bb to ---- in lstringa<8>|2048_stddev 343 ns 343 ns 10 +replace bb to ---- in lstringa<8>|2048_cv 4.46 % 4.46 % 10 +replace bb to ---- by init stringa|64_mean 204 ns 204 ns 10 +replace bb to ---- by init stringa|64_median 201 ns 201 ns 10 +replace bb to ---- by init stringa|64_stddev 7.83 ns 7.83 ns 10 +replace bb to ---- by init stringa|64_cv 3.83 % 3.83 % 10 +replace bb to ---- by init stringa|256_mean 730 ns 730 ns 10 +replace bb to ---- by init stringa|256_median 731 ns 731 ns 10 +replace bb to ---- by init stringa|256_stddev 28.8 ns 28.8 ns 10 +replace bb to ---- by init stringa|256_cv 3.95 % 3.95 % 10 +replace bb to ---- by init stringa|512_mean 1709 ns 1709 ns 10 +replace bb to ---- by init stringa|512_median 1704 ns 1704 ns 10 +replace bb to ---- by init stringa|512_stddev 71.5 ns 71.5 ns 10 +replace bb to ---- by init stringa|512_cv 4.19 % 4.19 % 10 +replace bb to ---- by init stringa|1024_mean 3566 ns 3566 ns 10 +replace bb to ---- by init stringa|1024_median 3553 ns 3553 ns 10 +replace bb to ---- by init stringa|1024_stddev 129 ns 129 ns 10 +replace bb to ---- by init stringa|1024_cv 3.61 % 3.61 % 10 +replace bb to ---- by init stringa|2048_mean 7174 ns 7174 ns 10 +replace bb to ---- by init stringa|2048_median 7203 ns 7203 ns 10 +replace bb to ---- by init stringa|2048_stddev 190 ns 190 ns 10 +replace bb to ---- by init stringa|2048_cv 2.65 % 2.65 % 10 ----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 std::string|64_mean 262 ns 262 ns 10 +replace bb to -- in std::string|64_median 262 ns 262 ns 10 +replace bb to -- in std::string|64_stddev 8.44 ns 8.44 ns 10 +replace bb to -- in std::string|64_cv 3.22 % 3.22 % 10 +replace bb to -- in std::string|256_mean 964 ns 964 ns 10 +replace bb to -- in std::string|256_median 962 ns 962 ns 10 +replace bb to -- in std::string|256_stddev 42.4 ns 42.4 ns 10 +replace bb to -- in std::string|256_cv 4.40 % 4.40 % 10 +replace bb to -- in std::string|512_mean 1891 ns 1891 ns 10 +replace bb to -- in std::string|512_median 1891 ns 1891 ns 10 +replace bb to -- in std::string|512_stddev 74.6 ns 74.6 ns 10 +replace bb to -- in std::string|512_cv 3.95 % 3.95 % 10 +replace bb to -- in std::string|1024_mean 3703 ns 3703 ns 10 +replace bb to -- in std::string|1024_median 3751 ns 3751 ns 10 +replace bb to -- in std::string|1024_stddev 134 ns 134 ns 10 +replace bb to -- in std::string|1024_cv 3.61 % 3.61 % 10 +replace bb to -- in std::string|2048_mean 7154 ns 7154 ns 10 +replace bb to -- in std::string|2048_median 6991 ns 6991 ns 10 +replace bb to -- in std::string|2048_stddev 341 ns 341 ns 10 +replace bb to -- in std::string|2048_cv 4.77 % 4.77 % 10 +replace bb to -- in lstringa<8>|64_mean 223 ns 223 ns 10 +replace bb to -- in lstringa<8>|64_median 219 ns 219 ns 10 +replace bb to -- in lstringa<8>|64_stddev 9.41 ns 9.41 ns 10 +replace bb to -- in lstringa<8>|64_cv 4.22 % 4.22 % 10 +replace bb to -- in lstringa<8>|256_mean 775 ns 775 ns 10 +replace bb to -- in lstringa<8>|256_median 779 ns 779 ns 10 +replace bb to -- in lstringa<8>|256_stddev 22.7 ns 22.7 ns 10 +replace bb to -- in lstringa<8>|256_cv 2.93 % 2.93 % 10 +replace bb to -- in lstringa<8>|512_mean 1462 ns 1462 ns 10 +replace bb to -- in lstringa<8>|512_median 1441 ns 1441 ns 10 +replace bb to -- in lstringa<8>|512_stddev 69.1 ns 69.1 ns 10 +replace bb to -- in lstringa<8>|512_cv 4.72 % 4.72 % 10 +replace bb to -- in lstringa<8>|1024_mean 2825 ns 2825 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.07 % 3.07 % 10 +replace bb to -- in lstringa<8>|1024_stddev 66.7 ns 66.7 ns 10 +replace bb to -- in lstringa<8>|1024_cv 2.36 % 2.36 % 10 +replace bb to -- in lstringa<8>|2048_mean 5495 ns 5495 ns 10 +replace bb to -- in lstringa<8>|2048_median 5481 ns 5481 ns 10 +replace bb to -- in lstringa<8>|2048_stddev 185 ns 185 ns 10 +replace bb to -- in lstringa<8>|2048_cv 3.37 % 3.37 % 10 +replace bb to -- by init stringa|64_mean 181 ns 181 ns 10 +replace bb to -- by init stringa|64_median 182 ns 182 ns 10 +replace bb to -- by init stringa|64_stddev 5.66 ns 5.66 ns 10 +replace bb to -- by init stringa|64_cv 3.13 % 3.13 % 10 +replace bb to -- by init stringa|256_mean 646 ns 646 ns 10 +replace bb to -- by init stringa|256_median 651 ns 651 ns 10 +replace bb to -- by init stringa|256_stddev 36.4 ns 36.4 ns 10 +replace bb to -- by init stringa|256_cv 5.63 % 5.64 % 10 +replace bb to -- by init stringa|512_mean 1197 ns 1197 ns 10 +replace bb to -- by init stringa|512_median 1177 ns 1177 ns 10 +replace bb to -- by init stringa|512_stddev 78.8 ns 78.8 ns 10 +replace bb to -- by init stringa|512_cv 6.58 % 6.58 % 10 +replace bb to -- by init stringa|1024_mean 2229 ns 2229 ns 10 +replace bb to -- by init stringa|1024_median 2228 ns 2228 ns 10 +replace bb to -- by init stringa|1024_stddev 78.5 ns 78.5 ns 10 +replace bb to -- by init stringa|1024_cv 3.52 % 3.52 % 10 +replace bb to -- by init stringa|2048_mean 4482 ns 4482 ns 10 +replace bb to -- by init stringa|2048_median 4523 ns 4523 ns 10 +replace bb to -- by init stringa|2048_stddev 201 ns 201 ns 10 +replace bb to -- by init stringa|2048_cv 4.50 % 4.50 % 10 ----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +hashStrMapA emplace & find stringa;_mean 3099563 ns 3099563 ns 10 +hashStrMapA emplace & find stringa;_median 3074236 ns 3074236 ns 10 +hashStrMapA emplace & find stringa;_stddev 57632 ns 57632 ns 10 +hashStrMapA emplace & find stringa;_cv 1.86 % 1.86 % 10 +std::unordered_map emplace & find std::string;_mean 3404147 ns 3404147 ns 10 +std::unordered_map emplace & find std::string;_median 3405530 ns 3405530 ns 10 +std::unordered_map emplace & find std::string;_stddev 71228 ns 71228 ns 10 +std::unordered_map emplace & find std::string;_cv 2.09 % 2.09 % 10 +hashStrMapA emplace & find ssa;_mean 3137768 ns 3137768 ns 10 +hashStrMapA emplace & find ssa;_median 3124464 ns 3124464 ns 10 +hashStrMapA emplace & find ssa;_stddev 64503 ns 64503 ns 10 +hashStrMapA emplace & find ssa;_cv 2.06 % 2.06 % 10 +std::unordered_map emplace & find std::string_view;_mean 3690206 ns 3690206 ns 10 +std::unordered_map emplace & find std::string_view;_median 3667526 ns 3667526 ns 10 +std::unordered_map emplace & find std::string_view;_stddev 107590 ns 107590 ns 10 +std::unordered_map emplace & find std::string_view;_cv 2.92 % 2.92 % 10 ----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000 -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 +Build func full name std::string;_mean 2929 ns 2929 ns 10 +Build func full name std::string;_median 2958 ns 2958 ns 10 +Build func full name std::string;_stddev 181 ns 181 ns 10 +Build func full name std::string;_cv 6.18 % 6.18 % 10 +Build func full name std::string 1;_mean 3048 ns 3048 ns 10 +Build func full name std::string 1;_median 3034 ns 3034 ns 10 +Build func full name std::string 1;_stddev 115 ns 115 ns 10 +Build func full name std::string 1;_cv 3.78 % 3.78 % 10 +Build func full name std::stream;_mean 6964 ns 6964 ns 10 +Build func full name std::stream;_median 6961 ns 6961 ns 10 +Build func full name std::stream;_stddev 371 ns 371 ns 10 +Build func full name std::stream;_cv 5.32 % 5.32 % 10 +Build func full name stringa;_mean 1410 ns 1410 ns 10 +Build func full name stringa;_median 1408 ns 1408 ns 10 +Build func full name stringa;_stddev 74.0 ns 74.0 ns 10 +Build func full name stringa;_cv 5.25 % 5.25 % 10 +Build func full name stringa 1;_mean 1605 ns 1605 ns 10 +Build func full name stringa 1;_median 1597 ns 1597 ns 10 +Build func full name stringa 1;_stddev 56.9 ns 56.9 ns 10 +Build func full name stringa 1;_cv 3.54 % 3.54 % 10 diff --git a/docs/Doxyfile b/docs/Doxyfile index 14de555..a415b8e 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -48,7 +48,7 @@ PROJECT_NAME = "simstr" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.6.0 +PROJECT_NUMBER = 1.6.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewers a diff --git a/docs/Doxyfile_ru b/docs/Doxyfile_ru index 36c3488..666bb44 100644 --- a/docs/Doxyfile_ru +++ b/docs/Doxyfile_ru @@ -48,7 +48,7 @@ PROJECT_NAME = "simstr" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.6.0 +PROJECT_NUMBER = 1.6.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewers a diff --git a/include/simstr/simple_unicode.h b/include/simstr/simple_unicode.h index f5789bd..9646791 100644 --- a/include/simstr/simple_unicode.h +++ b/include/simstr/simple_unicode.h @@ -1,6 +1,6 @@ /* * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com - * ver. 1.6.0 + * ver. 1.6.1 */ #pragma once diff --git a/include/simstr/sstring.h b/include/simstr/sstring.h index af7f3eb..dfce6a0 100644 --- a/include/simstr/sstring.h +++ b/include/simstr/sstring.h @@ -1,9 +1,9 @@ /* * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com - * ver. 1.6.0 + * ver. 1.6.1 * Классы для работы со строками * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com -* ver. 1.6.0 +* ver. 1.6.1 * Classes for working with strings */ @@ -767,10 +767,9 @@ protected: init(size_t size) set_size(size_t size) */ -public: template requires(!std::is_same_v) - from_utf_convertible(simple_str init) { + void init_from_utf_convertible(simple_str init) { using worker = utf_convert_selector; Impl* d = static_cast(this); size_t len = init.length(); @@ -783,9 +782,6 @@ public: worker::convert(init.symbols(), len, str); } } - template - requires(!std::is_same_v) - from_utf_convertible(const str_algs, I, M>& init) : from_utf_convertible(init.to_str()) {} }; /*! @@ -2700,8 +2696,6 @@ protected: friend class sstring; K* data_; - // Поле не должно инициализироваться, так как может устанавливаться в базовых конструкторах - // The field should not be initialized, as it can be set in base constructors size_t size_; union { @@ -2715,8 +2709,9 @@ protected: local_[0] = 0; } constexpr static size_t calc_capacity(size_t s) { + const int al = alignof(std::max_align_t) < 16 ? 16 : alignof(std::max_align_t); size_t real_need = (s + 1) * sizeof(K) + extra; - size_t aligned_alloced = (real_need + alignof(std::max_align_t) - 1) / alignof(std::max_align_t) * alignof(std::max_align_t); + size_t aligned_alloced = (real_need + al - 1) / al * al; return (aligned_alloced - extra) / sizeof(K) - 1; } @@ -2778,8 +2773,6 @@ protected: } public: - using base_utf::base_utf; - /*! * @ru @brief Создать пустой объект. * @param ...args - параметры для инициализации аллокатора. @@ -2965,6 +2958,17 @@ public: create_empty(); this->operator<<(op); } + template + requires(!std::is_same_v) + lstring(simple_str init) { + this->init_from_utf_convertible(init); + } + + template + requires(!std::is_same_v) + lstring(const str_algs, I, M>& init) { + this->init_from_utf_convertible(init.to_str()); + } // copy and swap для присваиваний здесь не очень применимо, так как для строк с большим локальным буфером лишняя копия даже перемещением будет дорого стоить // Поэтому реализуем копирующее и перемещающее присваивание отдельно @@ -3057,7 +3061,7 @@ public: return assign(other, S - 1); } /*! - * @ru @brief Оператор присаивания строкового выражения. + * @ru @brief Оператор присваивания строкового выражения. * @param expr - строковое выражение, материализуемое в буфер строки. * @return my_type& - ссылку на себя же. * @details Если в строковом выражении что-либо ссылается на части этой же строки, то результат не определён. @@ -3439,7 +3443,6 @@ protected: } public: - using base_utf::base_utf; sstring() { create_empty(); @@ -3638,6 +3641,21 @@ public: bigLen_ = N - 1; } + /*! + * @ru @brief Инициализация из строкового источника с другим типом символов. Конвертирует через UTF. + * @tparam O - тип жругих символов. + * @en @brief Initialization from a string source with a different character type. Converts via UTF. + * @tparam O - type of other characters. */ + template requires(!std::is_same_v) + sstring(simple_str init) { + this->init_from_utf_convertible(init); + } + + template requires(!std::is_same_v) + sstring(const str_algs, I, M>& init) { + this->init_from_utf_convertible(init.to_str()); + } + constexpr void swap(my_type&& other) noexcept { char buf[sizeof(buf_) + sizeof(K)]; memcpy(buf, buf_, sizeof(buf)); @@ -3795,6 +3813,160 @@ public: template inline const sstring sstring::empty_str{}; +struct no_alloc{}; + +template +class decl_empty_bases cestring : + public str_algs, cestring, true>, + public str_storable, no_alloc>, + public null_terminated> + //, public from_utf_convertible> +{ + using symb_type = K; + using my_type = cestring; + + enum : size_t { + /// @ru Размер внутреннего буфера в символах @en Size of internal buffer + LocalCapacity = N | (sizeof(void*) / sizeof(K) - 1), + }; + +protected: + + using base_algs = str_algs, my_type, true>; + using base_storable = str_storable; + //using base_utf = from_utf_convertible; + using traits = ch_traits; + using s_str = base_storable::s_str; + + friend base_storable; + //friend base_utf; + const K* cstr_{}; + size_t size_{}; + bool is_cstr_{}; + K local_[LocalCapacity + 1]{}; + + constexpr void create_empty() { + is_cstr_ = false; + size_ = 0; + local_[0] = 0; + } + + constexpr K* init(size_t s) { + size_ = s; + if (size_ > LocalCapacity) { + throw std::bad_alloc{}; + } + is_cstr_ = false; + return local_; + } +public: + /// @ru Длина строки. @en String length. + constexpr size_t length() const noexcept { + return size_; + } + /// @ru Указатель на константные символы. @en Pointer to constant characters. + constexpr const K* symbols() const noexcept { + return is_cstr_ ? cstr_ : local_; + } + /// @ru Пустая ли строка. @en Is the string empty? + constexpr bool is_empty() const noexcept { + return size_ == 0; + } + /// @ru Пустая ли строка, для совместимости с std::string. @en Whether the string is empty, for compatibility with std::string. + constexpr bool empty() const noexcept { + return size_ == 0; + } + /// @ru Текущая ёмкость буфера строки. @en Current row buffer capacity. + constexpr size_t capacity() const noexcept { + return LocalCapacity; + } + /*! + * @ru @brief Конструктор пустой строки. + * @en @brief Constructor for the empty string. + */ + constexpr cestring() noexcept = default; + + /*! + * @ru @brief Конструктор из другого строкового объекта. + * @param other - другой строковый объект, simple_str. + * @en @brief A constructor from another string object. + * @param other - another string object, simple_str. + */ + constexpr cestring(s_str other) : base_storable() { + base_storable::init_from_str_other(other); + } + /*! + * @ru @brief Конструктор повторения строки. + * @param repeat - количество повторов. + * @param pattern - строка, которую надо повторить. + * @en @brief String repetition constructor. + * @param repeat - number of repetitions. + * @param pattern - the line to be repeated. + */ + constexpr cestring(size_t repeat, s_str pattern) : base_storable() { + base_storable::init_str_repeat(repeat, pattern); + } + /*! + * @ru @brief Конструктор повторения символа. + * @param count - количество повторов. + * @param pad - символ, который надо повторить. + * @en @brief Character repetition constructor. + * @param count - number of repetitions. + * @param pad - the character to be repeated. + */ + constexpr cestring(size_t count, K pad) : base_storable() { + base_storable::init_symb_repeat(count, pad); + } + /*! + * @ru @brief Конструктор из строкового выражения. + * @param expr - строковое выражение. + * @details Конструктор запрашивает у строкового выражения `length()`, + * выделяет память нужного размера, и вызывает метод `place()` для размещения + * результата в буфере. + * @en @brief Constructor from a string expression. + * @param expr - string expression. + * @details The constructor queries the string expression `length()`, + * allocates memory of the required size, and calls the `place()` method to allocate + * result in buffer. + */ + constexpr cestring(const StrExprForType auto& expr) : base_storable() { + base_storable::init_str_expr(expr); + } + /*! + * @ru @brief Конструктор из строкового источника с заменой. + * @param f - строковый объект, из которого берётся исходная строка. + * @param pattern - подстрока, которую надо заменить. + * @param repl - строка, на которую надо заменить. + * @param offset - начальная позиция для поиска подстрок. + * @param maxCount - максимальное количество замен, 0 - без ограничений. + * @en @brief Constructor from string source with replacement. + * @param f - the string object from which the source string is taken. + * @param pattern - substring to be replaced. + * @param repl - the string to be replaced with. + * @param offset - starting position for searching substrings. + * @param maxCount - maximum number of replacements, 0 - no restrictions. + */ + template From> + constexpr cestring(const From& f, s_str pattern, s_str repl, size_t offset = 0, size_t maxCount = 0) + : base_storable() { + base_storable::init_replaced(f, pattern, repl, offset, maxCount); + } + + /// @ru Деструктор строки. @en String destructor. + constexpr ~cestring() {} + + /*! + * @ru @brief Инициализация из строкового литерала. + * @param s - строковый литерал. + * @details В этом случае просто запоминаем указатель на строку и её длину. + * @en @brief Initialize from a string literal. + * @param s - string literal. + * @details In this case, we simply remember the pointer to the string and its length. + */ + template::Count> + constexpr cestring(T&& s) : base_storable(), cstr_(s), size_(M - 1), is_cstr_(true), local_{0} {} +}; + template consteval simple_str_nt select_str(simple_str_nt s8, simple_str_nt sb, simple_str_nt sw, simple_str_nt s16, simple_str_nt s32) { if constexpr (std::is_same_v) diff --git a/include/simstr/strexpr.h b/include/simstr/strexpr.h index e4554fc..8243d48 100644 --- a/include/simstr/strexpr.h +++ b/include/simstr/strexpr.h @@ -1,5 +1,5 @@ /* - * ver. 1.6.0 + * ver. 1.6.1 * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * База для строковых конкатенаций через выражения времени компиляции * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com @@ -1759,7 +1759,7 @@ template struct expr_hex : expr_to_std_string> { using symb_type = K; mutable need_sign, Val> v_; - mutable K buf_[sizeof(Val) * 2]; + mutable K buf_[sizeof(Val) * 2]{}; explicit constexpr expr_hex(Val v) : v_(v){} constexpr expr_hex(const expr_hex_src& v) : v_(v.v_){} diff --git a/readme.md b/readme.md index 5e2804c..29c48f2 100644 --- a/readme.md +++ b/readme.md @@ -3,7 +3,7 @@ [![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. +Version 1.6.1.

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

    @@ -323,8 +323,8 @@ function(add_simstr) simstr GIT_REPOSITORY https://github.com/orefkov/simstr.git GIT_SHALLOW TRUE - GIT_TAG tags/rel1.6.0 # Specify the desired release - FIND_PACKAGE_ARGS NAMES simstr 1.6.0 + GIT_TAG tags/rel1.6.1 # Specify the desired release + FIND_PACKAGE_ARGS NAMES simstr 1.6.1 ) FetchContent_MakeAvailable(simstr) endfunction() diff --git a/readme_ru.md b/readme_ru.md index be6eb43..9a3635e 100644 --- a/readme_ru.md +++ b/readme_ru.md @@ -3,7 +3,7 @@ [![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. +Версия 1.6.1.

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

    @@ -324,8 +324,8 @@ function(add_simstr) simstr GIT_REPOSITORY https://github.com/orefkov/simstr.git GIT_SHALLOW TRUE - GIT_TAG tags/rel1.6.0 # Укажите нужный релиз - FIND_PACKAGE_ARGS NAMES simstr 1.6.0 + GIT_TAG tags/rel1.6.1 # Укажите нужный релиз + FIND_PACKAGE_ARGS NAMES simstr 1.6.1 ) FetchContent_MakeAvailable(simstr) endfunction() diff --git a/src/sstring.cpp b/src/sstring.cpp index dc9b69b..299453f 100644 --- a/src/sstring.cpp +++ b/src/sstring.cpp @@ -1,5 +1,5 @@ /* - * ver. 1.6.0 + * ver. 1.6.1 * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * Реализация строковых функций * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com diff --git a/tests/test_expr_only.cpp b/tests/test_expr_only.cpp index 824f6d9..e37b422 100644 --- a/tests/test_expr_only.cpp +++ b/tests/test_expr_only.cpp @@ -1,5 +1,5 @@ /* - * ver. 1.6.0 + * ver. 1.6.1 * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * Тесты simstr * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com diff --git a/tests/test_str.cpp b/tests/test_str.cpp index 506a00b..48badf2 100644 --- a/tests/test_str.cpp +++ b/tests/test_str.cpp @@ -1,5 +1,5 @@ /* - * ver. 1.6.0 + * ver. 1.6.1 * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * Тесты simstr * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com @@ -1999,6 +1999,59 @@ TEST(SimStr, Subst) { EXPECT_EQ(u16t, u"Test 1 from 100, success."); } +void check_equal(stra a, stra b) { + EXPECT_EQ(a, b); +} + +inline constexpr cestring ce_sample = "sample " + e_subst(S_FRM("test = {}"), e_hex(10)) + ", done"; + +TEST(SimStr, ConstEval) { + constexpr cestring ce_empty; + static_assert(ce_empty.length() == 0); + static_assert(ce_empty == ""); + static_assert(ce_empty.find("aa") == -1); + + constexpr cestring ce_lit = "test"; + static_assert(ce_lit.length() == 4); + static_assert(ce_lit == "test"); + static_assert(ce_lit.find("st") == 2); + static_assert(ce_lit(1, 2) == "es"); + + constexpr cestring ce_str = "tester"_ss; + static_assert(ce_str.length() == 6); + static_assert(ce_str == "tester"); + static_assert(ce_str.find("te") == 0); + static_assert(ce_str.find("ter") == 3); + static_assert(ce_str(1, -1) == "este"); + + constexpr cestring ce_repeat{10, "tu"}; + static_assert(ce_repeat.length() == 20); + + constexpr cestring ce_expr = "test = "_ss + 10 + " times"; + static_assert(ce_expr == "test = 10 times"); + + constexpr cestring ce_subst = e_subst(S_FRM("test = {}"), 10); + static_assert(ce_subst == "test = 10"); + + constexpr cestring ce_hex = e_subst(S_FRM("test = {}"), e_hex(10)); + static_assert(ce_hex == "test = 0x0000000A"); + + constexpr cestring ce_concat = e_concat("", "test = ", 10, " times"); + static_assert(ce_concat == "test = 10 times"); + static_assert(ce_concat(6, 3).to_int().value == 10); + + char arr[ce_concat.length()] = {}; + + static constexpr cestring ce_copy{ce_concat}; + static_assert(ce_copy == "test = 10 times"); + + check_equal(ce_copy, "test = 10 times"); + EXPECT_TRUE(ce_copy == "test = 10 times"); + + stringa test_copy = ce_sample(0, 10); + EXPECT_EQ(test_copy, "sample tes"); +} + } // namespace simstr::tests TEST(SimStr, StrNoNamespace) { diff --git a/tests/test_tostrexpr.cpp b/tests/test_tostrexpr.cpp index 85d57ea..4969816 100644 --- a/tests/test_tostrexpr.cpp +++ b/tests/test_tostrexpr.cpp @@ -1,5 +1,5 @@ /* - * ver. 1.6.0 + * ver. 1.6.1 * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * Тесты simstr * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com