Compare commits

...

19 Commits

Author SHA1 Message Date
Aleksandr Orefkov e9eaa6c4cb Fix noexcept in find_or_throw 2026-08-05 14:36:02 +03:00
Aleksandr Orefkov 00a4a008a9 1.9.1
- Добавлены методы get, prefix, suffix
- Методы substr и simple_str() объявлены deprecated.
- Added methods get, prefix, suffix
- The substr and simple_str() methods are deprecated.
2026-07-31 16:08:33 +03:00
Aleksandr Orefkov 86deccbac3 1.8.2
Добавлено несколько методов в hashStrMap.
Added several methods to hashStrMap.
2026-07-24 16:24:40 +03:00
Aleksandr Orefkov a779aa7320 Fix allocator use. 2026-03-23 10:38:10 +03:00
Aleksandr Orefkov e9e717c8bd 1.8.1
- Added the ability to use allocators with size specification when deallocating.
---
- Добавлена возможность использовать аллокаторы с указанием размера при деалокации.
2026-03-22 14:58:45 +03:00
Aleksandr Orefkov 0861d365f5 1.7.3
- Added several string functions.
---
- Добавлено несколько строковых функций.
2026-03-08 17:53:28 +03:00
Aleksandr Orefkov 91a2f798e3 Update description 2026-03-01 11:15:47 +03:00
Aleksandr Orefkov c8fb92fee0 1.7.2
- Fix build for Clang with libc++
- Update benchmarks.
2026-02-27 23:05:49 +03:00
Aleksandr Orefkov a083ff1b8b Some fixes 2026-02-25 14:31:11 +03:00
Aleksandr Orefkov f798e8fbbb Change docs 2026-02-22 11:23:30 +03:00
Aleksandr Orefkov 75c9d52f0d 1.7.1
- Changed hashStrMap implementation. Added the ability to specify an allocator.
- Fixed identified bugs.
---
- Изменил реализацию hashStrMap. Добавил возможность указывать аллокатор.
- Исправил найденные ошибки
2026-02-21 16:51:57 +03:00
Aleksandr Orefkov c604e89bdf Fix doc. 2026-02-16 00:34:15 +03:00
Aleksandr Orefkov 7bb7ddb766 1.7.0
- Add e_upper, e_lower, e_ascii_upper, e_ascii_lower sting expressions.
- Add str::make_ascii_upper, str::make_ascii_lower functions for std::string.

- Добавлены строковые выражения e_upper, e_lower, e_ascii_upper, e_ascii_lower.
- Добавлены функции str::make_ascii_upper, str::make_ascii_lower functions для std::string.
2026-02-16 00:03:09 +03:00
Aleksandr Orefkov 8610bea2a9 Add some benchmarks with stringzilla. 2026-02-14 13:09:54 +03:00
Aleksandr Orefkov ee73896337 1.6.7
Optimized copying of short lstrings.
The Emscripten build now allows benchmarks to run synchronously.
Оптимизировано копирование коротких lstring.
В Emscripten сборке добавлена возможность запустить бенчмарки синхронно.
2026-02-12 19:53:32 +03:00
Aleksandr Orefkov e62493a678 Fix error converting to double char8_t 2026-02-11 11:24:57 +03:00
Aleksandr Orefkov 8cf026f2c6 - Updated to 1.6.6.
- Improved UTF conversion.
- Fixed a number of bugs.
- Improved Emscripten benchmark compilation.
---
- Обновление до 1.6.6.
- Доработал UTF-конвертацию.
- Исправил ряд ошибок.
- Доработал Emscripten сборку бенчмарков.
2026-02-10 23:35:02 +03:00
Aleksandr Orefkov 2148718b32 - Update to 1.6.5.
- Benchmark build for Emscripten output text with no delay.
- Add ""_f16 flag for use e_hex as `num / 1_f16`.
2026-02-08 14:17:03 +03:00
Aleksandr Orefkov 4e1d1b5ffa Some small fixes. 2026-02-05 12:05:49 +03:00
28 changed files with 9150 additions and 6010 deletions

View File

@ -5,7 +5,7 @@ include(FetchContent)
project( project(
simstr simstr
VERSION 1.6.4 VERSION 1.9.1
DESCRIPTION "Yet another modern C++ string library" DESCRIPTION "Yet another modern C++ string library"
HOMEPAGE_URL "https://github.com/orefkov/simstr" HOMEPAGE_URL "https://github.com/orefkov/simstr"
LANGUAGES CXX LANGUAGES CXX
@ -29,6 +29,12 @@ option(SIMSTR_BUILD_TESTS "Build tests" ON)
option(SIMSTR_BENCHMARKS "Build benchmarks" Off) option(SIMSTR_BENCHMARKS "Build benchmarks" Off)
option(USE_SYSTEM_DEPS "Use system dependencies" Off) option(USE_SYSTEM_DEPS "Use system dependencies" Off)
cmake_dependent_option(SIMSTR_LINK_NATVIS "Link natvis file" On CAN_LINK_NATVIS Off) cmake_dependent_option(SIMSTR_LINK_NATVIS "Link natvis file" On CAN_LINK_NATVIS Off)
cmake_dependent_option(SIMSTR_USE_LIBCXX "Use libc++" Off "NOT CAN_LINK_NATVIS" Off)
if (SIMSTR_USE_LIBCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")
endif(SIMSTR_USE_LIBCXX)
add_library(simstr_simstr add_library(simstr_simstr
src/sstring.cpp src/sstring.cpp
@ -125,6 +131,9 @@ if(SIMSTR_BUILD_TESTS)
if(TARGET gtest) if(TARGET gtest)
target_compile_features(gtest PUBLIC cxx_std_23) target_compile_features(gtest PUBLIC cxx_std_23)
target_compile_features(gtest_main PUBLIC cxx_std_23) target_compile_features(gtest_main PUBLIC cxx_std_23)
if (CLANG_COMPILER)
target_compile_options(gtest PRIVATE -Wno-error=character-conversion)
endif(CLANG_COMPILER)
endif() endif()
endif() endif()
@ -142,6 +151,10 @@ function(GBencmark)
set(BENCHMARK_INSTALL_DOCS OFF) set(BENCHMARK_INSTALL_DOCS OFF)
set(BENCHMARK_DOWNLOAD_DEPENDENCIES ON) set(BENCHMARK_DOWNLOAD_DEPENDENCIES ON)
set(BENCHMARK_ENABLE_GTEST_TESTS OFF) set(BENCHMARK_ENABLE_GTEST_TESTS OFF)
if (SIMSTR_USE_LIBCXX)
set(BENCHMARK_USE_LIBCXX On)
endif(SIMSTR_USE_LIBCXX)
add_compile_definitions(BENCHMARK_STATIC_DEFINE) add_compile_definitions(BENCHMARK_STATIC_DEFINE)
FetchContent_MakeAvailable(googlebench) FetchContent_MakeAvailable(googlebench)
if(TARGET benchmark) if(TARGET benchmark)

View File

@ -134,8 +134,8 @@
"inherits": "base", "inherits": "base",
"displayName": "Linux base", "displayName": "Linux base",
"cacheVariables": { "cacheVariables": {
"CMAKE_C_COMPILER": "gcc-13", "CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++-13", "CMAKE_CXX_COMPILER": "g++",
"CMAKE_EXPORT_COMPILE_COMMANDS": true "CMAKE_EXPORT_COMPILE_COMMANDS": true
}, },
"condition": { "condition": {
@ -169,7 +169,7 @@
}, },
{ {
"name": "linux-release", "name": "linux-release",
"displayName": "Linux Release", "displayName": "Linux Release GCC",
"inherits": "linux-base", "inherits": "linux-base",
"cacheVariables": { "cacheVariables": {
"CMAKE_BUILD_TYPE": "Release" "CMAKE_BUILD_TYPE": "Release"
@ -181,8 +181,20 @@
"inherits": "linux-base", "inherits": "linux-base",
"cacheVariables": { "cacheVariables": {
"CMAKE_BUILD_TYPE": "Release", "CMAKE_BUILD_TYPE": "Release",
"CMAKE_C_COMPILER": "clang-21", "CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++-21" "CMAKE_CXX_COMPILER": "clang++"
}
},
{
"name": "linux-release-clang-libcxx",
"displayName": "Linux Release Clang libc++",
"inherits": "linux-base",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"SIMSTR_USE_LIBCXX": true,
"SIMSTR_BENCHMARKS": true
} }
} }
], ],

View File

@ -6,13 +6,34 @@ cmake_minimum_required (VERSION 3.15)
add_executable(benchStr bench_str.cpp bench.h) add_executable(benchStr bench_str.cpp bench.h)
target_link_libraries(benchStr simstr::simstr benchmark::benchmark) target_link_libraries(benchStr simstr::simstr benchmark::benchmark)
target_compile_features(benchStr PUBLIC cxx_std_23) target_compile_features(benchStr PUBLIC cxx_std_23)
target_compile_definitions(benchStr PRIVATE SIMSTR_VERSION="${PROJECT_VERSION}") target_compile_definitions(benchStr PRIVATE
SIMSTR_VERSION="${PROJECT_VERSION}"
CXX_COMPILER_ID="${CMAKE_CXX_COMPILER_ID}"
CXX_COMPILER_VERSION="${CMAKE_CXX_COMPILER_VERSION}"
)
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt
GIT_TAG tags/12.1.0
)
FetchContent_MakeAvailable(fmt)
FetchContent_Declare(
stringzilla
GIT_REPOSITORY https://github.com/ashvardanian/StringZilla.git
GIT_TAG main # or specify a version tag
)
FetchContent_MakeAvailable(stringzilla)
target_link_libraries(benchStr fmt::fmt stringzilla_header)
add_executable(process_result process_result.cpp) add_executable(process_result process_result.cpp)
target_link_libraries(process_result simstr_simstr) target_link_libraries(process_result simstr_simstr)
if (EMSCRIPTEN) if (EMSCRIPTEN)
#target_link_options(benchStr PRIVATE -sSTACK_SIZE=1048576 -sINITIAL_MEMORY=128MB -sALLOW_MEMORY_GROWTH=0) #target_link_options(benchStr PRIVATE -sSTACK_SIZE=1048576 -sINITIAL_MEMORY=128MB -sALLOW_MEMORY_GROWTH=0)
set_target_properties (benchStr PROPERTIES SUFFIX .html) set_target_properties (benchStr PROPERTIES SUFFIX .html)
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -sASYNCIFY --shell-file ${CMAKE_CURRENT_SOURCE_DIR}/emscripten/shell_minimal.html")
if(SIMSTR_EMSCRIPTEN_MT) if(SIMSTR_EMSCRIPTEN_MT)
target_link_options(benchStr PUBLIC -pthread -sPTHREAD_POOL_SIZE=navigator.hardwareConcurrency-1 -sENVIRONMENT=web,worker) target_link_options(benchStr PUBLIC -pthread -sPTHREAD_POOL_SIZE=navigator.hardwareConcurrency-1 -sENVIRONMENT=web,worker)
endif() endif()

View File

@ -1,24 +1,182 @@
/* /*
* ver. 1.9.1
* (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com
* Бенчмарки * Бенчмарки
* (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com
* Benchmarks
*/ */
#include <stringzilla/stringzilla.h>
#include <stringzilla/stringzilla.hpp>
#include "bench.h" #include "bench.h"
#include <sstream> #include <sstream>
#include <string> #include <string>
#include <charconv> #include <charconv>
#include <iomanip> #include <iomanip>
#include <fmt/format.h>
#include <fmt/compile.h>
using namespace simstr; using namespace simstr;
using namespace std::literals; using namespace std::literals;
#ifdef EMSCRIPTEN
#include <emscripten.h>
bool do_sync = false;
static void DoTeardown(const benchmark::State& state) {
// Это нужно чтобы интерфейс браузера обновился
// This is necessary for the browser interface to refresh.
if (!do_sync) {
emscripten_sleep(1);
}
}
#undef BENCHMARK
#define BENCHMARK(...) \
BENCHMARK_PRIVATE_DECLARE(_benchmark_) = \
(::benchmark::internal::RegisterBenchmarkInternal( \
::benchmark::internal::make_unique< \
::benchmark::internal::FunctionBenchmark>(#__VA_ARGS__, \
__VA_ARGS__)))->Teardown(DoTeardown)
#undef BENCHMARK_CAPTURE
#define BENCHMARK_CAPTURE(func, test_case_name, ...) \
BENCHMARK_PRIVATE_DECLARE(_benchmark_) = \
(::benchmark::internal::RegisterBenchmarkInternal( \
::benchmark::internal::make_unique< \
::benchmark::internal::FunctionBenchmark>( \
#func "/" #test_case_name, \
[](::benchmark::State& st) { func(st, __VA_ARGS__); })))->Teardown(DoTeardown)
#endif
#define TEST_TEXT "Test text" #define TEST_TEXT "Test text"
#define LONG_TEXT "123456789012345678901234567890" #define LONG_TEXT "123456789012345678901234567890"
#define TEXT_16 "abbaabbaabbaabba" #define TEXT_16 "abbaabbaabbaabba"
#define CHECK_RESULT //#define CHECK_RESULT
void __(benchmark::State& state) { for (auto _: state) {} } void __(benchmark::State& state) { for (auto _: state) {} }
namespace sz = ashvardanian::stringzilla;
sz::string email_concat_stringzilla_app(sz::string name, sz::string_view domain, sz::string_view tld) {
return name.append("@").append(domain).append(".").append(tld);
}
//> sz::string email_concat_stringzilla_app(sz::string name, sz::string_view domain, sz::string_view tld) {
void ConcatEmailSzApp(benchmark::State& state) {
sz::string name = "username";
sz::string_view domain = "verybigdomain", tld = "tld";
for (auto _: state) {
benchmark::DoNotOptimize(name);
benchmark::DoNotOptimize(domain);
benchmark::DoNotOptimize(tld);
auto email = email_concat_stringzilla_app(name, domain, tld);
benchmark::DoNotOptimize(email);
}
}
sz::string email_concat_stringzilla_exp(sz::string name, sz::string_view domain, sz::string_view tld) {
return sz::string{name | sz::string_view{"@"} | domain | sz::string_view{"."} | tld};
}
//> sz::string email_concat_stringzilla_exp(sz::string name, sz::string_view domain, sz::string_view tld) {
void ConcatEmailSzExp(benchmark::State& state) {
sz::string name = "username";
sz::string_view domain = "verybigdomain", tld = "tld";
for (auto _: state) {
benchmark::DoNotOptimize(name);
benchmark::DoNotOptimize(domain);
benchmark::DoNotOptimize(tld);
auto email = email_concat_stringzilla_exp(name, domain, tld);
benchmark::DoNotOptimize(email);
}
}
std::string email_concat_format(std::string_view name, std::string_view domain, std::string_view tld) {
return std::format("{}@{}.{}", name, domain, tld);
}
//> std::string email_concat_format(std::string_view name, std::string_view domain, std::string_view tld) {
void ConcatEmailFormat(benchmark::State& state) {
std::string_view name = "username", domain = "verybigdomain", tld = "tld";
for (auto _: state) {
benchmark::DoNotOptimize(name);
benchmark::DoNotOptimize(domain);
benchmark::DoNotOptimize(tld);
auto email = email_concat_format(name, domain, tld);
benchmark::DoNotOptimize(email);
}
}
std::string email_concat_stream(std::string_view name, std::string_view domain, std::string_view tld) {
std::stringstream s;
s << name << "@" << domain << "." << tld;
return s.str();
}
//> std::string email_concat_stream(std::string_view name, std::string_view domain, std::string_view tld) {
void ConcatEmailStream(benchmark::State& state) {
std::string_view name = "username", domain = "verybigdomain", tld = "tld";
for (auto _: state) {
benchmark::DoNotOptimize(name);
benchmark::DoNotOptimize(domain);
benchmark::DoNotOptimize(tld);
auto email = email_concat_stream(name, domain, tld);
benchmark::DoNotOptimize(email);
}
}
std::string email_concat_std(std::string name, std::string_view domain, std::string_view tld) {
return name.append("@").append(domain).append(".").append(tld);
}
//> std::string email_concat_std(std::string name, std::string_view domain, std::string_view tld) {
void ConcatEmailStd(benchmark::State& state) {
std::string name = "username";
std::string_view domain = "verybigdomain", tld = "tld";
for (auto _: state) {
benchmark::DoNotOptimize(name);
benchmark::DoNotOptimize(domain);
benchmark::DoNotOptimize(tld);
auto email = email_concat_std(name, domain, tld);
benchmark::DoNotOptimize(email);
}
}
std::string email_concat_std_expr(std::string_view name, std::string_view domain, std::string_view tld) {
return +name + "@" + domain + "." + tld;
}
//> std::string email_concat_std_expr(std::string_view name, std::string_view domain, std::string_view tld) {
void ConcatEmailStdExp(benchmark::State& state) {
std::string_view name = "username", domain = "verybigdomain", tld = "tld";
for (auto _: state) {
benchmark::DoNotOptimize(name);
benchmark::DoNotOptimize(domain);
benchmark::DoNotOptimize(tld);
auto email = email_concat_std_expr(name, domain, tld);
benchmark::DoNotOptimize(email);
}
}
stringa email_concat_sim_expr(ssa name, ssa domain, ssa tld) {
return name + "@" + domain + "." + tld;
}
//> stringa email_concat_sim_expr(ssa name, ssa domain, ssa tld) {
void ConcatEmailSimExp(benchmark::State& state) {
ssa name = "username", domain = "verybigdomain", tld = "tld";
for (auto _: state) {
benchmark::DoNotOptimize(name);
benchmark::DoNotOptimize(domain);
benchmark::DoNotOptimize(tld);
auto email = email_concat_sim_expr(name, domain, tld);
benchmark::DoNotOptimize(email);
}
}
BENCHMARK(__)->Name("----- Concatenate email ---------")->Repetitions(1);
BENCHMARK(ConcatEmailFormat)->Name("Concat email std::format");
BENCHMARK(ConcatEmailStream)->Name("Concat email std::stringstream");
BENCHMARK(ConcatEmailSzApp) ->Name("Concat email stringzilla append");
BENCHMARK(ConcatEmailSzExp) ->Name("Concat email stringzilla concat");
BENCHMARK(ConcatEmailStd) ->Name("Concat email std::string append");
BENCHMARK(ConcatEmailStdExp)->Name("Concat email std::string by strexpr");
BENCHMARK(ConcatEmailSimExp)->Name("Concat email stringa");
void ConcatStdToStd(benchmark::State& state) { void ConcatStdToStd(benchmark::State& state) {
std::string s1 = "start "; std::string s1 = "start ";
@ -110,7 +268,6 @@ void ConcatStdToCharsHex(benchmark::State& state) {
} }
} }
void ConcatSimToStdHex(benchmark::State& state) { 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. // 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 "; std::string s1 = "art ";
@ -118,7 +275,7 @@ void ConcatSimToStdHex(benchmark::State& state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s1);
// Can work for all types of symbols // Can work for all types of symbols
std::string str = +s1 + e_hex<HexFlags::Short>(i) + " end"; std::string str = +s1 + i / 1_f16 + " end";
benchmark::DoNotOptimize(str); benchmark::DoNotOptimize(str);
} }
} }
@ -131,7 +288,7 @@ void ConcatSimToSimHex(benchmark::State& state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s1);
// Can work for all types of symbols // Can work for all types of symbols
stringa str = s1 + e_hex<HexFlags::Short>(i) + " end"; stringa str = s1 + i / 1_f16 + " end";
benchmark::DoNotOptimize(str); benchmark::DoNotOptimize(str);
} }
} }
@ -144,7 +301,7 @@ void ConcatSimToSimHexC(benchmark::State& state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s1);
// Can work for all types of symbols // Can work for all types of symbols
stringa str = e_concat("", s1, e_hex<HexFlags::Short>(i), " end"); stringa str = e_concat("", s1, i / 1_f16, " end");
benchmark::DoNotOptimize(str); benchmark::DoNotOptimize(str);
} }
} }
@ -156,7 +313,7 @@ void ConcatSimToSimHexS(benchmark::State& state) {
for (auto _: state) { for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s1);
stringa str = e_subst("{}{} end", s1, e_hex<HexFlags::Short>(i)); stringa str = e_subst("{}{} end", s1, i / 1_f16);
benchmark::DoNotOptimize(str); benchmark::DoNotOptimize(str);
} }
} }
@ -168,7 +325,7 @@ void ConcatSimToSimHexVS(benchmark::State& state) {
for (auto _: state) { for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
benchmark::DoNotOptimize(s1); benchmark::DoNotOptimize(s1);
stringa str = e_vsubst("{}{} end"_ss, s1, e_hex<HexFlags::Short>(i)); stringa str = e_vsubst("{}{} end"_ss, s1, i / 1_f16);
benchmark::DoNotOptimize(str); benchmark::DoNotOptimize(str);
} }
} }
@ -187,7 +344,7 @@ BENCHMARK(ConcatSimToSimHexVS) ->Name("Subst stringa and hex number by e_vsubst
void ConcatSimToSimOct(benchmark::State& state) { void ConcatSimToSimOct(benchmark::State& state) {
for (auto _: state) { for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
stringa str = "art "_ss + i / 0x8a010_fmt + " end"; stringa str = "abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end";
benchmark::DoNotOptimize(str); benchmark::DoNotOptimize(str);
} }
} }
@ -196,23 +353,14 @@ void ConcatSimToSimOct(benchmark::State& state) {
void SubstSimToSimOct(benchmark::State& state) { void SubstSimToSimOct(benchmark::State& state) {
for (auto _: state) { for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
stringa str = e_subst("art {} end", i / 0x8a010_fmt); stringa str = e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt);
benchmark::DoNotOptimize(str);
}
}
}
void FormatStdToStdOct(benchmark::State& state) {
for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) {
std::string str = std::format("art {:#010o} end", i);
benchmark::DoNotOptimize(str); benchmark::DoNotOptimize(str);
} }
} }
} }
void VSubstSimToSimOct(benchmark::State& state) { void VSubstSimToSimOct(benchmark::State& state) {
ssa pattern = "art {} end"; ssa pattern = "abcdefghihklmopqr {} end";
for (auto _: state) { for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
stringa str = e_vsubst(pattern, i / 0x8a010_fmt); stringa str = e_vsubst(pattern, i / 0x8a010_fmt);
@ -221,8 +369,17 @@ void VSubstSimToSimOct(benchmark::State& state) {
} }
} }
void FormatStdToStdOct(benchmark::State& state) {
for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) {
std::string str = std::format("abcdefghihklmopqr {:#010o} end", i);
benchmark::DoNotOptimize(str);
}
}
}
void VFormatStdToStdOct(benchmark::State& state) { void VFormatStdToStdOct(benchmark::State& state) {
std::string_view pattern = "art {:#010o} end"; std::string_view pattern = "abcdefghihklmopqr {:#010o} end";
for (auto _: state) { for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
std::string str = std::vformat(pattern, std::make_format_args(i)); std::string str = std::vformat(pattern, std::make_format_args(i));
@ -235,20 +392,56 @@ void StreamStdToStdOct(benchmark::State& state) {
for (auto _: state) { for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) { for (unsigned i = 1; i <= 100'000; i *= 10) {
std::stringstream strm; std::stringstream strm;
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"; strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end";
std::string str = strm.str(); std::string str = strm.str();
benchmark::DoNotOptimize(str); benchmark::DoNotOptimize(str);
} }
} }
} }
BENCHMARK(__)->Name("----- format/vformat and subst/vsubst octal number ---------")->Repetitions(1); void FmtFormatComp(benchmark::State& state) {
BENCHMARK(ConcatSimToSimOct) ->Name("\"art \"_ss + i / 0x8a010_fmt + \" end\""); for (auto _: state) {
BENCHMARK(SubstSimToSimOct) ->Name("e_subst(\"art {} end\", i / 0x8a010_fmt)"); for (unsigned i = 1; i <= 100'000; i *= 10) {
std::string str = fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i);
benchmark::DoNotOptimize(str);
}
}
}
void FmtFormat(benchmark::State& state) {
for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) {
std::string str = fmt::format("abcdefghihklmopqr {:#010o} end", i);
benchmark::DoNotOptimize(str);
}
}
}
void StdFormatSize(benchmark::State& state) {
for (auto _: state) {
for (unsigned i = 1; i <= 100'000; i *= 10) {
size_t len = std::formatted_size("abcdefghihklmopqr {:#010o} end", i);
std::string str;
str.resize_and_overwrite(len, [&](char* p, size_t) {
std::format_to_n(str.data(), len, "abcdefghihklmopqr {:#010o} end", i);
return len;
});
benchmark::DoNotOptimize(str);
}
}
}
BENCHMARK(__)->Name("---- format/vformat and subst/vsubst octal number to 32 symbols result ----")->Repetitions(1);
BENCHMARK(ConcatSimToSimOct) ->Name("\"abcdefghihklmopqr \"_ss + i / 0x8a010_fmt + \" end\"");
BENCHMARK(SubstSimToSimOct) ->Name("e_subst(\"abcdefghihklmopqr {} end\", i / 0x8a010_fmt)");
BENCHMARK(VSubstSimToSimOct) ->Name("e_vsubst(pattern, i / 0x8a010_fmt)"); BENCHMARK(VSubstSimToSimOct) ->Name("e_vsubst(pattern, i / 0x8a010_fmt)");
BENCHMARK(FormatStdToStdOct) ->Name("std::format(\"art {:#010o} end\", i)"); BENCHMARK(FmtFormatComp) ->Name("fmt::format(FMT_COMPILE(\"abcdefghihklmopqr {:#010o} end\"), i)");
BENCHMARK(FmtFormat) ->Name("fmt::format(\"abcdefghihklmopqr {:#010o} end\", i)");
BENCHMARK(FormatStdToStdOct) ->Name("std::format(\"abcdefghihklmopqr {:#010o} end\", i)");
BENCHMARK(VFormatStdToStdOct) ->Name("std::vformat(pattern, std::make_format_args(i))"); BENCHMARK(VFormatStdToStdOct) ->Name("std::vformat(pattern, std::make_format_args(i))");
BENCHMARK(StreamStdToStdOct) ->Name("strm << \"art 0\" << std::oct << std::setw(9) << std::setfill('0') << i << \" end\""); BENCHMARK(StdFormatSize) ->Name("std::format with std::formatted_size");
BENCHMARK(StreamStdToStdOct) ->Name("strm << \"abcdefghihklmopqr 0\" << std::oct << std::setw(9) << std::setfill('0') << i << \" end\"");
void ConcatStdToStdS(benchmark::State& state) { void ConcatStdToStdS(benchmark::State& state) {
std::string s1 = "start "; std::string s1 = "start ";
@ -301,6 +494,10 @@ size_t find_pos_sim(ssa src, ssa name) {
return src.find(lstringa<200>{"\n- " + name + " -\n"}); return src.find(lstringa<200>{"\n- " + name + " -\n"});
} }
size_t find_pos_sz(sz::string_view src, sz::string_view name) {
return src.find(sz::string{"\n- "}.append(name).append(" -\n"));
}
//> size_t find_pos_str(std::string_view src, std::string_view name) { //> size_t find_pos_str(std::string_view src, std::string_view name) {
void FindConcatThreeStr(benchmark::State& state) { void FindConcatThreeStr(benchmark::State& state) {
std::string_view src = "sdfsdf\n- testtesttesttesttesttesttestte -\nsfrgdgfsg"; std::string_view src = "sdfsdf\n- testtesttesttesttesttesttestte -\nsfrgdgfsg";
@ -351,11 +548,27 @@ void FindConcatThreeSim(benchmark::State& state) {
#endif #endif
} }
} }
//> size_t find_pos_sz(sz::string_view src, sz::string_view name) {
void FindConcatThreeSz(benchmark::State& state) {
sz::string_view src = "sdfsdf\n- testtesttesttesttesttesttestte -\nsfrgdgfsg";
sz::string_view fnd = "testtesttesttesttesttesttestte";
for (auto _: state) {
benchmark::DoNotOptimize(src);
benchmark::DoNotOptimize(fnd);
size_t pos = find_pos_sz(src, fnd);
benchmark::DoNotOptimize(pos);
#ifdef CHECK_RESULT
if (pos != 6) {
state.SkipWithError("fail");
}
#endif
}
}
BENCHMARK(__)->Name("----- Find three concatenated string in string_view -----")->Repetitions(1); BENCHMARK(__)->Name("----- Find three concatenated string in string_view -----")->Repetitions(1);
BENCHMARK(FindConcatThreeStr)->Name("Find concat three std::string"); BENCHMARK(FindConcatThreeStr)->Name("Find concat three std::string");
BENCHMARK(FindConcatThreeExp)->Name("Find concat three strexpr"); BENCHMARK(FindConcatThreeExp)->Name("Find concat three strexpr");
BENCHMARK(FindConcatThreeSim)->Name("Find concat three simstr"); BENCHMARK(FindConcatThreeSim)->Name("Find concat three simstr");
BENCHMARK(FindConcatThreeSz) ->Name("Find concat three stringzilla string");
std::string buildTypeNameStr(std::string_view type_name, size_t prec, size_t scale) { std::string buildTypeNameStr(std::string_view type_name, size_t prec, size_t scale) {
std::string res{type_name}; std::string res{type_name};
@ -577,6 +790,7 @@ void Find(benchmark::State& state) {
} }
} }
BENCHMARK(__)->Name("----- Find 9 symbols text in end of 99 symbols text ---------")->Repetitions(1); BENCHMARK(__)->Name("----- Find 9 symbols text in end of 99 symbols text ---------")->Repetitions(1);
BENCHMARK(Find<sz::string>)->Name("sz::string::find;");
BENCHMARK(Find<std::string>) ->Name("std::string::find;"); BENCHMARK(Find<std::string>) ->Name("std::string::find;");
BENCHMARK(Find<std::string_view>) ->Name("std::string_view::find;"); BENCHMARK(Find<std::string_view>) ->Name("std::string_view::find;");
BENCHMARK(Find<ssa>) ->Name("ssa::find;"); BENCHMARK(Find<ssa>) ->Name("ssa::find;");
@ -724,7 +938,6 @@ void ToIntNoOverflow(benchmark::State& state, ssa t, int c) {
benchmark::DoNotOptimize(t); benchmark::DoNotOptimize(t);
} }
} }
BENCHMARK(__)->Name("----- Convert to int '1234567' ---------")->Repetitions(1); BENCHMARK(__)->Name("----- Convert to int '1234567' ---------")->Repetitions(1);
BENCHMARK_CAPTURE(ToIntStr10, , std::string{"123456789"}, 123456789) ->Name("std::string s = \"123456789\"; int res = std::strtol(s.c_str(), 0, 10);"); BENCHMARK_CAPTURE(ToIntStr10, , std::string{"123456789"}, 123456789) ->Name("std::string s = \"123456789\"; int res = std::strtol(s.c_str(), 0, 10);");
BENCHMARK_CAPTURE(ToIntFromChars10, , std::string_view{"123456789"}, 123456789) ->Name("std::string_view s = \"123456789\"; std::from_chars(s.data(), s.data() + s.size(), res, 10);"); BENCHMARK_CAPTURE(ToIntFromChars10, , std::string_view{"123456789"}, 123456789) ->Name("std::string_view s = \"123456789\"; std::from_chars(s.data(), s.data() + s.size(), res, 10);");
@ -759,12 +972,17 @@ void ToDoubleStr(benchmark::State& state, const std::string& s, double c) {
} }
} }
template<typename K = char>
void ToDoubleFromChars(benchmark::State& state, const std::string_view& s, double c) { void ToDoubleFromChars(benchmark::State& state, const std::string_view& s, double c) {
for (auto _: state) { for (auto _: state) {
double res = 0; double res = 0;
if (std::from_chars(s.data(), s.data() + s.size(), res).ec != std::errc{}) { if constexpr (requires { std::from_chars(std::declval<K*>(), std::declval<K*>(), std::declval<double&>()); }) {
if (std::from_chars((const K*)s.data(), (const K*)s.data() + s.size(), res).ec != std::errc{}) {
state.SkipWithError("not equal"); state.SkipWithError("not equal");
} }
} else {
state.SkipWithError("not implemented");
}
#ifdef CHECK_RESULT #ifdef CHECK_RESULT
if (res != c) { if (res != c) {
state.SkipWithError("not equal"); state.SkipWithError("not equal");
@ -1758,7 +1976,7 @@ void ReplaceAllLongerSimStringExpr(benchmark::State& state) {
lstringa<2048> big_source{Count, source}, big_sample{Count, sample}; lstringa<2048> big_source{Count, source}, big_sample{Count, sample};
for (auto _: state) { for (auto _: state) {
stringa result = e_repl(big_source.to_str(), "bb", "----"); stringa result = e_repl(big_source, "bb", "----");
#ifdef CHECK_RESULT #ifdef CHECK_RESULT
if (result.to_str() != big_sample) { if (result.to_str() != big_sample) {
@ -2409,10 +2627,64 @@ BENCHMARK(BuildFuncNameStream) ->Name("Build func full name std::stream;
BENCHMARK(BuildFuncNameSimStr) ->Name("Build func full name stringa;"); BENCHMARK(BuildFuncNameSimStr) ->Name("Build func full name stringa;");
BENCHMARK(BuildFuncNameSimStr1) ->Name("Build func full name stringa 1;"); BENCHMARK(BuildFuncNameSimStr1) ->Name("Build func full name stringa 1;");
void UpperCaseStd(benchmark::State& state) {
static const auto& loc = std::locale("en_US.utf8");
for (auto _: state) {
std::wstring test = L"TestПриветTest";
benchmark::DoNotOptimize(test);
std::transform(test.begin(), test.end(), test.begin(), [](wchar_t s) {
return std::toupper(s, loc);
});
benchmark::DoNotOptimize(test);
#ifdef CHECK_RESULT
if (test != L"TESTПРИВЕТTEST") {
state.SkipWithError("Bad upper case");
}
#endif
}
}
void UpperCaseSim(benchmark::State& state) {
for (auto _: state) {
lstringw<15> test = L"TestПриветTest";
benchmark::DoNotOptimize(test);
test.upper();
benchmark::DoNotOptimize(test);
#ifdef CHECK_RESULT
if (test != L"TESTПРИВЕТTEST") {
state.SkipWithError("Bad upper case");
}
#endif
}
}
BENCHMARK(__)->Name("----- Make Upper ---------")->Repetitions(1);
BENCHMARK(UpperCaseStd)->Name("To upper case std::wstring");
BENCHMARK(UpperCaseSim)->Name("To upper case lstringw<15>");
int main(int argc, char** argv) { int main(int argc, char** argv) {
std::cout << "Benchmarks of simstr, version " SIMSTR_VERSION << "\n" std::cout << "Benchmarks of simstr, version " SIMSTR_VERSION << "\n"
<< "Sources: https://github.com/orefkov/simstr\n" << "Sources: https://github.com/orefkov/simstr\n"
<< "Results: https://orefkov.github.io/simstr/results.html\n" << std::endl; << "Results: https://orefkov.github.io/simstr/results.html\n"
<< "Compiler " << CXX_COMPILER_ID << " " << CXX_COMPILER_VERSION
#ifdef _LIBCPP_VERSION
<< ", use libc++"
#endif
<< std::endl;
#ifdef EMSCRIPTEN
EM_ASM({ console.log(navigator.userAgent); });
if (argc == 2 && stra{argv[1]} == "-sync") {
do_sync = true;
argc = 1;
}
#endif
char arg1[] = "--benchmark_repetitions=4", arg2[] = "--benchmark_report_aggregates_only=true"; char arg1[] = "--benchmark_repetitions=4", arg2[] = "--benchmark_report_aggregates_only=true";
char* my_params[] = {argv[0], arg1, arg2}; char* my_params[] = {argv[0], arg1, arg2};
if (argc < 2) { if (argc < 2) {
@ -2424,5 +2696,10 @@ int main(int argc, char** argv) {
return 1; return 1;
::benchmark::RunSpecifiedBenchmarks(); ::benchmark::RunSpecifiedBenchmarks();
::benchmark::Shutdown(); ::benchmark::Shutdown();
#ifdef EMSCRIPTEN
std::cout << "Done!\n";
EM_ASM({ on_done(); });
#endif
return 0; return 0;
} }

View File

@ -8,12 +8,22 @@ holds 23 characters in SSO instead of 15, so
at the end of the std::string test, memory has to be allocated, at the end of the std::string test, memory has to be allocated,
while in stringa , the entire test is included in SSO. while in stringa , the entire test is included in SSO.
- Concat email stringzilla concat
В stringzilla тоже есть конкатенация строковыми выражениями, но не
так удобна и развита, как в simstr.
Stringzilla also has concatenation by expression templates,
but it's not as convenient or advanced as simstr.
- Find concat three simstr - Find concat three simstr
Если результат конкатенации меньше 207 символов, Если результат конкатенации меньше 207 символов,
он собирается в буфере на стеке, без аллокации и деалокации. он собирается в буфере на стеке, без аллокации и деалокации.
If the concatenation result is less than 207 characters, If the concatenation result is less than 207 characters,
it is collected in a stack-based buffer, without allocation or deallocation. it is collected in a stack-based buffer, without allocation or deallocation.
- sz::string::find;
stringzilla более заточена на поиск больших строк в больших строках.
stringzilla is more focused on searching large strings within large strings.
- Concat with replace exp - Concat with replace exp
В simstr строковое выражение для замены подстрок В simstr строковое выражение для замены подстрок
есть "из коробки". есть "из коробки".
@ -147,7 +157,7 @@ However, Windows and Linux are clearly in different weight classes.
- std::string copy{str_with_len_N};/16 - std::string copy{str_with_len_N};/16
Явно виден скачок, где заканчивается SSO и начинается аллокация. Явно виден скачок, где заканчивается SSO и начинается аллокация.
Обратите внимание, что WASM - 32-битный, и там размер Обратите внимание, что WASM - 32-битный, и там размер
SSO у std::string меньше, насколько я помню, 11 символов + 0. SSO у std::string меньше, 10 символов + 0.
The jump where SSO ends and allocation begins is clearly visible. 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 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. smaller, as far as I remember: 11 characters + 0.

View File

@ -0,0 +1,247 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>SimStr Benchmarks</title>
<style>
body {
margin: auto;
font-size: 12pt;
}
h2 {
text-align: center;
}
table {
border: 1px black;
text-align: right;
margin: auto;
}
table tr:nth-child(odd) {
background: #fff;
}
table tr:nth-child(even) {
background: #f2f2f2;
}
table th {
text-align: center;
}
.tooltip a:any-link {
text-decoration: none;
}
.tooltip a:link {
color: black;
}
.tooltip a:visited {
color: black;
}
.tooltip a:hover {
text-decoration: underline;
}
table tr:hover td {
background-color: lightcyan;
}
div.header {
max-width: 960px;
margin: 0 auto;
}
canvas {
max-width: 2000px;
margin: 0 auto;
}
.benchset {
max-width: 960px;
padding: 1px;
margin: 5px auto;
border-radius: 3px;
background-color: gainsboro;
}
.benchset h4 {
text-align: left;
padding-left: 20px;
}
.test_platforms {
margin: auto;
}
.test_platforms ul {
display: table;
}
.test_platforms li {
display: table-row;
}
.test_platforms li:before {
content: "\2022";
padding-right: 0.5em;
}
.test_platforms span.tooltip {
padding-left: 20px;
display: table-cell;
}
span.platform {
display: table-cell;
}
.info {
border-radius: 3px;
border: solid 1px lightgrey;
background-color: beige;
color: brown;
}
.code {
font-family: 'Cascadia Code', Consolas, 'Courier New', Courier, monospace;
}
.tooltip {
position: relative;
display: inline-block;
}
.tooltip .tooltiptext {
visibility: hidden;
background-color: beige;
color: black;
text-align: left;
border-radius: 6px;
padding: 15px;
position: absolute;
z-index: 1;
top: 35px;
right: 0;
white-space: pre;
border: 1px solid darkgray;
box-shadow: 4px 4px 8px 0px rgba(34, 60, 80, 0.2);
transform: translate(50%);
}
.tooltip:hover .tooltiptext {
visibility: visible;
}
h4 {
text-align: center;
}
#output {
position: absolute;
left: 10px;
top: 50px;
right: 10px;
bottom: 60%;
margin: 0 auto;
border: 0;
display: block;
background-color: black;
color: white;
font-family: 'Cascadia Code', 'Consolas', 'Lucida Console', Monaco, monospace;
outline: none;
}
#results {
position: absolute;
left: 10px;
top: 42%;
right: 10px;
bottom: 10px;
margin: 0 auto;
border: 0;
overflow: auto;
}
div.head {
text-align: center;
}
div.head h3 {
margin: 0;
}
div.head span {
margin: 0;
}
</style>
</head>
<body>
<div class="head">
<h3>SimStr 1.8.1 Benchmark</h3>
<span><a href="https://orefkov.github.io/simstr/results.html" target="blank">All results</a></span>
<span><a href="https://github.com/orefkov/simstr/blob/main/bench/bench_str.cpp" target="blank">Sources for
benchmarks</a></span>
<textarea id="output"></textarea>
</div>
<div id="results"></div>
<script type='text/javascript'>
var outputElement = document.getElementById('output');
var resultEl = document.getElementById('results');
if (outputElement) outputElement.value = ''; // clear browser cache
var Module = {
print(...args) {
console.log(...args);
try {
var text = args.join(' ')
var m = text.match(/^--+ +(.+?) +-+\/repeats/);
if (m) {
add_benchset(m[1]);
} else {
var im = text.indexOf("_mean ");
if (im != -1) {
add_benchmark(text.substr(0, im), text.match(/ ([^ ]+?) ns/)[1]);
}
}
outputElement.value += text + "\n";
outputElement.scrollTop = outputElement.scrollHeight;
} catch (e) {
console.error(e);
}
}
};
var sync = new URLSearchParams(window.location.search).get('sync');
if (sync)
Module.arguments = ["-sync"];
function on_done() {
resultEl.scrollTop = 0;
}
function escapeHtml(unsafe) {
return unsafe
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#039;");
}
function add_benchset(bs_name) {
resultEl.insertAdjacentHTML("beforeend", `<div class="benchset"><h4>${escapeHtml(bs_name)}</h4><table width="100%"><thead><tr><th>Benchmark name</th><th width="8%">Time(ns)</th></tr></thead><tbody></tbody></table></div>`);
resultEl.scrollTop = resultEl.scrollHeight;
}
function add_benchmark(name, result) {
resultEl.querySelector("div:last-child table tbody").insertAdjacentHTML("beforeend", `<tr><td>${escapeHtml(name)}</td><td>${result}</td></tr>`);
resultEl.scrollTop = resultEl.scrollHeight;
}
</script>
{{{ SCRIPT }}}
</body>
</html>

View File

@ -38,7 +38,7 @@ struct result_info {
} }
// Текущее положение поставим сразу за cpuinfo и откинем завершающие переводы строк // Текущее положение поставим сразу за cpuinfo и откинем завершающие переводы строк
// We will put the current position immediately after cpuinfo and discard the final line feeds // We will put the current position immediately after cpuinfo and discard the final line feeds
current_text_ = current_text_(cpu_info_.end() - current_text_.begin() + 1).trimmed_right("\n"); current_text_ = current_text_.get(cpu_info_.end() - current_text_.begin() + 1, to_end).trimmed_right("\n");
} }
}; };
@ -96,11 +96,11 @@ results_vector get_results_infos() {
// В начале имени файла может идти число и дефис, для сортировки, уберём их // В начале имени файла может идти число и дефис, для сортировки, уберём их
// At the beginning of the file name there can be a number and a hyphen, for sorting, remove them // At the beginning of the file name there can be a number and a hyphen, for sorting, remove them
if (auto delimiter = fileName.find('-'); delimiter + 1 > 1) { if (auto delimiter = fileName.find('-'); delimiter + 1 > 1) {
if (fileName(0, delimiter).to_int<unsigned, false, 10, false, false>().ec == IntConvertResult::Success) { if (fileName.prefix(delimiter).to_int<unsigned, false, 10, false, false>().ec == IntConvertResult::Success) {
fileName.remove_prefix(delimiter + 1); fileName.remove_prefix(delimiter + 1);
} }
} }
results.emplace_back(get_file_content(lstringa<128>{dirForResults + f}), fileName(0, -suffix.length())); results.emplace_back(get_file_content(lstringa<128>{dirForResults + f}), fileName.get(0, from_end(suffix.length())));
} }
} }
return results; return results;
@ -117,7 +117,7 @@ void write_platforms_cpu(out_t& out, const results_vector& results) {
for (const auto& r : results) { for (const auto& r : results) {
size_t rp = r.cpu_info_.find('(') + 1, lp = r.cpu_info_.find(')', rp); size_t rp = r.cpu_info_.find('(') + 1, lp = r.cpu_info_.find(')', rp);
ssa shortCpuInfo = r.cpu_info_.from_to(rp, lp); ssa shortCpuInfo = r.cpu_info_.from_to(rp, lp);
ssa cpuInfo = r.cpu_info_(lp + 2); ssa cpuInfo = r.cpu_info_.get(lp + 2, to_end);
out += e_subst(R"--( out += e_subst(R"--(
<li><span class="platform">{}</span><span class="tooltip">{}<span class="tooltiptext">{}</span></span>&nbsp;Include in charts: <input type="checkbox" id="pl{}" checked onchange="buildCharts()"/></li>)--", <li><span class="platform">{}</span><span class="tooltip">{}<span class="tooltiptext">{}</span></span>&nbsp;Include in charts: <input type="checkbox" id="pl{}" checked onchange="buildCharts()"/></li>)--",
r.platform_, shortCpuInfo, cpuInfo, counter++); r.platform_, shortCpuInfo, cpuInfo, counter++);
@ -167,7 +167,7 @@ ssa extract_name_result(ssa line, ssa& result) {
line.len = ns; line.len = ns;
if (inNs) { if (inNs) {
size_t end = line.find_last(' '); size_t end = line.find_last(' ');
result = line(end + 1); result = line.get(end + 1, to_end);
if (auto rp = line.find("/repeats"); rp != str::npos) { if (auto rp = line.find("/repeats"); rp != str::npos) {
line.len = rp; line.len = rp;
} else { } else {
@ -182,16 +182,16 @@ ssa extract_name_result(ssa line, ssa& result) {
ssa extract_comment(ssa commentsText, ssa benchmarkName) { ssa extract_comment(ssa commentsText, ssa benchmarkName) {
size_t idx = commentsText.find_end(lstringa<120>{"- " + benchmarkName + "\n"}); size_t idx = commentsText.find_end(lstringa<120>{"- " + benchmarkName + "\n"});
if (idx != str::npos) { if (idx != str::npos) {
if (commentsText[idx] != '\n' && commentsText(idx, 2) != "- ") { if (commentsText[idx] != '\n' && commentsText.get(idx, 2) != "- ") {
return commentsText.from_to(idx, commentsText.find("\n\n", idx)); return commentsText.from_to(idx, commentsText.find("\n\n", idx));
} }
} }
return stra::empty_str; return stra::empty_str;
} }
void write_one_result(out_t& out, ssa result, ssa line, auto& script_text, bool last) { void write_one_result(out_t& out, ssa result, ssa line, auto& script_text, char delim) {
out += "<td class=\"benchmarkresult\">" + result + "</td>"; out += "<td class=\"benchmarkresult\">" + result + "</td>";
script_text += e_choice(result[0] == 'N', "NaN", result) + e_choice(last, "]", ","); script_text += e_choice(result[0] == 'N', "NaN", result) + delim;
} }
std::pair<ssa, size_t> extract_source_for_benchmark(ssa benchName, ssa sourceText) { std::pair<ssa, size_t> extract_source_for_benchmark(ssa benchName, ssa sourceText) {
@ -206,7 +206,7 @@ std::pair<ssa, size_t> extract_source_for_benchmark(ssa benchName, ssa sourceTex
}(); }();
size_t delim = benchName.find_last('/'); size_t delim = benchName.find_last('/');
if (delim != str::npos && benchName(delim + 1).to_int<unsigned, false, 10, false, false>().ec == IntConvertResult::Success) { if (delim != str::npos && benchName.get(delim + 1, to_end).to_int<unsigned, false, 10, false, false>().ec == IntConvertResult::Success) {
benchName.len = delim; benchName.len = delim;
} }
auto [it, not_exist] = textes.try_emplace(benchName, stringa{}, 0); auto [it, not_exist] = textes.try_emplace(benchName, stringa{}, 0);
@ -218,7 +218,7 @@ std::pair<ssa, size_t> extract_source_for_benchmark(ssa benchName, ssa sourceTex
std::cerr << "Can not found benchmark function name for " << benchName << std::endl; std::cerr << "Can not found benchmark function name for " << benchName << std::endl;
return {stra::empty_str, 0}; return {stra::empty_str, 0};
} }
start = sourceText(0, start).find('(', sourceText.find_last('\n', start - 1)); start = sourceText.prefix(start).find('(', sourceText.find_last('\n', start - 1));
if (start == str::npos) { if (start == str::npos) {
std::cerr << "Can not found benchmark function name for " << benchName << std::endl; std::cerr << "Can not found benchmark function name for " << benchName << std::endl;
return {stra::empty_str, 0}; return {stra::empty_str, 0};
@ -237,7 +237,7 @@ std::pair<ssa, size_t> extract_source_for_benchmark(ssa benchName, ssa sourceTex
} }
start = sourceText.find_last('\n', start); start = sourceText.find_last('\n', start);
size_t templ_start = sourceText.find_last('\n', start) + 1; size_t templ_start = sourceText.find_last('\n', start) + 1;
if (sourceText(templ_start).starts_with("template")) { if (sourceText.get(templ_start, to_end).starts_with("template")) {
start = templ_start; start = templ_start;
} else { } else {
start++; start++;
@ -261,7 +261,7 @@ std::pair<ssa, size_t> extract_source_for_benchmark(ssa benchName, ssa sourceTex
throw std::runtime_error{"Not found end of func"}; throw std::runtime_error{"Not found end of func"};
} }
lstringa<2048> text{sourceText.from_to(beginLine, end + indent.length() + 1), indent, "\n"}; lstringa<2048> text{sourceText.from_to(beginLine, end + indent.length() + 1), indent, "\n"};
func_it->second.first = repl_html_symbols(text(1)); func_it->second.first = repl_html_symbols(text.get(1, to_end));
} else { } else {
end = sourceText.find("\n}\n", start); end = sourceText.find("\n}\n", start);
func_it->second.first = repl_html_symbols(sourceText.from_to(start, end + 2)); func_it->second.first = repl_html_symbols(sourceText.from_to(start, end + 2));
@ -274,6 +274,12 @@ std::pair<ssa, size_t> extract_source_for_benchmark(ssa benchName, ssa sourceTex
} }
void write_benchmarks(out_t& out, const results_vector& results, ssa sourceText, ssa commentsText) { void write_benchmarks(out_t& out, const results_vector& results, ssa sourceText, ssa commentsText) {
ssa releaseVersion = sourceText.get(sourceText.find_end("\n * ver. "), to_end).until("\n").trimmed();
if (!releaseVersion) {
std::cerr << "Not found release version in sources" << std::endl;
throw std::runtime_error{"Not found release version in sources"};
}
std::vector<Splitter<u8s>> splitters; std::vector<Splitter<u8s>> splitters;
splitters.reserve(results.size()); splitters.reserve(results.size());
@ -286,19 +292,19 @@ void write_benchmarks(out_t& out, const results_vector& results, ssa sourceText,
while(!splitters[0].is_done()) { while(!splitters[0].is_done()) {
ssa line = splitters[0].next(), benchName, result; ssa line = splitters[0].next(), benchName, result;
if (auto rm = line.find("_mean"); rm != str::npos) { if (auto rm = line.find("_mean"); rm != str::npos) {
benchName = extract_name_result(line, result)(0, rm); benchName = extract_name_result(line, result).prefix(rm);
auto [source, line_num] = extract_source_for_benchmark(benchName, sourceText); auto [source, line_num] = extract_source_for_benchmark(benchName, sourceText);
auto comment = extract_comment(commentsText, benchName); auto comment = extract_comment(commentsText, benchName);
// Нужно вывести название бенча и коммент // Нужно вывести название бенча и коммент
// Need to display title and comment // Need to display title and comment
out += "\n<tr><td class=\"benchmarkname\"><span class=\"tooltip\"><a target=\"blank\" href=\"https://github.com/orefkov/simstr/blob/main/bench/bench_str.cpp#L"_ss + out += "\n<tr><td class=\"benchmarkname\"><span class=\"tooltip\"><a target=\"blank\" href=\"https://github.com/orefkov/simstr/blob/rel"
line_num + "\">" + repl_html_symbols(benchName) + + releaseVersion + "/bench/bench_str.cpp#L" + line_num + "\">" + repl_html_symbols(benchName) +
"</a><span class=\"tooltiptext code\">" + "</a><span class=\"tooltiptext code\">" +
source + "</span></span></td><td>" + source + "</span></span></td><td>" +
e_if(!comment.is_empty(), "<span class=\"tooltip info\">&nbsp;>>&nbsp;<span class=\"tooltiptext\">" + comment + "</span></span>") + e_if(!comment.is_empty(), "<span class=\"tooltip info\">&nbsp;>>&nbsp;<span class=\"tooltiptext\">" + comment + "</span></span>") +
"</td>"; "</td>";
script_text += e_if(needCommaForTests, "},") + "\n{name:'" + e_repl(benchName.to_str(), "'", "\\'") + "',data:["; script_text += e_if(needCommaForTests, "},") + "\n{name:'" + e_repl(benchName, "'", "\\'") + "',data:[";
write_one_result(out, result, line, script_text, result.size() == 1); write_one_result(out, result, line, script_text, result.size() == 1 ? ']' : ',');
for (unsigned idx = 1; idx < results.size(); idx++) { for (unsigned idx = 1; idx < results.size(); idx++) {
if (splitters[idx].is_done()) { if (splitters[idx].is_done()) {
@ -306,19 +312,19 @@ void write_benchmarks(out_t& out, const results_vector& results, ssa sourceText,
throw std::runtime_error{"Not expected end of file"}; throw std::runtime_error{"Not expected end of file"};
} }
line = splitters[idx].next(); line = splitters[idx].next();
ssa rbench_name = extract_name_result(line, result)(0, rm); ssa rbench_name = extract_name_result(line, result).prefix(rm);
if (rbench_name != benchName) { if (rbench_name != benchName) {
while (line.find("_mean") == str::npos && !splitters[idx].is_done()) { while (line.find("_mean") == str::npos && !splitters[idx].is_done()) {
line = splitters[idx].next(); line = splitters[idx].next();
} }
rbench_name = extract_name_result(line, result)(0, rm); rbench_name = extract_name_result(line, result).prefix(rm);
if (rbench_name != benchName) { if (rbench_name != benchName) {
std::cerr << "In results for " << results[idx].platform_ << " benchmark '" << rbench_name std::cerr << "In results for " << results[idx].platform_ << " benchmark '" << rbench_name
<< "' does not match with other results" << std::endl; << "' does not match with other results" << std::endl;
result = stra::empty_str; result = stra::empty_str;
} }
} }
write_one_result(out, result, line, script_text, idx == results.size() - 1); write_one_result(out, result, line, script_text, idx == results.size() - 1 ? ']' : ',');
} }
out += "</tr>"; out += "</tr>";
needCommaForTests = true; needCommaForTests = true;
@ -336,7 +342,7 @@ void write_benchmarks(out_t& out, const results_vector& results, ssa sourceText,
write_benchset_header(out, results, benchName, ++benchSetId); write_benchset_header(out, results, benchName, ++benchSetId);
needFooter = true; needFooter = true;
needCommaForTests = false; needCommaForTests = false;
script_text = "bench_sets['" + e_repl(benchName.to_str(), "'", "\\'") + "'] = {id:'bs" + benchSetId +"', tests:["; script_text = "bench_sets['" + e_repl(benchName, "'", "\\'") + "'] = {id:'bs" + benchSetId +"', tests:[";
} }
// Эти строки надо пропустить во всех файлах // Эти строки надо пропустить во всех файлах
// These lines must be skipped in all files // These lines must be skipped in all files
@ -346,9 +352,6 @@ void write_benchmarks(out_t& out, const results_vector& results, ssa sourceText,
throw std::runtime_error{"Not expected end of file"}; throw std::runtime_error{"Not expected end of file"};
} }
line = splitters[idx].next(); line = splitters[idx].next();
if (line.starts_with("std::unordered_map<std::string, size_t> emplace & find std::string_view;_cv")) {
int t = 1;
}
} }
} }
if (needFooter) { if (needFooter) {

File diff suppressed because it is too large Load Diff

View File

@ -1,931 +0,0 @@
Benchmarks of simstr, version 1.6.4
Sources: https://github.com/orefkov/simstr
Results: https://orefkov.github.io/simstr/results.html
2026-02-04T16:52:12+03:00
Running ./benchStr
Run on (32 X 2494.22 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x16)
L1 Instruction 32 KiB (x16)
L2 Unified 256 KiB (x16)
L3 Unified 40960 KiB (x1)
Load Average: 0.53, 0.18, 0.32
***WARNING*** ASLR is enabled, the results may have unreproducible noise in them.
--------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------------------------------------------------------------------------------------------
----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and number by std to std::string_mean 226 ns 226 ns 4
Concat std::string and number by std to std::string_median 216 ns 216 ns 4
Concat std::string and number by std to std::string_stddev 20.8 ns 20.8 ns 4
Concat std::string and number by std to std::string_cv 9.21 % 9.21 % 4
Concat std::string and number by StrExpr to std::string_mean 105 ns 105 ns 4
Concat std::string and number by StrExpr to std::string_median 104 ns 104 ns 4
Concat std::string and number by StrExpr to std::string_stddev 1.33 ns 1.33 ns 4
Concat std::string and number by StrExpr to std::string_cv 1.27 % 1.27 % 4
Concat stringa and number by StrExpr to simstr::stringa_mean 62.8 ns 62.8 ns 4
Concat stringa and number by StrExpr to simstr::stringa_median 62.9 ns 62.9 ns 4
Concat stringa and number by StrExpr to simstr::stringa_stddev 0.596 ns 0.596 ns 4
Concat stringa and number by StrExpr to simstr::stringa_cv 0.95 % 0.95 % 4
Concat stringa and number by e_concat to simstr::stringa_mean 70.6 ns 70.6 ns 4
Concat stringa and number by e_concat to simstr::stringa_median 67.4 ns 67.4 ns 4
Concat stringa and number by e_concat to simstr::stringa_stddev 7.97 ns 7.97 ns 4
Concat stringa and number by e_concat to simstr::stringa_cv 11.30 % 11.30 % 4
----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and format hex number and literal to std::string_mean 681 ns 681 ns 4
Concat std::string and format hex number and literal to std::string_median 684 ns 684 ns 4
Concat std::string and format hex number and literal to std::string_stddev 6.51 ns 6.51 ns 4
Concat std::string and format hex number and literal to std::string_cv 0.96 % 0.96 % 4
std::format std::string and hex number by literal to std::string_mean 863 ns 863 ns 4
std::format std::string and hex number by literal to std::string_median 857 ns 857 ns 4
std::format std::string and hex number by literal to std::string_stddev 22.4 ns 22.4 ns 4
std::format std::string and hex number by literal to std::string_cv 2.60 % 2.60 % 4
Concat std::string and std::to_chars and string to std::string_mean 199 ns 199 ns 4
Concat std::string and std::to_chars and string to std::string_median 200 ns 200 ns 4
Concat std::string and std::to_chars and string to std::string_stddev 3.35 ns 3.35 ns 4
Concat std::string and std::to_chars and string to std::string_cv 1.68 % 1.68 % 4
Concat std::string and hex number and literal by StrExpr to std::string_mean 133 ns 133 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_median 132 ns 132 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_stddev 2.32 ns 2.32 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_cv 1.75 % 1.75 % 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 122 ns 122 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 123 ns 123 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 5.02 ns 5.02 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 4.13 % 4.13 % 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 129 ns 129 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_median 129 ns 129 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 7.79 ns 7.79 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 6.04 % 6.04 % 4
Subst stringa and hex number by e_subst literal to simstr::stringa_mean 180 ns 180 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_median 180 ns 180 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 4.42 ns 4.42 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_cv 2.45 % 2.45 % 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_mean 312 ns 312 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_median 312 ns 312 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_stddev 3.75 ns 3.75 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_cv 1.20 % 1.20 % 4
----- format/vformat and subst/vsubst octal number ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
"art "_ss + i / 0x8a010_fmt + " end"_mean 99.1 ns 99.1 ns 4
"art "_ss + i / 0x8a010_fmt + " end"_median 96.0 ns 96.0 ns 4
"art "_ss + i / 0x8a010_fmt + " end"_stddev 6.88 ns 6.88 ns 4
"art "_ss + i / 0x8a010_fmt + " end"_cv 6.94 % 6.94 % 4
e_subst("art {} end", i / 0x8a010_fmt)_mean 159 ns 159 ns 4
e_subst("art {} end", i / 0x8a010_fmt)_median 158 ns 158 ns 4
e_subst("art {} end", i / 0x8a010_fmt)_stddev 2.47 ns 2.47 ns 4
e_subst("art {} end", i / 0x8a010_fmt)_cv 1.56 % 1.56 % 4
e_vsubst(pattern, i / 0x8a010_fmt)_mean 347 ns 347 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_median 344 ns 344 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_stddev 10.5 ns 10.5 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_cv 3.04 % 3.04 % 4
std::format("art {:#010o} end", i)_mean 988 ns 988 ns 4
std::format("art {:#010o} end", i)_median 989 ns 989 ns 4
std::format("art {:#010o} end", i)_stddev 7.46 ns 7.46 ns 4
std::format("art {:#010o} end", i)_cv 0.75 % 0.75 % 4
std::vformat(pattern, std::make_format_args(i))_mean 1046 ns 1046 ns 4
std::vformat(pattern, std::make_format_args(i))_median 1046 ns 1046 ns 4
std::vformat(pattern, std::make_format_args(i))_stddev 52.1 ns 52.1 ns 4
std::vformat(pattern, std::make_format_args(i))_cv 4.98 % 4.98 % 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_mean 2020 ns 2020 ns 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_median 2021 ns 2021 ns 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_stddev 50.6 ns 50.6 ns 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_cv 2.50 % 2.50 % 4
----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string by std to std::string_mean 45.4 ns 45.4 ns 4
Concat std::string by std to std::string_median 44.2 ns 44.2 ns 4
Concat std::string by std to std::string_stddev 2.92 ns 2.92 ns 4
Concat std::string by std to std::string_cv 6.42 % 6.42 % 4
Concat std::string by StrExpr to std::string_mean 33.7 ns 33.7 ns 4
Concat std::string by StrExpr to std::string_median 34.3 ns 34.3 ns 4
Concat std::string by StrExpr to std::string_stddev 1.48 ns 1.48 ns 4
Concat std::string by StrExpr to std::string_cv 4.38 % 4.38 % 4
Concat stringa by StrExpr to stringa_mean 28.7 ns 28.7 ns 4
Concat stringa by StrExpr to stringa_median 28.5 ns 28.5 ns 4
Concat stringa by StrExpr to stringa_stddev 0.925 ns 0.925 ns 4
Concat stringa by StrExpr to stringa_cv 3.23 % 3.23 % 4
----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Find concat three std::string_mean 121 ns 121 ns 4
Find concat three std::string_median 117 ns 117 ns 4
Find concat three std::string_stddev 10.7 ns 10.7 ns 4
Find concat three std::string_cv 8.88 % 8.88 % 4
Find concat three strexpr_mean 50.8 ns 50.8 ns 4
Find concat three strexpr_median 50.6 ns 50.6 ns 4
Find concat three strexpr_stddev 0.766 ns 0.766 ns 4
Find concat three strexpr_cv 1.51 % 1.51 % 4
Find concat three simstr_mean 51.6 ns 51.6 ns 4
Find concat three simstr_median 51.3 ns 51.3 ns 4
Find concat three simstr_stddev 0.491 ns 0.491 ns 4
Find concat three simstr_cv 0.95 % 0.95 % 4
----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
BuildTypeNameStr 0/0_mean 7.08 ns 7.08 ns 4
BuildTypeNameStr 0/0_median 7.08 ns 7.08 ns 4
BuildTypeNameStr 0/0_stddev 0.139 ns 0.139 ns 4
BuildTypeNameStr 0/0_cv 1.96 % 1.96 % 4
BuildTypeNameExp 0/0_mean 6.67 ns 6.67 ns 4
BuildTypeNameExp 0/0_median 6.61 ns 6.61 ns 4
BuildTypeNameExp 0/0_stddev 0.199 ns 0.199 ns 4
BuildTypeNameExp 0/0_cv 2.99 % 2.99 % 4
BuildTypeNameSim 0/0_mean 5.11 ns 5.11 ns 4
BuildTypeNameSim 0/0_median 4.96 ns 4.96 ns 4
BuildTypeNameSim 0/0_stddev 0.443 ns 0.443 ns 4
BuildTypeNameSim 0/0_cv 8.68 % 8.68 % 4
BuildTypeNameStr 10/10_mean 63.1 ns 63.1 ns 4
BuildTypeNameStr 10/10_median 63.3 ns 63.3 ns 4
BuildTypeNameStr 10/10_stddev 4.16 ns 4.16 ns 4
BuildTypeNameStr 10/10_cv 6.59 % 6.59 % 4
BuildTypeNameExp 10/10_mean 31.0 ns 31.0 ns 4
BuildTypeNameExp 10/10_median 30.1 ns 30.1 ns 4
BuildTypeNameExp 10/10_stddev 2.10 ns 2.10 ns 4
BuildTypeNameExp 10/10_cv 6.79 % 6.79 % 4
BuildTypeNameSim 10/10_mean 22.7 ns 22.7 ns 4
BuildTypeNameSim 10/10_median 22.5 ns 22.5 ns 4
BuildTypeNameSim 10/10_stddev 0.855 ns 0.855 ns 4
BuildTypeNameSim 10/10_cv 3.77 % 3.77 % 4
----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat with replace str_mean 211 ns 211 ns 4
Concat with replace str_median 213 ns 213 ns 4
Concat with replace str_stddev 14.1 ns 14.1 ns 4
Concat with replace str_cv 6.69 % 6.69 % 4
Concat with replace exp_mean 163 ns 163 ns 4
Concat with replace exp_median 154 ns 154 ns 4
Concat with replace exp_stddev 30.1 ns 30.1 ns 4
Concat with replace exp_cv 18.50 % 18.50 % 4
----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e;_mean 1.13 ns 1.13 ns 4
std::string e;_median 1.11 ns 1.11 ns 4
std::string e;_stddev 0.047 ns 0.047 ns 4
std::string e;_cv 4.17 % 4.17 % 4
std::string_view e;_mean 0.369 ns 0.369 ns 4
std::string_view e;_median 0.368 ns 0.368 ns 4
std::string_view e;_stddev 0.012 ns 0.012 ns 4
std::string_view e;_cv 3.31 % 3.31 % 4
ssa e;_mean 0.363 ns 0.363 ns 4
ssa e;_median 0.361 ns 0.361 ns 4
ssa e;_stddev 0.004 ns 0.004 ns 4
ssa e;_cv 1.17 % 1.17 % 4
stringa e;_mean 0.758 ns 0.758 ns 4
stringa e;_median 0.750 ns 0.750 ns 4
stringa e;_stddev 0.033 ns 0.033 ns 4
stringa e;_cv 4.34 % 4.34 % 4
lstringa<20> e;_mean 1.13 ns 1.13 ns 4
lstringa<20> e;_median 1.13 ns 1.13 ns 4
lstringa<20> e;_stddev 0.023 ns 0.023 ns 4
lstringa<20> e;_cv 2.06 % 2.06 % 4
lstringa<40> e;_mean 1.13 ns 1.13 ns 4
lstringa<40> e;_median 1.13 ns 1.13 ns 4
lstringa<40> e;_stddev 0.011 ns 0.011 ns 4
lstringa<40> e;_cv 0.96 % 0.96 % 4
----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "Test text";_mean 1.83 ns 1.83 ns 4
std::string e = "Test text";_median 1.83 ns 1.83 ns 4
std::string e = "Test text";_stddev 0.021 ns 0.021 ns 4
std::string e = "Test text";_cv 1.13 % 1.13 % 4
std::string_view e = "Test text";_mean 0.735 ns 0.735 ns 4
std::string_view e = "Test text";_median 0.734 ns 0.734 ns 4
std::string_view e = "Test text";_stddev 0.006 ns 0.006 ns 4
std::string_view e = "Test text";_cv 0.77 % 0.77 % 4
ssa e = "Test text";_mean 0.392 ns 0.392 ns 4
ssa e = "Test text";_median 0.392 ns 0.392 ns 4
ssa e = "Test text";_stddev 0.020 ns 0.020 ns 4
ssa e = "Test text";_cv 5.00 % 5.00 % 4
stringa e = "Test text";_mean 1.21 ns 1.21 ns 4
stringa e = "Test text";_median 1.23 ns 1.23 ns 4
stringa e = "Test text";_stddev 0.049 ns 0.049 ns 4
stringa e = "Test text";_cv 4.06 % 4.06 % 4
lstringa<20> e = "Test text";_mean 2.03 ns 2.03 ns 4
lstringa<20> e = "Test text";_median 2.00 ns 2.00 ns 4
lstringa<20> e = "Test text";_stddev 0.120 ns 0.120 ns 4
lstringa<20> e = "Test text";_cv 5.92 % 5.92 % 4
lstringa<40> e = "Test text";_mean 1.84 ns 1.84 ns 4
lstringa<40> e = "Test text";_median 1.85 ns 1.85 ns 4
lstringa<40> e = "Test text";_stddev 0.032 ns 0.032 ns 4
lstringa<40> e = "Test text";_cv 1.71 % 1.71 % 4
----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890";_mean 18.9 ns 18.9 ns 4
std::string e = "123456789012345678901234567890";_median 18.8 ns 18.8 ns 4
std::string e = "123456789012345678901234567890";_stddev 0.352 ns 0.352 ns 4
std::string e = "123456789012345678901234567890";_cv 1.86 % 1.86 % 4
std::string_view e = "123456789012345678901234567890";_mean 0.733 ns 0.733 ns 4
std::string_view e = "123456789012345678901234567890";_median 0.733 ns 0.733 ns 4
std::string_view e = "123456789012345678901234567890";_stddev 0.006 ns 0.006 ns 4
std::string_view e = "123456789012345678901234567890";_cv 0.89 % 0.89 % 4
ssa e = "123456789012345678901234567890";_mean 0.368 ns 0.368 ns 4
ssa e = "123456789012345678901234567890";_median 0.368 ns 0.368 ns 4
ssa e = "123456789012345678901234567890";_stddev 0.007 ns 0.007 ns 4
ssa e = "123456789012345678901234567890";_cv 1.83 % 1.83 % 4
stringa e = "123456789012345678901234567890";_mean 1.10 ns 1.10 ns 4
stringa e = "123456789012345678901234567890";_median 1.10 ns 1.10 ns 4
stringa e = "123456789012345678901234567890";_stddev 0.019 ns 0.019 ns 4
stringa e = "123456789012345678901234567890";_cv 1.73 % 1.73 % 4
lstringa<20> e = "123456789012345678901234567890";_mean 20.2 ns 20.2 ns 4
lstringa<20> e = "123456789012345678901234567890";_median 20.2 ns 20.2 ns 4
lstringa<20> e = "123456789012345678901234567890";_stddev 0.360 ns 0.360 ns 4
lstringa<20> e = "123456789012345678901234567890";_cv 1.78 % 1.78 % 4
lstringa<40> e = "123456789012345678901234567890";_mean 2.56 ns 2.56 ns 4
lstringa<40> e = "123456789012345678901234567890";_median 2.55 ns 2.55 ns 4
lstringa<40> e = "123456789012345678901234567890";_stddev 0.045 ns 0.045 ns 4
lstringa<40> e = "123456789012345678901234567890";_cv 1.75 % 1.75 % 4
----- 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.38 ns 5.38 ns 4
std::string e = "Test text"; auto c{e};_median 5.39 ns 5.39 ns 4
std::string e = "Test text"; auto c{e};_stddev 0.035 ns 0.035 ns 4
std::string e = "Test text"; auto c{e};_cv 0.66 % 0.66 % 4
std::string_view e = "Test text"; auto c{e};_mean 0.375 ns 0.375 ns 4
std::string_view e = "Test text"; auto c{e};_median 0.374 ns 0.374 ns 4
std::string_view e = "Test text"; auto c{e};_stddev 0.008 ns 0.008 ns 4
std::string_view e = "Test text"; auto c{e};_cv 2.25 % 2.25 % 4
ssa e = "Test text"; auto c{e};_mean 0.364 ns 0.364 ns 4
ssa e = "Test text"; auto c{e};_median 0.364 ns 0.364 ns 4
ssa e = "Test text"; auto c{e};_stddev 0.004 ns 0.004 ns 4
ssa e = "Test text"; auto c{e};_cv 1.18 % 1.18 % 4
stringa e = "Test text"; auto c{e};_mean 1.09 ns 1.09 ns 4
stringa e = "Test text"; auto c{e};_median 1.09 ns 1.09 ns 4
stringa e = "Test text"; auto c{e};_stddev 0.019 ns 0.019 ns 4
stringa e = "Test text"; auto c{e};_cv 1.75 % 1.75 % 4
lstringa<20> e = "Test text"; auto c{e};_mean 4.57 ns 4.57 ns 4
lstringa<20> e = "Test text"; auto c{e};_median 4.54 ns 4.54 ns 4
lstringa<20> e = "Test text"; auto c{e};_stddev 0.149 ns 0.149 ns 4
lstringa<20> e = "Test text"; auto c{e};_cv 3.26 % 3.26 % 4
lstringa<40> e = "Test text"; auto c{e};_mean 4.52 ns 4.52 ns 4
lstringa<40> e = "Test text"; auto c{e};_median 4.44 ns 4.44 ns 4
lstringa<40> e = "Test text"; auto c{e};_stddev 0.188 ns 0.188 ns 4
lstringa<40> e = "Test text"; auto c{e};_cv 4.16 % 4.16 % 4
----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890"; auto c{e};_mean 18.8 ns 18.8 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_median 18.8 ns 18.8 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_stddev 0.224 ns 0.224 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_cv 1.19 % 1.19 % 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.731 ns 0.731 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.733 ns 0.733 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.009 ns 0.009 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.27 % 1.27 % 4
ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.368 ns 0.368 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_median 0.369 ns 0.369 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.004 ns 0.004 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_cv 1.08 % 1.08 % 4
stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.12 ns 1.12 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_median 1.11 ns 1.11 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.048 ns 0.048 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_cv 4.27 % 4.27 % 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 19.5 ns 19.5 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 19.6 ns 19.6 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.183 ns 0.183 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 0.94 % 0.94 % 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.50 ns 4.50 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 4.42 ns 4.42 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.184 ns 0.184 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 4.10 % 4.10 % 4
----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string::find;_mean 7.00 ns 7.00 ns 4
std::string::find;_median 6.76 ns 6.76 ns 4
std::string::find;_stddev 0.509 ns 0.509 ns 4
std::string::find;_cv 7.27 % 7.27 % 4
std::string_view::find;_mean 8.27 ns 8.27 ns 4
std::string_view::find;_median 8.39 ns 8.39 ns 4
std::string_view::find;_stddev 0.561 ns 0.561 ns 4
std::string_view::find;_cv 6.78 % 6.78 % 4
ssa::find;_mean 7.68 ns 7.68 ns 4
ssa::find;_median 7.78 ns 7.78 ns 4
ssa::find;_stddev 0.543 ns 0.543 ns 4
ssa::find;_cv 7.07 % 7.07 % 4
stringa::find;_mean 7.92 ns 7.92 ns 4
stringa::find;_median 8.07 ns 8.07 ns 4
stringa::find;_stddev 0.349 ns 0.349 ns 4
stringa::find;_cv 4.41 % 4.41 % 4
lstringa<20>::find;_mean 6.91 ns 6.91 ns 4
lstringa<20>::find;_median 7.00 ns 7.00 ns 4
lstringa<20>::find;_stddev 0.432 ns 0.432 ns 4
lstringa<20>::find;_cv 6.25 % 6.25 % 4
lstringa<40>::find;_mean 7.14 ns 7.14 ns 4
lstringa<40>::find;_median 7.16 ns 7.16 ns 4
lstringa<40>::find;_stddev 0.493 ns 0.493 ns 4
lstringa<40>::find;_cv 6.90 % 6.90 % 4
------- 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.34 ns 5.34 ns 4
std::string copy{str_with_len_N};/15_median 5.27 ns 5.27 ns 4
std::string copy{str_with_len_N};/15_stddev 0.450 ns 0.450 ns 4
std::string copy{str_with_len_N};/15_cv 8.42 % 8.42 % 4
std::string copy{str_with_len_N};/16_mean 24.6 ns 24.6 ns 4
std::string copy{str_with_len_N};/16_median 24.9 ns 24.9 ns 4
std::string copy{str_with_len_N};/16_stddev 1.50 ns 1.50 ns 4
std::string copy{str_with_len_N};/16_cv 6.10 % 6.10 % 4
std::string copy{str_with_len_N};/23_mean 26.2 ns 26.2 ns 4
std::string copy{str_with_len_N};/23_median 27.1 ns 27.1 ns 4
std::string copy{str_with_len_N};/23_stddev 2.02 ns 2.02 ns 4
std::string copy{str_with_len_N};/23_cv 7.71 % 7.71 % 4
std::string copy{str_with_len_N};/24_mean 28.6 ns 28.6 ns 4
std::string copy{str_with_len_N};/24_median 28.1 ns 28.1 ns 4
std::string copy{str_with_len_N};/24_stddev 2.58 ns 2.58 ns 4
std::string copy{str_with_len_N};/24_cv 9.02 % 9.02 % 4
std::string copy{str_with_len_N};/32_mean 25.5 ns 25.5 ns 4
std::string copy{str_with_len_N};/32_median 25.4 ns 25.4 ns 4
std::string copy{str_with_len_N};/32_stddev 1.77 ns 1.77 ns 4
std::string copy{str_with_len_N};/32_cv 6.93 % 6.93 % 4
std::string copy{str_with_len_N};/64_mean 23.9 ns 23.9 ns 4
std::string copy{str_with_len_N};/64_median 22.9 ns 22.9 ns 4
std::string copy{str_with_len_N};/64_stddev 2.16 ns 2.16 ns 4
std::string copy{str_with_len_N};/64_cv 9.05 % 9.05 % 4
std::string copy{str_with_len_N};/128_mean 25.4 ns 25.4 ns 4
std::string copy{str_with_len_N};/128_median 24.8 ns 24.8 ns 4
std::string copy{str_with_len_N};/128_stddev 1.30 ns 1.30 ns 4
std::string copy{str_with_len_N};/128_cv 5.15 % 5.15 % 4
std::string copy{str_with_len_N};/256_mean 25.1 ns 25.1 ns 4
std::string copy{str_with_len_N};/256_median 25.0 ns 25.0 ns 4
std::string copy{str_with_len_N};/256_stddev 0.433 ns 0.433 ns 4
std::string copy{str_with_len_N};/256_cv 1.73 % 1.73 % 4
std::string copy{str_with_len_N};/512_mean 28.7 ns 28.7 ns 4
std::string copy{str_with_len_N};/512_median 28.7 ns 28.7 ns 4
std::string copy{str_with_len_N};/512_stddev 0.564 ns 0.564 ns 4
std::string copy{str_with_len_N};/512_cv 1.96 % 1.96 % 4
std::string copy{str_with_len_N};/1024_mean 46.9 ns 46.9 ns 4
std::string copy{str_with_len_N};/1024_median 46.0 ns 46.0 ns 4
std::string copy{str_with_len_N};/1024_stddev 2.42 ns 2.42 ns 4
std::string copy{str_with_len_N};/1024_cv 5.17 % 5.17 % 4
std::string copy{str_with_len_N};/2048_mean 69.5 ns 69.5 ns 4
std::string copy{str_with_len_N};/2048_median 68.3 ns 68.3 ns 4
std::string copy{str_with_len_N};/2048_stddev 7.70 ns 7.70 ns 4
std::string copy{str_with_len_N};/2048_cv 11.07 % 11.07 % 4
std::string copy{str_with_len_N};/4096_mean 118 ns 118 ns 4
std::string copy{str_with_len_N};/4096_median 118 ns 118 ns 4
std::string copy{str_with_len_N};/4096_stddev 5.69 ns 5.69 ns 4
std::string copy{str_with_len_N};/4096_cv 4.82 % 4.82 % 4
stringa copy{str_with_len_N};/15_mean 1.11 ns 1.11 ns 4
stringa copy{str_with_len_N};/15_median 1.10 ns 1.10 ns 4
stringa copy{str_with_len_N};/15_stddev 0.027 ns 0.027 ns 4
stringa copy{str_with_len_N};/15_cv 2.42 % 2.42 % 4
stringa copy{str_with_len_N};/16_mean 1.11 ns 1.11 ns 4
stringa copy{str_with_len_N};/16_median 1.12 ns 1.12 ns 4
stringa copy{str_with_len_N};/16_stddev 0.013 ns 0.013 ns 4
stringa copy{str_with_len_N};/16_cv 1.18 % 1.18 % 4
stringa copy{str_with_len_N};/23_mean 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/23_median 1.12 ns 1.12 ns 4
stringa copy{str_with_len_N};/23_stddev 0.022 ns 0.022 ns 4
stringa copy{str_with_len_N};/23_cv 1.94 % 1.94 % 4
stringa copy{str_with_len_N};/24_mean 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/24_median 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/24_stddev 0.087 ns 0.087 ns 4
stringa copy{str_with_len_N};/24_cv 0.54 % 0.54 % 4
stringa copy{str_with_len_N};/32_mean 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/32_median 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/32_stddev 0.086 ns 0.086 ns 4
stringa copy{str_with_len_N};/32_cv 0.53 % 0.53 % 4
stringa copy{str_with_len_N};/64_mean 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/64_median 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/64_stddev 0.080 ns 0.080 ns 4
stringa copy{str_with_len_N};/64_cv 0.50 % 0.50 % 4
stringa copy{str_with_len_N};/128_mean 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/128_median 15.9 ns 15.9 ns 4
stringa copy{str_with_len_N};/128_stddev 0.288 ns 0.288 ns 4
stringa copy{str_with_len_N};/128_cv 1.80 % 1.80 % 4
stringa copy{str_with_len_N};/256_mean 15.9 ns 15.9 ns 4
stringa copy{str_with_len_N};/256_median 15.9 ns 15.9 ns 4
stringa copy{str_with_len_N};/256_stddev 0.151 ns 0.151 ns 4
stringa copy{str_with_len_N};/256_cv 0.94 % 0.94 % 4
stringa copy{str_with_len_N};/512_mean 15.9 ns 15.9 ns 4
stringa copy{str_with_len_N};/512_median 15.9 ns 15.9 ns 4
stringa copy{str_with_len_N};/512_stddev 0.043 ns 0.043 ns 4
stringa copy{str_with_len_N};/512_cv 0.27 % 0.27 % 4
stringa copy{str_with_len_N};/1024_mean 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/1024_median 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/1024_stddev 0.192 ns 0.192 ns 4
stringa copy{str_with_len_N};/1024_cv 1.20 % 1.20 % 4
stringa copy{str_with_len_N};/2048_mean 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/2048_median 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/2048_stddev 0.034 ns 0.034 ns 4
stringa copy{str_with_len_N};/2048_cv 0.21 % 0.21 % 4
stringa copy{str_with_len_N};/4096_mean 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/4096_median 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/4096_stddev 0.046 ns 0.046 ns 4
stringa copy{str_with_len_N};/4096_cv 0.29 % 0.29 % 4
lstringa<16> copy{str_with_len_N};/15_mean 4.45 ns 4.45 ns 4
lstringa<16> copy{str_with_len_N};/15_median 4.42 ns 4.42 ns 4
lstringa<16> copy{str_with_len_N};/15_stddev 0.094 ns 0.094 ns 4
lstringa<16> copy{str_with_len_N};/15_cv 2.10 % 2.10 % 4
lstringa<16> copy{str_with_len_N};/16_mean 4.60 ns 4.60 ns 4
lstringa<16> copy{str_with_len_N};/16_median 4.41 ns 4.41 ns 4
lstringa<16> copy{str_with_len_N};/16_stddev 0.431 ns 0.431 ns 4
lstringa<16> copy{str_with_len_N};/16_cv 9.38 % 9.38 % 4
lstringa<16> copy{str_with_len_N};/23_mean 4.53 ns 4.53 ns 4
lstringa<16> copy{str_with_len_N};/23_median 4.50 ns 4.50 ns 4
lstringa<16> copy{str_with_len_N};/23_stddev 0.095 ns 0.095 ns 4
lstringa<16> copy{str_with_len_N};/23_cv 2.09 % 2.09 % 4
lstringa<16> copy{str_with_len_N};/24_mean 24.4 ns 24.4 ns 4
lstringa<16> copy{str_with_len_N};/24_median 24.4 ns 24.4 ns 4
lstringa<16> copy{str_with_len_N};/24_stddev 0.254 ns 0.254 ns 4
lstringa<16> copy{str_with_len_N};/24_cv 1.04 % 1.04 % 4
lstringa<16> copy{str_with_len_N};/32_mean 23.5 ns 23.5 ns 4
lstringa<16> copy{str_with_len_N};/32_median 23.6 ns 23.6 ns 4
lstringa<16> copy{str_with_len_N};/32_stddev 0.375 ns 0.375 ns 4
lstringa<16> copy{str_with_len_N};/32_cv 1.60 % 1.60 % 4
lstringa<16> copy{str_with_len_N};/64_mean 25.7 ns 25.7 ns 4
lstringa<16> copy{str_with_len_N};/64_median 25.8 ns 25.8 ns 4
lstringa<16> copy{str_with_len_N};/64_stddev 0.246 ns 0.246 ns 4
lstringa<16> copy{str_with_len_N};/64_cv 0.96 % 0.96 % 4
lstringa<16> copy{str_with_len_N};/128_mean 26.2 ns 26.2 ns 4
lstringa<16> copy{str_with_len_N};/128_median 26.2 ns 26.2 ns 4
lstringa<16> copy{str_with_len_N};/128_stddev 0.718 ns 0.718 ns 4
lstringa<16> copy{str_with_len_N};/128_cv 2.74 % 2.74 % 4
lstringa<16> copy{str_with_len_N};/256_mean 27.1 ns 27.1 ns 4
lstringa<16> copy{str_with_len_N};/256_median 26.9 ns 26.9 ns 4
lstringa<16> copy{str_with_len_N};/256_stddev 0.473 ns 0.473 ns 4
lstringa<16> copy{str_with_len_N};/256_cv 1.75 % 1.75 % 4
lstringa<16> copy{str_with_len_N};/512_mean 32.1 ns 32.1 ns 4
lstringa<16> copy{str_with_len_N};/512_median 31.6 ns 31.6 ns 4
lstringa<16> copy{str_with_len_N};/512_stddev 2.66 ns 2.66 ns 4
lstringa<16> copy{str_with_len_N};/512_cv 8.28 % 8.28 % 4
lstringa<16> copy{str_with_len_N};/1024_mean 54.7 ns 54.7 ns 4
lstringa<16> copy{str_with_len_N};/1024_median 54.6 ns 54.6 ns 4
lstringa<16> copy{str_with_len_N};/1024_stddev 2.72 ns 2.72 ns 4
lstringa<16> copy{str_with_len_N};/1024_cv 4.97 % 4.97 % 4
lstringa<16> copy{str_with_len_N};/2048_mean 62.1 ns 62.1 ns 4
lstringa<16> copy{str_with_len_N};/2048_median 62.1 ns 62.1 ns 4
lstringa<16> copy{str_with_len_N};/2048_stddev 1.03 ns 1.03 ns 4
lstringa<16> copy{str_with_len_N};/2048_cv 1.66 % 1.66 % 4
lstringa<16> copy{str_with_len_N};/4096_mean 87.4 ns 87.4 ns 4
lstringa<16> copy{str_with_len_N};/4096_median 85.0 ns 85.0 ns 4
lstringa<16> copy{str_with_len_N};/4096_stddev 4.92 ns 4.92 ns 4
lstringa<16> copy{str_with_len_N};/4096_cv 5.63 % 5.63 % 4
lstringa<512> copy{str_with_len_N};/15_mean 4.78 ns 4.78 ns 4
lstringa<512> copy{str_with_len_N};/15_median 4.80 ns 4.80 ns 4
lstringa<512> copy{str_with_len_N};/15_stddev 0.057 ns 0.057 ns 4
lstringa<512> copy{str_with_len_N};/15_cv 1.20 % 1.19 % 4
lstringa<512> copy{str_with_len_N};/16_mean 4.84 ns 4.84 ns 4
lstringa<512> copy{str_with_len_N};/16_median 4.84 ns 4.84 ns 4
lstringa<512> copy{str_with_len_N};/16_stddev 0.029 ns 0.029 ns 4
lstringa<512> copy{str_with_len_N};/16_cv 0.60 % 0.60 % 4
lstringa<512> copy{str_with_len_N};/23_mean 4.93 ns 4.93 ns 4
lstringa<512> copy{str_with_len_N};/23_median 4.86 ns 4.86 ns 4
lstringa<512> copy{str_with_len_N};/23_stddev 0.200 ns 0.200 ns 4
lstringa<512> copy{str_with_len_N};/23_cv 4.06 % 4.06 % 4
lstringa<512> copy{str_with_len_N};/24_mean 4.79 ns 4.79 ns 4
lstringa<512> copy{str_with_len_N};/24_median 4.80 ns 4.80 ns 4
lstringa<512> copy{str_with_len_N};/24_stddev 0.090 ns 0.090 ns 4
lstringa<512> copy{str_with_len_N};/24_cv 1.87 % 1.87 % 4
lstringa<512> copy{str_with_len_N};/32_mean 4.56 ns 4.56 ns 4
lstringa<512> copy{str_with_len_N};/32_median 4.55 ns 4.55 ns 4
lstringa<512> copy{str_with_len_N};/32_stddev 0.191 ns 0.191 ns 4
lstringa<512> copy{str_with_len_N};/32_cv 4.19 % 4.19 % 4
lstringa<512> copy{str_with_len_N};/64_mean 6.35 ns 6.35 ns 4
lstringa<512> copy{str_with_len_N};/64_median 6.44 ns 6.44 ns 4
lstringa<512> copy{str_with_len_N};/64_stddev 0.314 ns 0.314 ns 4
lstringa<512> copy{str_with_len_N};/64_cv 4.95 % 4.95 % 4
lstringa<512> copy{str_with_len_N};/128_mean 6.59 ns 6.59 ns 4
lstringa<512> copy{str_with_len_N};/128_median 6.33 ns 6.33 ns 4
lstringa<512> copy{str_with_len_N};/128_stddev 0.589 ns 0.589 ns 4
lstringa<512> copy{str_with_len_N};/128_cv 8.94 % 8.94 % 4
lstringa<512> copy{str_with_len_N};/256_mean 17.2 ns 17.2 ns 4
lstringa<512> copy{str_with_len_N};/256_median 17.1 ns 17.1 ns 4
lstringa<512> copy{str_with_len_N};/256_stddev 0.067 ns 0.067 ns 4
lstringa<512> copy{str_with_len_N};/256_cv 0.39 % 0.39 % 4
lstringa<512> copy{str_with_len_N};/512_mean 10.1 ns 10.1 ns 4
lstringa<512> copy{str_with_len_N};/512_median 10.1 ns 10.1 ns 4
lstringa<512> copy{str_with_len_N};/512_stddev 0.141 ns 0.141 ns 4
lstringa<512> copy{str_with_len_N};/512_cv 1.40 % 1.40 % 4
lstringa<512> copy{str_with_len_N};/1024_mean 56.4 ns 56.4 ns 4
lstringa<512> copy{str_with_len_N};/1024_median 56.8 ns 56.8 ns 4
lstringa<512> copy{str_with_len_N};/1024_stddev 1.89 ns 1.89 ns 4
lstringa<512> copy{str_with_len_N};/1024_cv 3.35 % 3.35 % 4
lstringa<512> copy{str_with_len_N};/2048_mean 67.1 ns 67.1 ns 4
lstringa<512> copy{str_with_len_N};/2048_median 65.5 ns 65.5 ns 4
lstringa<512> copy{str_with_len_N};/2048_stddev 3.62 ns 3.62 ns 4
lstringa<512> copy{str_with_len_N};/2048_cv 5.40 % 5.40 % 4
lstringa<512> copy{str_with_len_N};/4096_mean 88.7 ns 88.7 ns 4
lstringa<512> copy{str_with_len_N};/4096_median 88.7 ns 88.7 ns 4
lstringa<512> copy{str_with_len_N};/4096_stddev 0.924 ns 0.924 ns 4
lstringa<512> copy{str_with_len_N};/4096_cv 1.04 % 1.04 % 4
----- 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.4 ns 26.4 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 26.4 ns 26.4 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.181 ns 0.181 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 0.68 % 0.68 % 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 14.7 ns 14.7 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 14.6 ns 14.6 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.292 ns 0.292 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 1.98 % 1.98 % 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 12.7 ns 12.7 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 12.6 ns 12.6 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.195 ns 0.195 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 1.54 % 1.54 % 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 13.1 ns 13.1 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 13.2 ns 13.2 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.454 ns 0.454 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 3.45 % 3.45 % 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 12.6 ns 12.6 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_median 12.7 ns 12.7 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.078 ns 0.078 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 0.62 % 0.62 % 4
----- 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.2 ns 23.2 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 23.3 ns 23.3 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.347 ns 0.347 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 1.49 % 1.49 % 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.53 ns 9.53 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.55 ns 9.55 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.142 ns 0.142 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 1.49 % 1.49 % 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 11.4 ns 11.4 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 11.4 ns 11.4 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.258 ns 0.258 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 2.26 % 2.26 % 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 11.2 ns 11.2 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 11.1 ns 11.1 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.524 ns 0.524 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 4.68 % 4.68 % 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 11.3 ns 11.3 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 11.2 ns 11.2 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.238 ns 0.238 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 2.11 % 2.11 % 4
----- Convert to int ' 1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_mean 28.9 ns 28.9 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 28.5 ns 28.5 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 1.39 ns 1.39 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 4.81 % 4.81 % 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_mean 18.9 ns 18.9 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_median 18.9 ns 18.9 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_stddev 0.150 ns 0.150 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_cv 0.79 % 0.79 % 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_mean 14.9 ns 14.9 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_median 14.8 ns 14.8 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_stddev 0.215 ns 0.215 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_cv 1.44 % 1.44 % 4
----- 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 66.7 ns 66.7 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 64.4 ns 64.4 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 5.07 ns 5.07 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 7.59 % 7.59 % 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 24.9 ns 24.9 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 25.0 ns 25.0 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 0.357 ns 0.357 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 1.44 % 1.44 % 4
ssa s = "1234.567e10"; double res = *s.to_double()_mean 25.4 ns 25.4 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_median 25.5 ns 25.5 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.469 ns 0.469 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_cv 1.85 % 1.85 % 4
-- 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 1382 ns 1382 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_median 1383 ns 1384 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 26.3 ns 26.3 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_cv 1.90 % 1.90 % 4
std::string str; ... str += "abbaabbaabbaabba";_mean 347 ns 347 ns 4
std::string str; ... str += "abbaabbaabbaabba";_median 345 ns 345 ns 4
std::string str; ... str += "abbaabbaabbaabba";_stddev 9.44 ns 9.44 ns 4
std::string str; ... str += "abbaabbaabbaabba";_cv 2.72 % 2.72 % 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 363 ns 363 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_median 348 ns 348 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 38.6 ns 38.6 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 10.63 % 10.63 % 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 249 ns 249 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_median 237 ns 237 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 26.4 ns 26.4 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 10.60 % 10.60 % 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 213 ns 213 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_median 216 ns 216 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 21.7 ns 21.7 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 10.17 % 10.17 % 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 135 ns 135 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 135 ns 135 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 0.578 ns 0.578 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 0.43 % 0.43 % 4
-- 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 1371 ns 1371 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1376 ns 1376 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 17.3 ns 17.3 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 1.26 % 1.26 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1266 ns 1266 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1236 ns 1236 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 69.6 ns 69.6 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 5.50 % 5.50 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 413 ns 413 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 411 ns 411 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 12.7 ns 12.7 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.07 % 3.07 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 315 ns 315 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 315 ns 315 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 5.49 ns 5.49 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.74 % 1.74 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 287 ns 287 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 284 ns 284 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 9.43 ns 9.43 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.29 % 3.29 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 231 ns 231 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 232 ns 232 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 4.36 ns 4.36 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.88 % 1.88 % 4
-- 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 116458 ns 116458 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 116426 ns 116426 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 5311 ns 5311 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 4.56 % 4.56 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 71688 ns 71688 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 71654 ns 71655 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 510 ns 510 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 0.71 % 0.71 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 40461 ns 40462 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 40387 ns 40387 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 626 ns 626 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.55 % 1.55 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 24967 ns 24967 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 25352 ns 25352 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1046 ns 1046 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 4.19 % 4.19 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17099 ns 17099 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16390 ns 16390 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2371 ns 2371 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 13.87 % 13.87 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 18583 ns 18583 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 18486 ns 18486 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 932 ns 932 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 5.01 % 5.01 % 4
-- 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 1515 ns 1515 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_median 1508 ns 1508 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_stddev 76.5 ns 76.5 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_cv 5.05 % 5.05 % 4
std::string str; ... str += str_var1 + str_var2;_mean 1485 ns 1485 ns 4
std::string str; ... str += str_var1 + str_var2;_median 1443 ns 1443 ns 4
std::string str; ... str += str_var1 + str_var2;_stddev 111 ns 111 ns 4
std::string str; ... str += str_var1 + str_var2;_cv 7.49 % 7.49 % 4
lstringa<16> str; ... str += str_var1 + str_var2;_mean 470 ns 470 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_median 472 ns 472 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_stddev 8.83 ns 8.83 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_cv 1.88 % 1.88 % 4
lstringa<128> str; ... str += str_var1 + str_var2;_mean 418 ns 418 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_median 400 ns 400 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_stddev 37.2 ns 37.2 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_cv 8.88 % 8.88 % 4
lstringa<512> str; ... str += str_var1 + str_var2;_mean 367 ns 367 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_median 366 ns 366 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_stddev 8.59 ns 8.59 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_cv 2.34 % 2.34 % 4
lstringa<1024> str; ... str += str_var1 + str_var2;_mean 290 ns 290 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_median 290 ns 290 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 2.88 ns 2.88 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_cv 0.99 % 0.99 % 4
-- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::stringstream str; str << "test = " << k << " times";_mean 3014 ns 3014 ns 4
std::stringstream str; str << "test = " << k << " times";_median 3007 ns 3007 ns 4
std::stringstream str; str << "test = " << k << " times";_stddev 76.9 ns 76.9 ns 4
std::stringstream str; str << "test = " << k << " times";_cv 2.55 % 2.55 % 4
std::string str = "test = " + std::to_string(k) + " times";_mean 472 ns 472 ns 4
std::string str = "test = " + std::to_string(k) + " times";_median 471 ns 471 ns 4
std::string str = "test = " + std::to_string(k) + " times";_stddev 4.39 ns 4.39 ns 4
std::string str = "test = " + std::to_string(k) + " times";_cv 0.93 % 0.93 % 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1422 ns 1422 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1406 ns 1406 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 56.2 ns 56.2 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 3.95 % 3.95 % 4
std::string str = std::format("test = {} times", k);_mean 1174 ns 1174 ns 4
std::string str = std::format("test = {} times", k);_median 1166 ns 1166 ns 4
std::string str = std::format("test = {} times", k);_stddev 44.0 ns 44.0 ns 4
std::string str = std::format("test = {} times", k);_cv 3.75 % 3.75 % 4
lstringa<8> str; str.format("test = {} times", k);_mean 1387 ns 1387 ns 4
lstringa<8> str; str.format("test = {} times", k);_median 1366 ns 1366 ns 4
lstringa<8> str; str.format("test = {} times", k);_stddev 63.5 ns 63.5 ns 4
lstringa<8> str; str.format("test = {} times", k);_cv 4.58 % 4.58 % 4
lstringa<32> str; str.format("test = {} times", k);_mean 1056 ns 1056 ns 4
lstringa<32> str; str.format("test = {} times", k);_median 1051 ns 1051 ns 4
lstringa<32> str; str.format("test = {} times", k);_stddev 33.1 ns 33.1 ns 4
lstringa<32> str; str.format("test = {} times", k);_cv 3.13 % 3.13 % 4
lstringa<8> str = "test = " + k + " times";_mean 294 ns 294 ns 4
lstringa<8> str = "test = " + k + " times";_median 289 ns 289 ns 4
lstringa<8> str = "test = " + k + " times";_stddev 16.0 ns 16.0 ns 4
lstringa<8> str = "test = " + k + " times";_cv 5.44 % 5.44 % 4
lstringa<32> str = "test = " + k + " times";_mean 151 ns 151 ns 4
lstringa<32> str = "test = " + k + " times";_median 152 ns 152 ns 4
lstringa<32> str = "test = " + k + " times";_stddev 2.76 ns 2.76 ns 4
lstringa<32> str = "test = " + k + " times";_cv 1.83 % 1.83 % 4
stringa str = "test = " + k + " times";_mean 145 ns 145 ns 4
stringa str = "test = " + k + " times";_median 146 ns 146 ns 4
stringa str = "test = " + k + " times";_stddev 1.59 ns 1.59 ns 4
stringa str = "test = " + k + " times";_cv 1.09 % 1.09 % 4
-- 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 4
std::string::find + substr + std::strtol_median 267 ns 267 ns 4
std::string::find + substr + std::strtol_stddev 7.51 ns 7.51 ns 4
std::string::find + substr + std::strtol_cv 2.77 % 2.77 % 4
ssa::splitter + ssa::as_int_mean 152 ns 152 ns 4
ssa::splitter + ssa::as_int_median 153 ns 153 ns 4
ssa::splitter + ssa::as_int_stddev 1.22 ns 1.22 ns 4
ssa::splitter + ssa::as_int_cv 0.80 % 0.80 % 4
ssa::splitf + functor_mean 200 ns 200 ns 4
ssa::splitf + functor_median 199 ns 199 ns 4
ssa::splitf + functor_stddev 5.26 ns 5.26 ns 4
ssa::splitf + functor_cv 2.63 % 2.63 % 4
-- 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 846 ns 846 ns 4
Naive (and wrong) replace symbols with std::string find + replace_median 850 ns 850 ns 4
Naive (and wrong) replace symbols with std::string find + replace_stddev 9.77 ns 9.77 ns 4
Naive (and wrong) replace symbols with std::string find + replace_cv 1.15 % 1.15 % 4
replace symbols with std::string find_first_of + replace_mean 2461 ns 2461 ns 4
replace symbols with std::string find_first_of + replace_median 2404 ns 2404 ns 4
replace symbols with std::string find_first_of + replace_stddev 166 ns 166 ns 4
replace symbols with std::string find_first_of + replace_cv 6.73 % 6.73 % 4
replace symbols with std::string_view find_first_of + copy_mean 1085 ns 1085 ns 4
replace symbols with std::string_view find_first_of + copy_median 1086 ns 1086 ns 4
replace symbols with std::string_view find_first_of + copy_stddev 15.3 ns 15.3 ns 4
replace symbols with std::string_view find_first_of + copy_cv 1.41 % 1.41 % 4
replace runtime symbols with string expressions and without remembering all search results_mean 1294 ns 1294 ns 4
replace runtime symbols with string expressions and without remembering all search results_median 1298 ns 1298 ns 4
replace runtime symbols with string expressions and without remembering all search results_stddev 20.7 ns 20.7 ns 4
replace runtime symbols with string expressions and without remembering all search results_cv 1.60 % 1.60 % 4
replace runtime symbols with simstr and memorization of all search results_mean 1076 ns 1076 ns 4
replace runtime symbols with simstr and memorization of all search results_median 1051 ns 1051 ns 4
replace runtime symbols with simstr and memorization of all search results_stddev 71.8 ns 71.8 ns 4
replace runtime symbols with simstr and memorization of all search results_cv 6.68 % 6.68 % 4
replace const symbols with string expressions and without remembering all search results_mean 1042 ns 1042 ns 4
replace const symbols with string expressions and without remembering all search results_median 1008 ns 1008 ns 4
replace const symbols with string expressions and without remembering all search results_stddev 73.1 ns 73.1 ns 4
replace const symbols with string expressions and without remembering all search results_cv 7.01 % 7.01 % 4
replace const symbols with string expressions and memorization of all search results_mean 889 ns 889 ns 4
replace const symbols with string expressions and memorization of all search results_median 891 ns 891 ns 4
replace const symbols with string expressions and memorization of all search results_stddev 9.30 ns 9.30 ns 4
replace const symbols with string expressions and memorization of all search results_cv 1.05 % 1.05 % 4
-- 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 170 ns 170 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_median 168 ns 168 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_stddev 10.2 ns 10.2 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_cv 5.97 % 5.97 % 4
Short replace symbols with std::string find_first_of + replace_mean 314 ns 314 ns 4
Short replace symbols with std::string find_first_of + replace_median 312 ns 312 ns 4
Short replace symbols with std::string find_first_of + replace_stddev 4.98 ns 4.98 ns 4
Short replace symbols with std::string find_first_of + replace_cv 1.59 % 1.59 % 4
Short replace symbols with std::string_view find_first_of + copy_mean 165 ns 165 ns 4
Short replace symbols with std::string_view find_first_of + copy_median 166 ns 166 ns 4
Short replace symbols with std::string_view find_first_of + copy_stddev 2.45 ns 2.45 ns 4
Short replace symbols with std::string_view find_first_of + copy_cv 1.48 % 1.48 % 4
Short replace runtime symbols with string expressions and without remembering all search results_mean 193 ns 193 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_median 193 ns 193 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_stddev 3.08 ns 3.08 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_cv 1.59 % 1.59 % 4
Short replace runtime symbols with simstr and memorization of all search results_mean 186 ns 186 ns 4
Short replace runtime symbols with simstr and memorization of all search results_median 187 ns 187 ns 4
Short replace runtime symbols with simstr and memorization of all search results_stddev 3.78 ns 3.78 ns 4
Short replace runtime symbols with simstr and memorization of all search results_cv 2.03 % 2.03 % 4
Short replace const symbols with string expressions and without remembering all search results_mean 135 ns 135 ns 4
Short replace const symbols with string expressions and without remembering all search results_median 133 ns 133 ns 4
Short replace const symbols with string expressions and without remembering all search results_stddev 6.73 ns 6.73 ns 4
Short replace const symbols with string expressions and without remembering all search results_cv 4.98 % 4.98 % 4
Short replace const symbols with string expressions and memorization of all search results_mean 152 ns 152 ns 4
Short replace const symbols with string expressions and memorization of all search results_median 151 ns 151 ns 4
Short replace const symbols with string expressions and memorization of all search results_stddev 1.55 ns 1.55 ns 4
Short replace const symbols with string expressions and memorization of all search results_cv 1.02 % 1.02 % 4
----- 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 4
replace bb to ---- in std::string|64_median 160 ns 160 ns 4
replace bb to ---- in std::string|64_stddev 3.48 ns 3.48 ns 4
replace bb to ---- in std::string|64_cv 2.17 % 2.17 % 4
replace bb to ---- in std::string|256_mean 522 ns 522 ns 4
replace bb to ---- in std::string|256_median 524 ns 524 ns 4
replace bb to ---- in std::string|256_stddev 8.48 ns 8.48 ns 4
replace bb to ---- in std::string|256_cv 1.63 % 1.63 % 4
replace bb to ---- in std::string|512_mean 1021 ns 1021 ns 4
replace bb to ---- in std::string|512_median 1022 ns 1022 ns 4
replace bb to ---- in std::string|512_stddev 31.8 ns 31.8 ns 4
replace bb to ---- in std::string|512_cv 3.11 % 3.11 % 4
replace bb to ---- in std::string|1024_mean 2275 ns 2275 ns 4
replace bb to ---- in std::string|1024_median 2255 ns 2255 ns 4
replace bb to ---- in std::string|1024_stddev 187 ns 187 ns 4
replace bb to ---- in std::string|1024_cv 8.21 % 8.21 % 4
replace bb to ---- in std::string|2048_mean 6028 ns 6028 ns 4
replace bb to ---- in std::string|2048_median 5940 ns 5940 ns 4
replace bb to ---- in std::string|2048_stddev 544 ns 544 ns 4
replace bb to ---- in std::string|2048_cv 9.02 % 9.02 % 4
replace bb to ---- in lstringa<8>|64_mean 136 ns 136 ns 4
replace bb to ---- in lstringa<8>|64_median 134 ns 134 ns 4
replace bb to ---- in lstringa<8>|64_stddev 4.74 ns 4.74 ns 4
replace bb to ---- in lstringa<8>|64_cv 3.48 % 3.48 % 4
replace bb to ---- in lstringa<8>|256_mean 449 ns 449 ns 4
replace bb to ---- in lstringa<8>|256_median 438 ns 438 ns 4
replace bb to ---- in lstringa<8>|256_stddev 25.2 ns 25.2 ns 4
replace bb to ---- in lstringa<8>|256_cv 5.60 % 5.60 % 4
replace bb to ---- in lstringa<8>|512_mean 864 ns 864 ns 4
replace bb to ---- in lstringa<8>|512_median 837 ns 837 ns 4
replace bb to ---- in lstringa<8>|512_stddev 71.1 ns 71.1 ns 4
replace bb to ---- in lstringa<8>|512_cv 8.23 % 8.23 % 4
replace bb to ---- in lstringa<8>|1024_mean 1732 ns 1732 ns 4
replace bb to ---- in lstringa<8>|1024_median 1735 ns 1735 ns 4
replace bb to ---- in lstringa<8>|1024_stddev 83.6 ns 83.6 ns 4
replace bb to ---- in lstringa<8>|1024_cv 4.82 % 4.82 % 4
replace bb to ---- in lstringa<8>|2048_mean 3799 ns 3799 ns 4
replace bb to ---- in lstringa<8>|2048_median 3777 ns 3777 ns 4
replace bb to ---- in lstringa<8>|2048_stddev 191 ns 191 ns 4
replace bb to ---- in lstringa<8>|2048_cv 5.04 % 5.04 % 4
replace bb to ---- by init stringa|64_mean 100 ns 100 ns 4
replace bb to ---- by init stringa|64_median 96.5 ns 96.5 ns 4
replace bb to ---- by init stringa|64_stddev 9.09 ns 9.09 ns 4
replace bb to ---- by init stringa|64_cv 9.06 % 9.06 % 4
replace bb to ---- by init stringa|256_mean 304 ns 304 ns 4
replace bb to ---- by init stringa|256_median 301 ns 301 ns 4
replace bb to ---- by init stringa|256_stddev 11.6 ns 11.6 ns 4
replace bb to ---- by init stringa|256_cv 3.83 % 3.83 % 4
replace bb to ---- by init stringa|512_mean 693 ns 693 ns 4
replace bb to ---- by init stringa|512_median 691 ns 691 ns 4
replace bb to ---- by init stringa|512_stddev 7.00 ns 7.00 ns 4
replace bb to ---- by init stringa|512_cv 1.01 % 1.01 % 4
replace bb to ---- by init stringa|1024_mean 1461 ns 1461 ns 4
replace bb to ---- by init stringa|1024_median 1468 ns 1468 ns 4
replace bb to ---- by init stringa|1024_stddev 21.7 ns 21.7 ns 4
replace bb to ---- by init stringa|1024_cv 1.48 % 1.48 % 4
replace bb to ---- by init stringa|2048_mean 2974 ns 2974 ns 4
replace bb to ---- by init stringa|2048_median 2987 ns 2987 ns 4
replace bb to ---- by init stringa|2048_stddev 30.1 ns 30.1 ns 4
replace bb to ---- by init stringa|2048_cv 1.01 % 1.01 % 4
----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to -- in std::string|64_mean 122 ns 122 ns 4
replace bb to -- in std::string|64_median 123 ns 123 ns 4
replace bb to -- in std::string|64_stddev 2.46 ns 2.46 ns 4
replace bb to -- in std::string|64_cv 2.01 % 2.01 % 4
replace bb to -- in std::string|256_mean 403 ns 403 ns 4
replace bb to -- in std::string|256_median 394 ns 394 ns 4
replace bb to -- in std::string|256_stddev 26.1 ns 26.1 ns 4
replace bb to -- in std::string|256_cv 6.48 % 6.48 % 4
replace bb to -- in std::string|512_mean 759 ns 759 ns 4
replace bb to -- in std::string|512_median 765 ns 765 ns 4
replace bb to -- in std::string|512_stddev 18.8 ns 18.8 ns 4
replace bb to -- in std::string|512_cv 2.47 % 2.47 % 4
replace bb to -- in std::string|1024_mean 1521 ns 1521 ns 4
replace bb to -- in std::string|1024_median 1486 ns 1486 ns 4
replace bb to -- in std::string|1024_stddev 91.7 ns 91.7 ns 4
replace bb to -- in std::string|1024_cv 6.03 % 6.03 % 4
replace bb to -- in std::string|2048_mean 3014 ns 3014 ns 4
replace bb to -- in std::string|2048_median 2974 ns 2974 ns 4
replace bb to -- in std::string|2048_stddev 213 ns 213 ns 4
replace bb to -- in std::string|2048_cv 7.07 % 7.07 % 4
replace bb to -- in lstringa<8>|64_mean 97.8 ns 97.8 ns 4
replace bb to -- in lstringa<8>|64_median 97.5 ns 97.5 ns 4
replace bb to -- in lstringa<8>|64_stddev 0.990 ns 0.990 ns 4
replace bb to -- in lstringa<8>|64_cv 1.01 % 1.01 % 4
replace bb to -- in lstringa<8>|256_mean 284 ns 284 ns 4
replace bb to -- in lstringa<8>|256_median 282 ns 282 ns 4
replace bb to -- in lstringa<8>|256_stddev 5.33 ns 5.33 ns 4
replace bb to -- in lstringa<8>|256_cv 1.87 % 1.87 % 4
replace bb to -- in lstringa<8>|512_mean 526 ns 526 ns 4
replace bb to -- in lstringa<8>|512_median 526 ns 526 ns 4
replace bb to -- in lstringa<8>|512_stddev 8.20 ns 8.20 ns 4
replace bb to -- in lstringa<8>|512_cv 1.56 % 1.56 % 4
replace bb to -- in lstringa<8>|1024_mean 1125 ns 1125 ns 4
replace bb to -- in lstringa<8>|1024_median 1125 ns 1125 ns 4
replace bb to -- in lstringa<8>|1024_stddev 18.4 ns 18.4 ns 4
replace bb to -- in lstringa<8>|1024_cv 1.63 % 1.63 % 4
replace bb to -- in lstringa<8>|2048_mean 2182 ns 2182 ns 4
replace bb to -- in lstringa<8>|2048_median 2173 ns 2173 ns 4
replace bb to -- in lstringa<8>|2048_stddev 215 ns 215 ns 4
replace bb to -- in lstringa<8>|2048_cv 9.83 % 9.83 % 4
replace bb to -- by init stringa|64_mean 89.7 ns 89.7 ns 4
replace bb to -- by init stringa|64_median 86.0 ns 86.0 ns 4
replace bb to -- by init stringa|64_stddev 9.16 ns 9.16 ns 4
replace bb to -- by init stringa|64_cv 10.21 % 10.21 % 4
replace bb to -- by init stringa|256_mean 238 ns 238 ns 4
replace bb to -- by init stringa|256_median 237 ns 237 ns 4
replace bb to -- by init stringa|256_stddev 6.85 ns 6.85 ns 4
replace bb to -- by init stringa|256_cv 2.89 % 2.89 % 4
replace bb to -- by init stringa|512_mean 436 ns 436 ns 4
replace bb to -- by init stringa|512_median 435 ns 435 ns 4
replace bb to -- by init stringa|512_stddev 11.6 ns 11.6 ns 4
replace bb to -- by init stringa|512_cv 2.66 % 2.66 % 4
replace bb to -- by init stringa|1024_mean 853 ns 853 ns 4
replace bb to -- by init stringa|1024_median 855 ns 855 ns 4
replace bb to -- by init stringa|1024_stddev 8.52 ns 8.52 ns 4
replace bb to -- by init stringa|1024_cv 1.00 % 1.00 % 4
replace bb to -- by init stringa|2048_mean 1625 ns 1625 ns 4
replace bb to -- by init stringa|2048_median 1622 ns 1622 ns 4
replace bb to -- by init stringa|2048_stddev 27.9 ns 27.9 ns 4
replace bb to -- by init stringa|2048_cv 1.72 % 1.72 % 4
----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
hashStrMapA<size_t> emplace & find stringa;_mean 3560953 ns 3560963 ns 4
hashStrMapA<size_t> emplace & find stringa;_median 3558506 ns 3558516 ns 4
hashStrMapA<size_t> emplace & find stringa;_stddev 34250 ns 34251 ns 4
hashStrMapA<size_t> emplace & find stringa;_cv 0.96 % 0.96 % 4
std::unordered_map<std::string, size_t> emplace & find std::string;_mean 3521968 ns 3521978 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_median 3521321 ns 3521331 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_stddev 124468 ns 124468 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_cv 3.53 % 3.53 % 4
hashStrMapA<size_t> emplace & find ssa;_mean 3547635 ns 3547646 ns 4
hashStrMapA<size_t> emplace & find ssa;_median 3552663 ns 3552673 ns 4
hashStrMapA<size_t> emplace & find ssa;_stddev 56011 ns 56012 ns 4
hashStrMapA<size_t> emplace & find ssa;_cv 1.58 % 1.58 % 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_mean 4113520 ns 4113532 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_median 4037073 ns 4037087 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_stddev 185659 ns 185657 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_cv 4.51 % 4.51 % 4
----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Build func full name std::string;_mean 714 ns 714 ns 4
Build func full name std::string;_median 714 ns 714 ns 4
Build func full name std::string;_stddev 6.84 ns 6.84 ns 4
Build func full name std::string;_cv 0.96 % 0.96 % 4
Build func full name std::string 1;_mean 821 ns 821 ns 4
Build func full name std::string 1;_median 821 ns 821 ns 4
Build func full name std::string 1;_stddev 4.59 ns 4.59 ns 4
Build func full name std::string 1;_cv 0.56 % 0.56 % 4
Build func full name std::stream;_mean 2538 ns 2538 ns 4
Build func full name std::stream;_median 2554 ns 2554 ns 4
Build func full name std::stream;_stddev 41.6 ns 41.6 ns 4
Build func full name std::stream;_cv 1.64 % 1.64 % 4
Build func full name stringa;_mean 510 ns 510 ns 4
Build func full name stringa;_median 507 ns 507 ns 4
Build func full name stringa;_stddev 16.1 ns 16.1 ns 4
Build func full name stringa;_cv 3.16 % 3.16 % 4
Build func full name stringa 1;_mean 640 ns 640 ns 4
Build func full name stringa 1;_median 635 ns 635 ns 4
Build func full name stringa 1;_stddev 11.7 ns 11.7 ns 4
Build func full name stringa 1;_cv 1.82 % 1.82 % 4

View File

@ -0,0 +1,989 @@
Benchmarks of simstr, version 1.8.1
Sources: https://github.com/orefkov/simstr
Results: https://orefkov.github.io/simstr/results.html
Compiler Clang 22.0.0
2026-03-22T13:18:22+03:00
Running ./benchStr
Run on (32 X 2494.22 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x16)
L1 Instruction 32 KiB (x16)
L2 Unified 256 KiB (x16)
L3 Unified 40960 KiB (x1)
Load Average: 0.20, 0.67, 0.53
***WARNING*** ASLR is enabled, the results may have unreproducible noise in them.
--------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------------------------------------------------------------------------------------------
----- Concatenate email ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat email std::format_mean 167 ns 167 ns 4
Concat email std::format_median 166 ns 166 ns 4
Concat email std::format_stddev 2.04 ns 2.04 ns 4
Concat email std::format_cv 1.22 % 1.22 % 4
Concat email std::stringstream_mean 379 ns 379 ns 4
Concat email std::stringstream_median 379 ns 379 ns 4
Concat email std::stringstream_stddev 2.80 ns 2.80 ns 4
Concat email std::stringstream_cv 0.74 % 0.74 % 4
Concat email stringzilla append_mean 143 ns 143 ns 4
Concat email stringzilla append_median 142 ns 142 ns 4
Concat email stringzilla append_stddev 4.40 ns 4.40 ns 4
Concat email stringzilla append_cv 3.07 % 3.07 % 4
Concat email stringzilla concat_mean 54.6 ns 54.6 ns 4
Concat email stringzilla concat_median 54.3 ns 54.3 ns 4
Concat email stringzilla concat_stddev 1.36 ns 1.36 ns 4
Concat email stringzilla concat_cv 2.50 % 2.50 % 4
Concat email std::string append_mean 73.9 ns 73.9 ns 4
Concat email std::string append_median 74.2 ns 74.2 ns 4
Concat email std::string append_stddev 0.919 ns 0.919 ns 4
Concat email std::string append_cv 1.24 % 1.24 % 4
Concat email std::string by strexpr_mean 46.8 ns 46.8 ns 4
Concat email std::string by strexpr_median 47.4 ns 47.4 ns 4
Concat email std::string by strexpr_stddev 1.39 ns 1.39 ns 4
Concat email std::string by strexpr_cv 2.96 % 2.96 % 4
Concat email stringa_mean 39.1 ns 39.1 ns 4
Concat email stringa_median 38.9 ns 38.9 ns 4
Concat email stringa_stddev 0.543 ns 0.543 ns 4
Concat email stringa_cv 1.39 % 1.39 % 4
----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and number by std to std::string_mean 223 ns 223 ns 4
Concat std::string and number by std to std::string_median 223 ns 223 ns 4
Concat std::string and number by std to std::string_stddev 3.04 ns 3.04 ns 4
Concat std::string and number by std to std::string_cv 1.36 % 1.36 % 4
Concat std::string and number by StrExpr to std::string_mean 105 ns 105 ns 4
Concat std::string and number by StrExpr to std::string_median 106 ns 106 ns 4
Concat std::string and number by StrExpr to std::string_stddev 2.70 ns 2.70 ns 4
Concat std::string and number by StrExpr to std::string_cv 2.56 % 2.56 % 4
Concat stringa and number by StrExpr to simstr::stringa_mean 64.9 ns 64.9 ns 4
Concat stringa and number by StrExpr to simstr::stringa_median 64.8 ns 64.8 ns 4
Concat stringa and number by StrExpr to simstr::stringa_stddev 0.353 ns 0.353 ns 4
Concat stringa and number by StrExpr to simstr::stringa_cv 0.54 % 0.54 % 4
Concat stringa and number by e_concat to simstr::stringa_mean 72.3 ns 72.3 ns 4
Concat stringa and number by e_concat to simstr::stringa_median 71.9 ns 71.9 ns 4
Concat stringa and number by e_concat to simstr::stringa_stddev 1.59 ns 1.59 ns 4
Concat stringa and number by e_concat to simstr::stringa_cv 2.20 % 2.20 % 4
----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and format hex number and literal to std::string_mean 696 ns 696 ns 4
Concat std::string and format hex number and literal to std::string_median 699 ns 699 ns 4
Concat std::string and format hex number and literal to std::string_stddev 9.35 ns 9.34 ns 4
Concat std::string and format hex number and literal to std::string_cv 1.34 % 1.34 % 4
std::format std::string and hex number by literal to std::string_mean 828 ns 828 ns 4
std::format std::string and hex number by literal to std::string_median 827 ns 827 ns 4
std::format std::string and hex number by literal to std::string_stddev 25.8 ns 25.8 ns 4
std::format std::string and hex number by literal to std::string_cv 3.11 % 3.11 % 4
Concat std::string and std::to_chars and string to std::string_mean 210 ns 210 ns 4
Concat std::string and std::to_chars and string to std::string_median 210 ns 210 ns 4
Concat std::string and std::to_chars and string to std::string_stddev 3.35 ns 3.35 ns 4
Concat std::string and std::to_chars and string to std::string_cv 1.60 % 1.60 % 4
Concat std::string and hex number and literal by StrExpr to std::string_mean 134 ns 134 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_median 134 ns 134 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_stddev 1.42 ns 1.42 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_cv 1.06 % 1.06 % 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 117 ns 117 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 118 ns 118 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 0.602 ns 0.602 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 0.51 % 0.51 % 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 128 ns 128 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_median 126 ns 126 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 4.95 ns 4.95 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 3.87 % 3.87 % 4
Subst stringa and hex number by e_subst literal to simstr::stringa_mean 193 ns 193 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_median 187 ns 187 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 13.1 ns 13.1 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_cv 6.78 % 6.78 % 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_mean 333 ns 333 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_median 324 ns 324 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_stddev 29.5 ns 29.5 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_cv 8.88 % 8.88 % 4
---- format/vformat and subst/vsubst octal number to 32 symbols result ----/repeats:1 0.000 ns 0.000 ns 1000000000000
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_mean 271 ns 271 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_median 271 ns 271 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_stddev 1.20 ns 1.20 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_cv 0.44 % 0.44 % 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_mean 357 ns 357 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_median 357 ns 357 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_stddev 1.91 ns 1.91 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_cv 0.54 % 0.54 % 4
e_vsubst(pattern, i / 0x8a010_fmt)_mean 621 ns 621 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_median 607 ns 607 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_stddev 47.0 ns 47.0 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_cv 7.56 % 7.56 % 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_mean 723 ns 723 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_median 722 ns 722 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_stddev 12.0 ns 12.0 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_cv 1.66 % 1.66 % 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_mean 842 ns 842 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_median 840 ns 840 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_stddev 27.2 ns 27.2 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_cv 3.22 % 3.22 % 4
std::format("abcdefghihklmopqr {:#010o} end", i)_mean 1017 ns 1017 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_median 1011 ns 1011 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_stddev 11.7 ns 11.7 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_cv 1.15 % 1.15 % 4
std::vformat(pattern, std::make_format_args(i))_mean 999 ns 999 ns 4
std::vformat(pattern, std::make_format_args(i))_median 994 ns 994 ns 4
std::vformat(pattern, std::make_format_args(i))_stddev 24.6 ns 24.6 ns 4
std::vformat(pattern, std::make_format_args(i))_cv 2.46 % 2.46 % 4
std::format with std::formatted_size_mean 1867 ns 1867 ns 4
std::format with std::formatted_size_median 1881 ns 1881 ns 4
std::format with std::formatted_size_stddev 33.7 ns 33.7 ns 4
std::format with std::formatted_size_cv 1.80 % 1.80 % 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_mean 2074 ns 2074 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_median 2074 ns 2074 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_stddev 6.88 ns 6.87 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_cv 0.33 % 0.33 % 4
----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string by std to std::string_mean 51.7 ns 51.7 ns 4
Concat std::string by std to std::string_median 51.6 ns 51.6 ns 4
Concat std::string by std to std::string_stddev 0.623 ns 0.623 ns 4
Concat std::string by std to std::string_cv 1.21 % 1.21 % 4
Concat std::string by StrExpr to std::string_mean 36.9 ns 36.9 ns 4
Concat std::string by StrExpr to std::string_median 36.8 ns 36.8 ns 4
Concat std::string by StrExpr to std::string_stddev 0.272 ns 0.272 ns 4
Concat std::string by StrExpr to std::string_cv 0.74 % 0.74 % 4
Concat stringa by StrExpr to stringa_mean 31.6 ns 31.6 ns 4
Concat stringa by StrExpr to stringa_median 31.8 ns 31.8 ns 4
Concat stringa by StrExpr to stringa_stddev 0.842 ns 0.842 ns 4
Concat stringa by StrExpr to stringa_cv 2.66 % 2.66 % 4
----- 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 4
Find concat three std::string_median 112 ns 112 ns 4
Find concat three std::string_stddev 2.70 ns 2.70 ns 4
Find concat three std::string_cv 2.41 % 2.41 % 4
Find concat three strexpr_mean 52.4 ns 52.4 ns 4
Find concat three strexpr_median 52.6 ns 52.6 ns 4
Find concat three strexpr_stddev 2.35 ns 2.35 ns 4
Find concat three strexpr_cv 4.48 % 4.48 % 4
Find concat three simstr_mean 18.9 ns 18.9 ns 4
Find concat three simstr_median 18.8 ns 18.8 ns 4
Find concat three simstr_stddev 0.278 ns 0.278 ns 4
Find concat three simstr_cv 1.47 % 1.47 % 4
Find concat three stringzilla string_mean 153 ns 153 ns 4
Find concat three stringzilla string_median 153 ns 153 ns 4
Find concat three stringzilla string_stddev 1.37 ns 1.37 ns 4
Find concat three stringzilla string_cv 0.90 % 0.90 % 4
----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
BuildTypeNameStr 0/0_mean 7.58 ns 7.58 ns 4
BuildTypeNameStr 0/0_median 7.65 ns 7.65 ns 4
BuildTypeNameStr 0/0_stddev 0.170 ns 0.170 ns 4
BuildTypeNameStr 0/0_cv 2.25 % 2.25 % 4
BuildTypeNameExp 0/0_mean 6.94 ns 6.94 ns 4
BuildTypeNameExp 0/0_median 6.94 ns 6.94 ns 4
BuildTypeNameExp 0/0_stddev 0.141 ns 0.141 ns 4
BuildTypeNameExp 0/0_cv 2.03 % 2.03 % 4
BuildTypeNameSim 0/0_mean 5.03 ns 5.03 ns 4
BuildTypeNameSim 0/0_median 5.02 ns 5.02 ns 4
BuildTypeNameSim 0/0_stddev 0.096 ns 0.096 ns 4
BuildTypeNameSim 0/0_cv 1.91 % 1.91 % 4
BuildTypeNameStr 10/10_mean 59.1 ns 59.1 ns 4
BuildTypeNameStr 10/10_median 59.0 ns 59.0 ns 4
BuildTypeNameStr 10/10_stddev 2.58 ns 2.58 ns 4
BuildTypeNameStr 10/10_cv 4.37 % 4.37 % 4
BuildTypeNameExp 10/10_mean 31.0 ns 31.0 ns 4
BuildTypeNameExp 10/10_median 31.1 ns 31.1 ns 4
BuildTypeNameExp 10/10_stddev 0.361 ns 0.361 ns 4
BuildTypeNameExp 10/10_cv 1.16 % 1.16 % 4
BuildTypeNameSim 10/10_mean 23.4 ns 23.4 ns 4
BuildTypeNameSim 10/10_median 23.5 ns 23.5 ns 4
BuildTypeNameSim 10/10_stddev 0.470 ns 0.470 ns 4
BuildTypeNameSim 10/10_cv 2.01 % 2.01 % 4
----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat with replace str_mean 210 ns 210 ns 4
Concat with replace str_median 209 ns 209 ns 4
Concat with replace str_stddev 4.51 ns 4.51 ns 4
Concat with replace str_cv 2.14 % 2.14 % 4
Concat with replace exp_mean 154 ns 154 ns 4
Concat with replace exp_median 154 ns 154 ns 4
Concat with replace exp_stddev 1.87 ns 1.87 ns 4
Concat with replace exp_cv 1.22 % 1.22 % 4
----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e;_mean 1.13 ns 1.13 ns 4
std::string e;_median 1.14 ns 1.14 ns 4
std::string e;_stddev 0.019 ns 0.019 ns 4
std::string e;_cv 1.68 % 1.68 % 4
std::string_view e;_mean 0.377 ns 0.377 ns 4
std::string_view e;_median 0.377 ns 0.377 ns 4
std::string_view e;_stddev 0.006 ns 0.006 ns 4
std::string_view e;_cv 1.57 % 1.57 % 4
ssa e;_mean 0.372 ns 0.372 ns 4
ssa e;_median 0.371 ns 0.371 ns 4
ssa e;_stddev 0.005 ns 0.005 ns 4
ssa e;_cv 1.34 % 1.34 % 4
stringa e;_mean 0.763 ns 0.763 ns 4
stringa e;_median 0.759 ns 0.759 ns 4
stringa e;_stddev 0.012 ns 0.012 ns 4
stringa e;_cv 1.61 % 1.61 % 4
lstringa<20> e;_mean 1.14 ns 1.14 ns 4
lstringa<20> e;_median 1.13 ns 1.13 ns 4
lstringa<20> e;_stddev 0.015 ns 0.015 ns 4
lstringa<20> e;_cv 1.36 % 1.36 % 4
lstringa<40> e;_mean 1.14 ns 1.14 ns 4
lstringa<40> e;_median 1.12 ns 1.12 ns 4
lstringa<40> e;_stddev 0.026 ns 0.026 ns 4
lstringa<40> e;_cv 2.27 % 2.27 % 4
----- 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 4
std::string e = "Test text";_median 1.87 ns 1.87 ns 4
std::string e = "Test text";_stddev 0.027 ns 0.027 ns 4
std::string e = "Test text";_cv 1.46 % 1.46 % 4
std::string_view e = "Test text";_mean 0.761 ns 0.761 ns 4
std::string_view e = "Test text";_median 0.765 ns 0.765 ns 4
std::string_view e = "Test text";_stddev 0.010 ns 0.010 ns 4
std::string_view e = "Test text";_cv 1.36 % 1.36 % 4
ssa e = "Test text";_mean 0.382 ns 0.382 ns 4
ssa e = "Test text";_median 0.382 ns 0.382 ns 4
ssa e = "Test text";_stddev 0.005 ns 0.005 ns 4
ssa e = "Test text";_cv 1.41 % 1.41 % 4
stringa e = "Test text";_mean 1.15 ns 1.15 ns 4
stringa e = "Test text";_median 1.14 ns 1.14 ns 4
stringa e = "Test text";_stddev 0.029 ns 0.029 ns 4
stringa e = "Test text";_cv 2.50 % 2.50 % 4
lstringa<20> e = "Test text";_mean 1.90 ns 1.90 ns 4
lstringa<20> e = "Test text";_median 1.90 ns 1.90 ns 4
lstringa<20> e = "Test text";_stddev 0.045 ns 0.045 ns 4
lstringa<20> e = "Test text";_cv 2.37 % 2.36 % 4
lstringa<40> e = "Test text";_mean 1.88 ns 1.88 ns 4
lstringa<40> e = "Test text";_median 1.87 ns 1.87 ns 4
lstringa<40> e = "Test text";_stddev 0.046 ns 0.046 ns 4
lstringa<40> e = "Test text";_cv 2.46 % 2.46 % 4
----- 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 4
std::string e = "123456789012345678901234567890";_median 19.3 ns 19.3 ns 4
std::string e = "123456789012345678901234567890";_stddev 0.398 ns 0.398 ns 4
std::string e = "123456789012345678901234567890";_cv 2.04 % 2.04 % 4
std::string_view e = "123456789012345678901234567890";_mean 0.763 ns 0.763 ns 4
std::string_view e = "123456789012345678901234567890";_median 0.764 ns 0.764 ns 4
std::string_view e = "123456789012345678901234567890";_stddev 0.008 ns 0.008 ns 4
std::string_view e = "123456789012345678901234567890";_cv 1.10 % 1.10 % 4
ssa e = "123456789012345678901234567890";_mean 0.375 ns 0.375 ns 4
ssa e = "123456789012345678901234567890";_median 0.374 ns 0.374 ns 4
ssa e = "123456789012345678901234567890";_stddev 0.005 ns 0.005 ns 4
ssa e = "123456789012345678901234567890";_cv 1.45 % 1.45 % 4
stringa e = "123456789012345678901234567890";_mean 1.14 ns 1.14 ns 4
stringa e = "123456789012345678901234567890";_median 1.13 ns 1.13 ns 4
stringa e = "123456789012345678901234567890";_stddev 0.024 ns 0.024 ns 4
stringa e = "123456789012345678901234567890";_cv 2.13 % 2.13 % 4
lstringa<20> e = "123456789012345678901234567890";_mean 18.0 ns 18.0 ns 4
lstringa<20> e = "123456789012345678901234567890";_median 18.0 ns 18.0 ns 4
lstringa<20> e = "123456789012345678901234567890";_stddev 0.581 ns 0.581 ns 4
lstringa<20> e = "123456789012345678901234567890";_cv 3.22 % 3.22 % 4
lstringa<40> e = "123456789012345678901234567890";_mean 2.68 ns 2.68 ns 4
lstringa<40> e = "123456789012345678901234567890";_median 2.67 ns 2.67 ns 4
lstringa<40> e = "123456789012345678901234567890";_stddev 0.020 ns 0.020 ns 4
lstringa<40> e = "123456789012345678901234567890";_cv 0.73 % 0.73 % 4
----- 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.77 ns 5.77 ns 4
std::string e = "Test text"; auto c{e};_median 5.75 ns 5.75 ns 4
std::string e = "Test text"; auto c{e};_stddev 0.095 ns 0.095 ns 4
std::string e = "Test text"; auto c{e};_cv 1.64 % 1.64 % 4
std::string_view e = "Test text"; auto c{e};_mean 0.388 ns 0.388 ns 4
std::string_view e = "Test text"; auto c{e};_median 0.379 ns 0.379 ns 4
std::string_view e = "Test text"; auto c{e};_stddev 0.022 ns 0.022 ns 4
std::string_view e = "Test text"; auto c{e};_cv 5.79 % 5.79 % 4
ssa e = "Test text"; auto c{e};_mean 0.380 ns 0.380 ns 4
ssa e = "Test text"; auto c{e};_median 0.382 ns 0.382 ns 4
ssa e = "Test text"; auto c{e};_stddev 0.005 ns 0.005 ns 4
ssa e = "Test text"; auto c{e};_cv 1.43 % 1.43 % 4
stringa e = "Test text"; auto c{e};_mean 1.12 ns 1.12 ns 4
stringa e = "Test text"; auto c{e};_median 1.12 ns 1.12 ns 4
stringa e = "Test text"; auto c{e};_stddev 0.016 ns 0.016 ns 4
stringa e = "Test text"; auto c{e};_cv 1.46 % 1.46 % 4
lstringa<20> e = "Test text"; auto c{e};_mean 1.14 ns 1.14 ns 4
lstringa<20> e = "Test text"; auto c{e};_median 1.13 ns 1.13 ns 4
lstringa<20> e = "Test text"; auto c{e};_stddev 0.024 ns 0.024 ns 4
lstringa<20> e = "Test text"; auto c{e};_cv 2.13 % 2.13 % 4
lstringa<40> e = "Test text"; auto c{e};_mean 1.15 ns 1.15 ns 4
lstringa<40> e = "Test text"; auto c{e};_median 1.15 ns 1.15 ns 4
lstringa<40> e = "Test text"; auto c{e};_stddev 0.014 ns 0.014 ns 4
lstringa<40> e = "Test text"; auto c{e};_cv 1.19 % 1.19 % 4
----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890"; auto c{e};_mean 20.2 ns 20.2 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_median 20.2 ns 20.2 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_stddev 0.353 ns 0.353 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_cv 1.75 % 1.75 % 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.758 ns 0.758 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.754 ns 0.755 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.009 ns 0.009 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.19 % 1.19 % 4
ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.374 ns 0.374 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_median 0.374 ns 0.374 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.002 ns 0.002 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_cv 0.58 % 0.59 % 4
stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.14 ns 1.14 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_median 1.14 ns 1.14 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.014 ns 0.014 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_cv 1.23 % 1.23 % 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 19.1 ns 19.1 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 19.1 ns 19.1 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.086 ns 0.086 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 0.45 % 0.45 % 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.98 ns 4.98 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 5.03 ns 5.03 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.146 ns 0.146 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 2.94 % 2.94 % 4
----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
sz::string::find;_mean 95.9 ns 95.9 ns 4
sz::string::find;_median 95.8 ns 95.8 ns 4
sz::string::find;_stddev 1.48 ns 1.48 ns 4
sz::string::find;_cv 1.54 % 1.54 % 4
std::string::find;_mean 7.34 ns 7.34 ns 4
std::string::find;_median 7.33 ns 7.33 ns 4
std::string::find;_stddev 0.128 ns 0.128 ns 4
std::string::find;_cv 1.75 % 1.75 % 4
std::string_view::find;_mean 7.81 ns 7.81 ns 4
std::string_view::find;_median 7.78 ns 7.78 ns 4
std::string_view::find;_stddev 0.124 ns 0.124 ns 4
std::string_view::find;_cv 1.59 % 1.59 % 4
ssa::find;_mean 7.37 ns 7.37 ns 4
ssa::find;_median 7.37 ns 7.37 ns 4
ssa::find;_stddev 0.149 ns 0.149 ns 4
ssa::find;_cv 2.02 % 2.02 % 4
stringa::find;_mean 8.14 ns 8.14 ns 4
stringa::find;_median 8.14 ns 8.14 ns 4
stringa::find;_stddev 0.027 ns 0.027 ns 4
stringa::find;_cv 0.33 % 0.33 % 4
lstringa<20>::find;_mean 6.94 ns 6.94 ns 4
lstringa<20>::find;_median 6.90 ns 6.90 ns 4
lstringa<20>::find;_stddev 0.118 ns 0.118 ns 4
lstringa<20>::find;_cv 1.70 % 1.70 % 4
lstringa<40>::find;_mean 6.93 ns 6.93 ns 4
lstringa<40>::find;_median 6.92 ns 6.92 ns 4
lstringa<40>::find;_stddev 0.091 ns 0.091 ns 4
lstringa<40>::find;_cv 1.31 % 1.31 % 4
------- 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.78 ns 5.78 ns 4
std::string copy{str_with_len_N};/15_median 5.78 ns 5.78 ns 4
std::string copy{str_with_len_N};/15_stddev 0.153 ns 0.153 ns 4
std::string copy{str_with_len_N};/15_cv 2.64 % 2.64 % 4
std::string copy{str_with_len_N};/16_mean 24.5 ns 24.5 ns 4
std::string copy{str_with_len_N};/16_median 24.6 ns 24.6 ns 4
std::string copy{str_with_len_N};/16_stddev 1.08 ns 1.08 ns 4
std::string copy{str_with_len_N};/16_cv 4.42 % 4.42 % 4
std::string copy{str_with_len_N};/23_mean 28.5 ns 28.5 ns 4
std::string copy{str_with_len_N};/23_median 28.6 ns 28.6 ns 4
std::string copy{str_with_len_N};/23_stddev 0.346 ns 0.346 ns 4
std::string copy{str_with_len_N};/23_cv 1.21 % 1.21 % 4
std::string copy{str_with_len_N};/24_mean 23.3 ns 23.3 ns 4
std::string copy{str_with_len_N};/24_median 23.3 ns 23.3 ns 4
std::string copy{str_with_len_N};/24_stddev 0.222 ns 0.222 ns 4
std::string copy{str_with_len_N};/24_cv 0.95 % 0.95 % 4
std::string copy{str_with_len_N};/32_mean 23.2 ns 23.2 ns 4
std::string copy{str_with_len_N};/32_median 23.3 ns 23.3 ns 4
std::string copy{str_with_len_N};/32_stddev 0.377 ns 0.377 ns 4
std::string copy{str_with_len_N};/32_cv 1.62 % 1.62 % 4
std::string copy{str_with_len_N};/64_mean 23.3 ns 23.3 ns 4
std::string copy{str_with_len_N};/64_median 23.3 ns 23.3 ns 4
std::string copy{str_with_len_N};/64_stddev 0.320 ns 0.320 ns 4
std::string copy{str_with_len_N};/64_cv 1.37 % 1.37 % 4
std::string copy{str_with_len_N};/128_mean 24.9 ns 24.9 ns 4
std::string copy{str_with_len_N};/128_median 24.9 ns 24.9 ns 4
std::string copy{str_with_len_N};/128_stddev 0.584 ns 0.584 ns 4
std::string copy{str_with_len_N};/128_cv 2.34 % 2.34 % 4
std::string copy{str_with_len_N};/256_mean 26.0 ns 26.0 ns 4
std::string copy{str_with_len_N};/256_median 25.3 ns 25.3 ns 4
std::string copy{str_with_len_N};/256_stddev 1.69 ns 1.69 ns 4
std::string copy{str_with_len_N};/256_cv 6.53 % 6.53 % 4
std::string copy{str_with_len_N};/512_mean 29.4 ns 29.4 ns 4
std::string copy{str_with_len_N};/512_median 29.5 ns 29.5 ns 4
std::string copy{str_with_len_N};/512_stddev 0.683 ns 0.683 ns 4
std::string copy{str_with_len_N};/512_cv 2.32 % 2.32 % 4
std::string copy{str_with_len_N};/1024_mean 47.7 ns 47.7 ns 4
std::string copy{str_with_len_N};/1024_median 47.8 ns 47.8 ns 4
std::string copy{str_with_len_N};/1024_stddev 0.457 ns 0.457 ns 4
std::string copy{str_with_len_N};/1024_cv 0.96 % 0.96 % 4
std::string copy{str_with_len_N};/2048_mean 125 ns 125 ns 4
std::string copy{str_with_len_N};/2048_median 125 ns 125 ns 4
std::string copy{str_with_len_N};/2048_stddev 3.96 ns 3.96 ns 4
std::string copy{str_with_len_N};/2048_cv 3.17 % 3.17 % 4
std::string copy{str_with_len_N};/4096_mean 152 ns 152 ns 4
std::string copy{str_with_len_N};/4096_median 154 ns 154 ns 4
std::string copy{str_with_len_N};/4096_stddev 4.76 ns 4.76 ns 4
std::string copy{str_with_len_N};/4096_cv 3.13 % 3.13 % 4
stringa copy{str_with_len_N};/15_mean 1.12 ns 1.12 ns 4
stringa copy{str_with_len_N};/15_median 1.12 ns 1.12 ns 4
stringa copy{str_with_len_N};/15_stddev 0.013 ns 0.013 ns 4
stringa copy{str_with_len_N};/15_cv 1.17 % 1.17 % 4
stringa copy{str_with_len_N};/16_mean 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/16_median 1.12 ns 1.12 ns 4
stringa copy{str_with_len_N};/16_stddev 0.021 ns 0.021 ns 4
stringa copy{str_with_len_N};/16_cv 1.88 % 1.88 % 4
stringa copy{str_with_len_N};/23_mean 1.12 ns 1.12 ns 4
stringa copy{str_with_len_N};/23_median 1.12 ns 1.12 ns 4
stringa copy{str_with_len_N};/23_stddev 0.019 ns 0.019 ns 4
stringa copy{str_with_len_N};/23_cv 1.67 % 1.67 % 4
stringa copy{str_with_len_N};/24_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/24_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/24_stddev 0.135 ns 0.135 ns 4
stringa copy{str_with_len_N};/24_cv 0.82 % 0.82 % 4
stringa copy{str_with_len_N};/32_mean 16.3 ns 16.3 ns 4
stringa copy{str_with_len_N};/32_median 16.3 ns 16.3 ns 4
stringa copy{str_with_len_N};/32_stddev 0.180 ns 0.180 ns 4
stringa copy{str_with_len_N};/32_cv 1.10 % 1.10 % 4
stringa copy{str_with_len_N};/64_mean 16.3 ns 16.3 ns 4
stringa copy{str_with_len_N};/64_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/64_stddev 0.113 ns 0.113 ns 4
stringa copy{str_with_len_N};/64_cv 0.69 % 0.69 % 4
stringa copy{str_with_len_N};/128_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/128_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/128_stddev 0.085 ns 0.085 ns 4
stringa copy{str_with_len_N};/128_cv 0.52 % 0.52 % 4
stringa copy{str_with_len_N};/256_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/256_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/256_stddev 0.068 ns 0.068 ns 4
stringa copy{str_with_len_N};/256_cv 0.42 % 0.42 % 4
stringa copy{str_with_len_N};/512_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/512_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/512_stddev 0.072 ns 0.072 ns 4
stringa copy{str_with_len_N};/512_cv 0.44 % 0.44 % 4
stringa copy{str_with_len_N};/1024_mean 16.3 ns 16.3 ns 4
stringa copy{str_with_len_N};/1024_median 16.3 ns 16.3 ns 4
stringa copy{str_with_len_N};/1024_stddev 0.069 ns 0.069 ns 4
stringa copy{str_with_len_N};/1024_cv 0.42 % 0.42 % 4
stringa copy{str_with_len_N};/2048_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/2048_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/2048_stddev 0.041 ns 0.041 ns 4
stringa copy{str_with_len_N};/2048_cv 0.25 % 0.25 % 4
stringa copy{str_with_len_N};/4096_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/4096_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/4096_stddev 0.080 ns 0.080 ns 4
stringa copy{str_with_len_N};/4096_cv 0.49 % 0.49 % 4
lstringa<16> copy{str_with_len_N};/15_mean 1.14 ns 1.14 ns 4
lstringa<16> copy{str_with_len_N};/15_median 1.13 ns 1.13 ns 4
lstringa<16> copy{str_with_len_N};/15_stddev 0.024 ns 0.024 ns 4
lstringa<16> copy{str_with_len_N};/15_cv 2.09 % 2.09 % 4
lstringa<16> copy{str_with_len_N};/16_mean 5.10 ns 5.10 ns 4
lstringa<16> copy{str_with_len_N};/16_median 5.10 ns 5.10 ns 4
lstringa<16> copy{str_with_len_N};/16_stddev 0.076 ns 0.076 ns 4
lstringa<16> copy{str_with_len_N};/16_cv 1.49 % 1.49 % 4
lstringa<16> copy{str_with_len_N};/23_mean 5.16 ns 5.16 ns 4
lstringa<16> copy{str_with_len_N};/23_median 5.14 ns 5.14 ns 4
lstringa<16> copy{str_with_len_N};/23_stddev 0.062 ns 0.062 ns 4
lstringa<16> copy{str_with_len_N};/23_cv 1.21 % 1.21 % 4
lstringa<16> copy{str_with_len_N};/24_mean 21.9 ns 21.9 ns 4
lstringa<16> copy{str_with_len_N};/24_median 22.0 ns 22.0 ns 4
lstringa<16> copy{str_with_len_N};/24_stddev 0.377 ns 0.377 ns 4
lstringa<16> copy{str_with_len_N};/24_cv 1.72 % 1.72 % 4
lstringa<16> copy{str_with_len_N};/32_mean 22.1 ns 22.1 ns 4
lstringa<16> copy{str_with_len_N};/32_median 22.0 ns 22.0 ns 4
lstringa<16> copy{str_with_len_N};/32_stddev 0.310 ns 0.310 ns 4
lstringa<16> copy{str_with_len_N};/32_cv 1.41 % 1.41 % 4
lstringa<16> copy{str_with_len_N};/64_mean 23.4 ns 23.4 ns 4
lstringa<16> copy{str_with_len_N};/64_median 23.3 ns 23.3 ns 4
lstringa<16> copy{str_with_len_N};/64_stddev 0.348 ns 0.348 ns 4
lstringa<16> copy{str_with_len_N};/64_cv 1.49 % 1.49 % 4
lstringa<16> copy{str_with_len_N};/128_mean 24.5 ns 24.5 ns 4
lstringa<16> copy{str_with_len_N};/128_median 24.6 ns 24.6 ns 4
lstringa<16> copy{str_with_len_N};/128_stddev 0.410 ns 0.410 ns 4
lstringa<16> copy{str_with_len_N};/128_cv 1.67 % 1.67 % 4
lstringa<16> copy{str_with_len_N};/256_mean 25.4 ns 25.4 ns 4
lstringa<16> copy{str_with_len_N};/256_median 25.4 ns 25.4 ns 4
lstringa<16> copy{str_with_len_N};/256_stddev 0.347 ns 0.347 ns 4
lstringa<16> copy{str_with_len_N};/256_cv 1.37 % 1.37 % 4
lstringa<16> copy{str_with_len_N};/512_mean 28.6 ns 28.6 ns 4
lstringa<16> copy{str_with_len_N};/512_median 28.6 ns 28.6 ns 4
lstringa<16> copy{str_with_len_N};/512_stddev 0.490 ns 0.490 ns 4
lstringa<16> copy{str_with_len_N};/512_cv 1.71 % 1.71 % 4
lstringa<16> copy{str_with_len_N};/1024_mean 98.9 ns 98.9 ns 4
lstringa<16> copy{str_with_len_N};/1024_median 97.3 ns 97.3 ns 4
lstringa<16> copy{str_with_len_N};/1024_stddev 5.56 ns 5.56 ns 4
lstringa<16> copy{str_with_len_N};/1024_cv 5.62 % 5.62 % 4
lstringa<16> copy{str_with_len_N};/2048_mean 103 ns 103 ns 4
lstringa<16> copy{str_with_len_N};/2048_median 103 ns 103 ns 4
lstringa<16> copy{str_with_len_N};/2048_stddev 1.53 ns 1.53 ns 4
lstringa<16> copy{str_with_len_N};/2048_cv 1.48 % 1.48 % 4
lstringa<16> copy{str_with_len_N};/4096_mean 122 ns 122 ns 4
lstringa<16> copy{str_with_len_N};/4096_median 121 ns 121 ns 4
lstringa<16> copy{str_with_len_N};/4096_stddev 5.22 ns 5.22 ns 4
lstringa<16> copy{str_with_len_N};/4096_cv 4.29 % 4.29 % 4
lstringa<512> copy{str_with_len_N};/15_mean 1.13 ns 1.13 ns 4
lstringa<512> copy{str_with_len_N};/15_median 1.13 ns 1.13 ns 4
lstringa<512> copy{str_with_len_N};/15_stddev 0.011 ns 0.011 ns 4
lstringa<512> copy{str_with_len_N};/15_cv 0.95 % 0.95 % 4
lstringa<512> copy{str_with_len_N};/16_mean 5.00 ns 5.00 ns 4
lstringa<512> copy{str_with_len_N};/16_median 5.05 ns 5.05 ns 4
lstringa<512> copy{str_with_len_N};/16_stddev 0.126 ns 0.126 ns 4
lstringa<512> copy{str_with_len_N};/16_cv 2.52 % 2.52 % 4
lstringa<512> copy{str_with_len_N};/23_mean 4.92 ns 4.92 ns 4
lstringa<512> copy{str_with_len_N};/23_median 4.87 ns 4.87 ns 4
lstringa<512> copy{str_with_len_N};/23_stddev 0.113 ns 0.113 ns 4
lstringa<512> copy{str_with_len_N};/23_cv 2.30 % 2.30 % 4
lstringa<512> copy{str_with_len_N};/24_mean 29.6 ns 29.6 ns 4
lstringa<512> copy{str_with_len_N};/24_median 29.5 ns 29.5 ns 4
lstringa<512> copy{str_with_len_N};/24_stddev 0.353 ns 0.353 ns 4
lstringa<512> copy{str_with_len_N};/24_cv 1.19 % 1.19 % 4
lstringa<512> copy{str_with_len_N};/32_mean 29.6 ns 29.6 ns 4
lstringa<512> copy{str_with_len_N};/32_median 29.6 ns 29.6 ns 4
lstringa<512> copy{str_with_len_N};/32_stddev 0.133 ns 0.133 ns 4
lstringa<512> copy{str_with_len_N};/32_cv 0.45 % 0.45 % 4
lstringa<512> copy{str_with_len_N};/64_mean 30.2 ns 30.2 ns 4
lstringa<512> copy{str_with_len_N};/64_median 30.2 ns 30.2 ns 4
lstringa<512> copy{str_with_len_N};/64_stddev 0.095 ns 0.095 ns 4
lstringa<512> copy{str_with_len_N};/64_cv 0.31 % 0.31 % 4
lstringa<512> copy{str_with_len_N};/128_mean 30.5 ns 30.5 ns 4
lstringa<512> copy{str_with_len_N};/128_median 30.5 ns 30.5 ns 4
lstringa<512> copy{str_with_len_N};/128_stddev 0.108 ns 0.108 ns 4
lstringa<512> copy{str_with_len_N};/128_cv 0.35 % 0.35 % 4
lstringa<512> copy{str_with_len_N};/256_mean 21.7 ns 21.7 ns 4
lstringa<512> copy{str_with_len_N};/256_median 21.7 ns 21.7 ns 4
lstringa<512> copy{str_with_len_N};/256_stddev 0.257 ns 0.257 ns 4
lstringa<512> copy{str_with_len_N};/256_cv 1.19 % 1.19 % 4
lstringa<512> copy{str_with_len_N};/512_mean 24.7 ns 24.7 ns 4
lstringa<512> copy{str_with_len_N};/512_median 24.6 ns 24.6 ns 4
lstringa<512> copy{str_with_len_N};/512_stddev 0.267 ns 0.267 ns 4
lstringa<512> copy{str_with_len_N};/512_cv 1.08 % 1.08 % 4
lstringa<512> copy{str_with_len_N};/1024_mean 96.9 ns 96.9 ns 4
lstringa<512> copy{str_with_len_N};/1024_median 96.8 ns 96.8 ns 4
lstringa<512> copy{str_with_len_N};/1024_stddev 1.87 ns 1.87 ns 4
lstringa<512> copy{str_with_len_N};/1024_cv 1.93 % 1.93 % 4
lstringa<512> copy{str_with_len_N};/2048_mean 106 ns 106 ns 4
lstringa<512> copy{str_with_len_N};/2048_median 107 ns 107 ns 4
lstringa<512> copy{str_with_len_N};/2048_stddev 2.33 ns 2.33 ns 4
lstringa<512> copy{str_with_len_N};/2048_cv 2.20 % 2.20 % 4
lstringa<512> copy{str_with_len_N};/4096_mean 123 ns 123 ns 4
lstringa<512> copy{str_with_len_N};/4096_median 123 ns 123 ns 4
lstringa<512> copy{str_with_len_N};/4096_stddev 1.45 ns 1.45 ns 4
lstringa<512> copy{str_with_len_N};/4096_cv 1.19 % 1.19 % 4
----- 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.9 ns 26.9 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 26.9 ns 26.9 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.215 ns 0.215 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 0.80 % 0.80 % 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 14.9 ns 14.9 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 14.9 ns 14.9 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.293 ns 0.293 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 1.97 % 1.97 % 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 9.36 ns 9.36 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 9.36 ns 9.36 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.047 ns 0.047 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 0.50 % 0.50 % 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 9.52 ns 9.52 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 9.50 ns 9.50 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.079 ns 0.079 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 0.83 % 0.83 % 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 9.61 ns 9.61 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_median 9.59 ns 9.59 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.146 ns 0.146 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 1.52 % 1.52 % 4
----- Convert to unsigned 'abcDef' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 24.5 ns 24.5 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 24.4 ns 24.4 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.615 ns 0.615 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 2.51 % 2.51 % 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.59 ns 9.59 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.63 ns 9.63 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.166 ns 0.166 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 1.73 % 1.73 % 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 8.04 ns 8.04 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 8.04 ns 8.04 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.114 ns 0.114 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.41 % 1.41 % 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 7.57 ns 7.57 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 7.52 ns 7.52 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.139 ns 0.139 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.84 % 1.84 % 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 7.82 ns 7.82 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 7.82 ns 7.82 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.025 ns 0.025 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 0.32 % 0.32 % 4
----- 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.2 ns 29.2 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 29.1 ns 29.1 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 1.09 ns 1.09 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 3.74 % 3.74 % 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_mean 11.0 ns 11.0 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_median 11.0 ns 11.0 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_stddev 0.152 ns 0.152 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_cv 1.39 % 1.39 % 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_mean 13.3 ns 13.3 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_median 13.2 ns 13.2 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_stddev 0.137 ns 0.137 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_cv 1.03 % 1.03 % 4
----- 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 66.6 ns 66.6 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 66.0 ns 66.0 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 1.62 ns 1.62 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 2.43 % 2.43 % 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 24.5 ns 24.5 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 24.5 ns 24.5 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 0.348 ns 0.348 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 1.42 % 1.42 % 4
ssa s = "1234.567e10"; double res = *s.to_double()_mean 26.8 ns 26.8 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_median 26.8 ns 26.8 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.384 ns 0.384 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_cv 1.43 % 1.43 % 4
-- 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 1424 ns 1424 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_median 1429 ns 1429 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 35.2 ns 35.2 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_cv 2.47 % 2.47 % 4
std::string str; ... str += "abbaabbaabbaabba";_mean 445 ns 445 ns 4
std::string str; ... str += "abbaabbaabbaabba";_median 446 ns 446 ns 4
std::string str; ... str += "abbaabbaabbaabba";_stddev 7.09 ns 7.08 ns 4
std::string str; ... str += "abbaabbaabbaabba";_cv 1.59 % 1.59 % 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 388 ns 388 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_median 388 ns 388 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 3.37 ns 3.37 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 0.87 % 0.87 % 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 276 ns 276 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_median 278 ns 278 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 7.15 ns 7.15 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 2.59 % 2.59 % 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 219 ns 219 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_median 224 ns 224 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 11.1 ns 11.1 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 5.04 % 5.04 % 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 137 ns 137 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 137 ns 137 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 0.634 ns 0.634 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 0.46 % 0.46 % 4
-- 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 1426 ns 1426 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1428 ns 1428 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 39.2 ns 39.2 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 2.75 % 2.75 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1288 ns 1288 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1289 ns 1289 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 12.9 ns 12.9 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 1.01 % 1.01 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 426 ns 426 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 426 ns 426 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 5.08 ns 5.08 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.19 % 1.19 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 340 ns 340 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 346 ns 346 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 14.2 ns 14.2 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 4.17 % 4.17 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 313 ns 313 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 314 ns 314 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 11.6 ns 11.6 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.71 % 3.71 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 217 ns 217 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 218 ns 218 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 6.95 ns 6.95 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.21 % 3.21 % 4
-- 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 75809 ns 75810 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 75636 ns 75637 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 1270 ns 1270 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 1.68 % 1.68 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 73098 ns 73098 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 73402 ns 73402 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1487 ns 1487 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.03 % 2.03 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 19767 ns 19767 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 19715 ns 19715 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 326 ns 326 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.65 % 1.65 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17379 ns 17379 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17356 ns 17356 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 164 ns 164 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 0.94 % 0.94 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16895 ns 16895 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16961 ns 16961 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 186 ns 186 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.10 % 1.10 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17082 ns 17082 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17027 ns 17027 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 244 ns 244 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.43 % 1.43 % 4
-- 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 1469 ns 1469 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_median 1481 ns 1481 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_stddev 31.4 ns 31.4 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_cv 2.14 % 2.14 % 4
std::string str; ... str += str_var1 + str_var2;_mean 1415 ns 1415 ns 4
std::string str; ... str += str_var1 + str_var2;_median 1404 ns 1404 ns 4
std::string str; ... str += str_var1 + str_var2;_stddev 26.0 ns 26.0 ns 4
std::string str; ... str += str_var1 + str_var2;_cv 1.84 % 1.84 % 4
lstringa<16> str; ... str += str_var1 + str_var2;_mean 527 ns 527 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_median 525 ns 525 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_stddev 8.07 ns 8.07 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_cv 1.53 % 1.53 % 4
lstringa<128> str; ... str += str_var1 + str_var2;_mean 465 ns 465 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_median 469 ns 469 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_stddev 22.5 ns 22.5 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_cv 4.85 % 4.85 % 4
lstringa<512> str; ... str += str_var1 + str_var2;_mean 408 ns 408 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_median 415 ns 415 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_stddev 20.7 ns 20.7 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_cv 5.06 % 5.06 % 4
lstringa<1024> str; ... str += str_var1 + str_var2;_mean 309 ns 309 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_median 310 ns 310 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 3.18 ns 3.18 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_cv 1.03 % 1.03 % 4
-- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::stringstream str; str << "test = " << k << " times";_mean 3067 ns 3067 ns 4
std::stringstream str; str << "test = " << k << " times";_median 3055 ns 3055 ns 4
std::stringstream str; str << "test = " << k << " times";_stddev 47.1 ns 47.1 ns 4
std::stringstream str; str << "test = " << k << " times";_cv 1.54 % 1.54 % 4
std::string str = "test = " + std::to_string(k) + " times";_mean 457 ns 457 ns 4
std::string str = "test = " + std::to_string(k) + " times";_median 457 ns 457 ns 4
std::string str = "test = " + std::to_string(k) + " times";_stddev 4.69 ns 4.69 ns 4
std::string str = "test = " + std::to_string(k) + " times";_cv 1.03 % 1.03 % 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1393 ns 1393 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1390 ns 1390 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 25.7 ns 25.6 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 1.84 % 1.84 % 4
std::string str = std::format("test = {} times", k);_mean 1140 ns 1140 ns 4
std::string str = std::format("test = {} times", k);_median 1150 ns 1150 ns 4
std::string str = std::format("test = {} times", k);_stddev 32.3 ns 32.3 ns 4
std::string str = std::format("test = {} times", k);_cv 2.83 % 2.83 % 4
lstringa<8> str; str.format("test = {} times", k);_mean 1356 ns 1356 ns 4
lstringa<8> str; str.format("test = {} times", k);_median 1349 ns 1349 ns 4
lstringa<8> str; str.format("test = {} times", k);_stddev 39.1 ns 39.1 ns 4
lstringa<8> str; str.format("test = {} times", k);_cv 2.88 % 2.88 % 4
lstringa<32> str; str.format("test = {} times", k);_mean 1002 ns 1003 ns 4
lstringa<32> str; str.format("test = {} times", k);_median 1005 ns 1005 ns 4
lstringa<32> str; str.format("test = {} times", k);_stddev 24.7 ns 24.7 ns 4
lstringa<32> str; str.format("test = {} times", k);_cv 2.46 % 2.46 % 4
lstringa<8> str = "test = " + k + " times";_mean 262 ns 262 ns 4
lstringa<8> str = "test = " + k + " times";_median 261 ns 261 ns 4
lstringa<8> str = "test = " + k + " times";_stddev 3.40 ns 3.40 ns 4
lstringa<8> str = "test = " + k + " times";_cv 1.30 % 1.30 % 4
lstringa<32> str = "test = " + k + " times";_mean 126 ns 126 ns 4
lstringa<32> str = "test = " + k + " times";_median 126 ns 126 ns 4
lstringa<32> str = "test = " + k + " times";_stddev 0.511 ns 0.511 ns 4
lstringa<32> str = "test = " + k + " times";_cv 0.40 % 0.40 % 4
stringa str = "test = " + k + " times";_mean 124 ns 124 ns 4
stringa str = "test = " + k + " times";_median 124 ns 124 ns 4
stringa str = "test = " + k + " times";_stddev 3.39 ns 3.39 ns 4
stringa str = "test = " + k + " times";_cv 2.74 % 2.74 % 4
-- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string::find + substr + std::strtol_mean 270 ns 270 ns 4
std::string::find + substr + std::strtol_median 268 ns 268 ns 4
std::string::find + substr + std::strtol_stddev 7.54 ns 7.54 ns 4
std::string::find + substr + std::strtol_cv 2.79 % 2.79 % 4
ssa::splitter + ssa::as_int_mean 156 ns 156 ns 4
ssa::splitter + ssa::as_int_median 156 ns 156 ns 4
ssa::splitter + ssa::as_int_stddev 1.99 ns 1.99 ns 4
ssa::splitter + ssa::as_int_cv 1.28 % 1.28 % 4
ssa::splitf + functor_mean 207 ns 207 ns 4
ssa::splitf + functor_median 207 ns 207 ns 4
ssa::splitf + functor_stddev 2.33 ns 2.33 ns 4
ssa::splitf + functor_cv 1.12 % 1.12 % 4
-- 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 844 ns 844 ns 4
Naive (and wrong) replace symbols with std::string find + replace_median 846 ns 846 ns 4
Naive (and wrong) replace symbols with std::string find + replace_stddev 8.40 ns 8.40 ns 4
Naive (and wrong) replace symbols with std::string find + replace_cv 1.00 % 1.00 % 4
replace symbols with std::string find_first_of + replace_mean 2647 ns 2647 ns 4
replace symbols with std::string find_first_of + replace_median 2649 ns 2649 ns 4
replace symbols with std::string find_first_of + replace_stddev 41.4 ns 41.4 ns 4
replace symbols with std::string find_first_of + replace_cv 1.56 % 1.56 % 4
replace symbols with std::string_view find_first_of + copy_mean 1123 ns 1123 ns 4
replace symbols with std::string_view find_first_of + copy_median 1119 ns 1119 ns 4
replace symbols with std::string_view find_first_of + copy_stddev 27.0 ns 27.0 ns 4
replace symbols with std::string_view find_first_of + copy_cv 2.40 % 2.40 % 4
replace runtime symbols with string expressions and without remembering all search results_mean 1273 ns 1273 ns 4
replace runtime symbols with string expressions and without remembering all search results_median 1269 ns 1269 ns 4
replace runtime symbols with string expressions and without remembering all search results_stddev 42.9 ns 42.9 ns 4
replace runtime symbols with string expressions and without remembering all search results_cv 3.37 % 3.37 % 4
replace runtime symbols with simstr and memorization of all search results_mean 1067 ns 1067 ns 4
replace runtime symbols with simstr and memorization of all search results_median 1068 ns 1068 ns 4
replace runtime symbols with simstr and memorization of all search results_stddev 9.03 ns 9.03 ns 4
replace runtime symbols with simstr and memorization of all search results_cv 0.85 % 0.85 % 4
replace const symbols with string expressions and without remembering all search results_mean 1029 ns 1029 ns 4
replace const symbols with string expressions and without remembering all search results_median 1021 ns 1021 ns 4
replace const symbols with string expressions and without remembering all search results_stddev 24.0 ns 24.0 ns 4
replace const symbols with string expressions and without remembering all search results_cv 2.33 % 2.33 % 4
replace const symbols with string expressions and memorization of all search results_mean 887 ns 887 ns 4
replace const symbols with string expressions and memorization of all search results_median 884 ns 884 ns 4
replace const symbols with string expressions and memorization of all search results_stddev 19.8 ns 19.8 ns 4
replace const symbols with string expressions and memorization of all search results_cv 2.23 % 2.23 % 4
-- 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 166 ns 166 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_median 166 ns 166 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_stddev 1.88 ns 1.88 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_cv 1.13 % 1.13 % 4
Short replace symbols with std::string find_first_of + replace_mean 334 ns 334 ns 4
Short replace symbols with std::string find_first_of + replace_median 334 ns 334 ns 4
Short replace symbols with std::string find_first_of + replace_stddev 5.22 ns 5.23 ns 4
Short replace symbols with std::string find_first_of + replace_cv 1.57 % 1.57 % 4
Short replace symbols with std::string_view find_first_of + copy_mean 154 ns 154 ns 4
Short replace symbols with std::string_view find_first_of + copy_median 152 ns 152 ns 4
Short replace symbols with std::string_view find_first_of + copy_stddev 4.50 ns 4.50 ns 4
Short replace symbols with std::string_view find_first_of + copy_cv 2.92 % 2.92 % 4
Short replace runtime symbols with string expressions and without remembering all search results_mean 169 ns 169 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_median 169 ns 169 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_stddev 2.26 ns 2.26 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_cv 1.34 % 1.34 % 4
Short replace runtime symbols with simstr and memorization of all search results_mean 201 ns 201 ns 4
Short replace runtime symbols with simstr and memorization of all search results_median 200 ns 200 ns 4
Short replace runtime symbols with simstr and memorization of all search results_stddev 2.87 ns 2.87 ns 4
Short replace runtime symbols with simstr and memorization of all search results_cv 1.43 % 1.43 % 4
Short replace const symbols with string expressions and without remembering all search results_mean 130 ns 130 ns 4
Short replace const symbols with string expressions and without remembering all search results_median 131 ns 131 ns 4
Short replace const symbols with string expressions and without remembering all search results_stddev 2.75 ns 2.75 ns 4
Short replace const symbols with string expressions and without remembering all search results_cv 2.12 % 2.12 % 4
Short replace const symbols with string expressions and memorization of all search results_mean 145 ns 145 ns 4
Short replace const symbols with string expressions and memorization of all search results_median 145 ns 145 ns 4
Short replace const symbols with string expressions and memorization of all search results_stddev 1.24 ns 1.24 ns 4
Short replace const symbols with string expressions and memorization of all search results_cv 0.85 % 0.85 % 4
----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to ---- in std::string|64_mean 151 ns 151 ns 4
replace bb to ---- in std::string|64_median 150 ns 150 ns 4
replace bb to ---- in std::string|64_stddev 2.03 ns 2.03 ns 4
replace bb to ---- in std::string|64_cv 1.34 % 1.34 % 4
replace bb to ---- in std::string|256_mean 603 ns 603 ns 4
replace bb to ---- in std::string|256_median 600 ns 600 ns 4
replace bb to ---- in std::string|256_stddev 7.38 ns 7.38 ns 4
replace bb to ---- in std::string|256_cv 1.22 % 1.22 % 4
replace bb to ---- in std::string|512_mean 1060 ns 1060 ns 4
replace bb to ---- in std::string|512_median 1058 ns 1058 ns 4
replace bb to ---- in std::string|512_stddev 32.9 ns 32.9 ns 4
replace bb to ---- in std::string|512_cv 3.10 % 3.10 % 4
replace bb to ---- in std::string|1024_mean 2332 ns 2332 ns 4
replace bb to ---- in std::string|1024_median 2323 ns 2323 ns 4
replace bb to ---- in std::string|1024_stddev 156 ns 156 ns 4
replace bb to ---- in std::string|1024_cv 6.71 % 6.71 % 4
replace bb to ---- in std::string|2048_mean 5851 ns 5851 ns 4
replace bb to ---- in std::string|2048_median 5742 ns 5742 ns 4
replace bb to ---- in std::string|2048_stddev 405 ns 405 ns 4
replace bb to ---- in std::string|2048_cv 6.92 % 6.92 % 4
replace bb to ---- in lstringa<8>|64_mean 127 ns 127 ns 4
replace bb to ---- in lstringa<8>|64_median 126 ns 126 ns 4
replace bb to ---- in lstringa<8>|64_stddev 1.74 ns 1.74 ns 4
replace bb to ---- in lstringa<8>|64_cv 1.37 % 1.37 % 4
replace bb to ---- in lstringa<8>|256_mean 442 ns 442 ns 4
replace bb to ---- in lstringa<8>|256_median 439 ns 439 ns 4
replace bb to ---- in lstringa<8>|256_stddev 9.86 ns 9.86 ns 4
replace bb to ---- in lstringa<8>|256_cv 2.23 % 2.23 % 4
replace bb to ---- in lstringa<8>|512_mean 831 ns 831 ns 4
replace bb to ---- in lstringa<8>|512_median 832 ns 832 ns 4
replace bb to ---- in lstringa<8>|512_stddev 13.7 ns 13.7 ns 4
replace bb to ---- in lstringa<8>|512_cv 1.65 % 1.65 % 4
replace bb to ---- in lstringa<8>|1024_mean 1698 ns 1698 ns 4
replace bb to ---- in lstringa<8>|1024_median 1696 ns 1696 ns 4
replace bb to ---- in lstringa<8>|1024_stddev 26.9 ns 26.9 ns 4
replace bb to ---- in lstringa<8>|1024_cv 1.59 % 1.59 % 4
replace bb to ---- in lstringa<8>|2048_mean 3256 ns 3256 ns 4
replace bb to ---- in lstringa<8>|2048_median 3280 ns 3280 ns 4
replace bb to ---- in lstringa<8>|2048_stddev 73.1 ns 73.1 ns 4
replace bb to ---- in lstringa<8>|2048_cv 2.25 % 2.25 % 4
replace bb to ---- by init stringa|64_mean 91.5 ns 91.5 ns 4
replace bb to ---- by init stringa|64_median 91.9 ns 91.9 ns 4
replace bb to ---- by init stringa|64_stddev 3.42 ns 3.42 ns 4
replace bb to ---- by init stringa|64_cv 3.74 % 3.74 % 4
replace bb to ---- by init stringa|256_mean 306 ns 306 ns 4
replace bb to ---- by init stringa|256_median 305 ns 305 ns 4
replace bb to ---- by init stringa|256_stddev 7.25 ns 7.25 ns 4
replace bb to ---- by init stringa|256_cv 2.37 % 2.37 % 4
replace bb to ---- by init stringa|512_mean 718 ns 718 ns 4
replace bb to ---- by init stringa|512_median 719 ns 719 ns 4
replace bb to ---- by init stringa|512_stddev 7.71 ns 7.71 ns 4
replace bb to ---- by init stringa|512_cv 1.07 % 1.07 % 4
replace bb to ---- by init stringa|1024_mean 1629 ns 1629 ns 4
replace bb to ---- by init stringa|1024_median 1626 ns 1626 ns 4
replace bb to ---- by init stringa|1024_stddev 21.1 ns 21.1 ns 4
replace bb to ---- by init stringa|1024_cv 1.30 % 1.30 % 4
replace bb to ---- by init stringa|2048_mean 3400 ns 3400 ns 4
replace bb to ---- by init stringa|2048_median 3411 ns 3411 ns 4
replace bb to ---- by init stringa|2048_stddev 57.0 ns 57.0 ns 4
replace bb to ---- by init stringa|2048_cv 1.68 % 1.68 % 4
----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to -- in std::string|64_mean 114 ns 114 ns 4
replace bb to -- in std::string|64_median 113 ns 113 ns 4
replace bb to -- in std::string|64_stddev 3.00 ns 3.00 ns 4
replace bb to -- in std::string|64_cv 2.62 % 2.62 % 4
replace bb to -- in std::string|256_mean 390 ns 390 ns 4
replace bb to -- in std::string|256_median 391 ns 391 ns 4
replace bb to -- in std::string|256_stddev 6.46 ns 6.46 ns 4
replace bb to -- in std::string|256_cv 1.66 % 1.66 % 4
replace bb to -- in std::string|512_mean 743 ns 743 ns 4
replace bb to -- in std::string|512_median 741 ns 741 ns 4
replace bb to -- in std::string|512_stddev 7.17 ns 7.17 ns 4
replace bb to -- in std::string|512_cv 0.97 % 0.97 % 4
replace bb to -- in std::string|1024_mean 1477 ns 1477 ns 4
replace bb to -- in std::string|1024_median 1477 ns 1477 ns 4
replace bb to -- in std::string|1024_stddev 22.5 ns 22.5 ns 4
replace bb to -- in std::string|1024_cv 1.52 % 1.52 % 4
replace bb to -- in std::string|2048_mean 2929 ns 2929 ns 4
replace bb to -- in std::string|2048_median 2932 ns 2932 ns 4
replace bb to -- in std::string|2048_stddev 32.1 ns 32.1 ns 4
replace bb to -- in std::string|2048_cv 1.09 % 1.09 % 4
replace bb to -- in lstringa<8>|64_mean 89.2 ns 89.2 ns 4
replace bb to -- in lstringa<8>|64_median 88.6 ns 88.6 ns 4
replace bb to -- in lstringa<8>|64_stddev 1.62 ns 1.62 ns 4
replace bb to -- in lstringa<8>|64_cv 1.82 % 1.82 % 4
replace bb to -- in lstringa<8>|256_mean 295 ns 295 ns 4
replace bb to -- in lstringa<8>|256_median 296 ns 296 ns 4
replace bb to -- in lstringa<8>|256_stddev 5.80 ns 5.80 ns 4
replace bb to -- in lstringa<8>|256_cv 1.97 % 1.97 % 4
replace bb to -- in lstringa<8>|512_mean 553 ns 553 ns 4
replace bb to -- in lstringa<8>|512_median 547 ns 547 ns 4
replace bb to -- in lstringa<8>|512_stddev 15.1 ns 14.9 ns 4
replace bb to -- in lstringa<8>|512_cv 2.72 % 2.69 % 4
replace bb to -- in lstringa<8>|1024_mean 1122 ns 1122 ns 4
replace bb to -- in lstringa<8>|1024_median 1112 ns 1112 ns 4
replace bb to -- in lstringa<8>|1024_stddev 33.2 ns 33.2 ns 4
replace bb to -- in lstringa<8>|1024_cv 2.96 % 2.96 % 4
replace bb to -- in lstringa<8>|2048_mean 2088 ns 2088 ns 4
replace bb to -- in lstringa<8>|2048_median 2076 ns 2076 ns 4
replace bb to -- in lstringa<8>|2048_stddev 33.4 ns 33.4 ns 4
replace bb to -- in lstringa<8>|2048_cv 1.60 % 1.60 % 4
replace bb to -- by init stringa|64_mean 73.9 ns 73.9 ns 4
replace bb to -- by init stringa|64_median 74.1 ns 74.1 ns 4
replace bb to -- by init stringa|64_stddev 1.95 ns 1.95 ns 4
replace bb to -- by init stringa|64_cv 2.63 % 2.63 % 4
replace bb to -- by init stringa|256_mean 240 ns 240 ns 4
replace bb to -- by init stringa|256_median 240 ns 240 ns 4
replace bb to -- by init stringa|256_stddev 3.28 ns 3.28 ns 4
replace bb to -- by init stringa|256_cv 1.37 % 1.37 % 4
replace bb to -- by init stringa|512_mean 434 ns 434 ns 4
replace bb to -- by init stringa|512_median 434 ns 434 ns 4
replace bb to -- by init stringa|512_stddev 4.69 ns 4.69 ns 4
replace bb to -- by init stringa|512_cv 1.08 % 1.08 % 4
replace bb to -- by init stringa|1024_mean 898 ns 898 ns 4
replace bb to -- by init stringa|1024_median 897 ns 897 ns 4
replace bb to -- by init stringa|1024_stddev 22.5 ns 22.5 ns 4
replace bb to -- by init stringa|1024_cv 2.51 % 2.51 % 4
replace bb to -- by init stringa|2048_mean 1709 ns 1709 ns 4
replace bb to -- by init stringa|2048_median 1711 ns 1711 ns 4
replace bb to -- by init stringa|2048_stddev 28.4 ns 28.4 ns 4
replace bb to -- by init stringa|2048_cv 1.66 % 1.66 % 4
----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
hashStrMapA<size_t> emplace & find stringa;_mean 3754473 ns 3754484 ns 4
hashStrMapA<size_t> emplace & find stringa;_median 3770505 ns 3770516 ns 4
hashStrMapA<size_t> emplace & find stringa;_stddev 44910 ns 44913 ns 4
hashStrMapA<size_t> emplace & find stringa;_cv 1.20 % 1.20 % 4
std::unordered_map<std::string, size_t> emplace & find std::string;_mean 3584569 ns 3584594 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_median 3584871 ns 3584864 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_stddev 54232 ns 54206 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_cv 1.51 % 1.51 % 4
hashStrMapA<size_t> emplace & find ssa;_mean 3718652 ns 3718652 ns 4
hashStrMapA<size_t> emplace & find ssa;_median 3722300 ns 3722310 ns 4
hashStrMapA<size_t> emplace & find ssa;_stddev 63421 ns 63405 ns 4
hashStrMapA<size_t> emplace & find ssa;_cv 1.71 % 1.71 % 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_mean 4196609 ns 4196628 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_median 4205044 ns 4205067 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_stddev 39442 ns 39443 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_cv 0.94 % 0.94 % 4
----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Build func full name std::string;_mean 673 ns 673 ns 4
Build func full name std::string;_median 673 ns 673 ns 4
Build func full name std::string;_stddev 6.64 ns 6.64 ns 4
Build func full name std::string;_cv 0.99 % 0.99 % 4
Build func full name std::string 1;_mean 768 ns 768 ns 4
Build func full name std::string 1;_median 770 ns 770 ns 4
Build func full name std::string 1;_stddev 19.1 ns 19.1 ns 4
Build func full name std::string 1;_cv 2.49 % 2.49 % 4
Build func full name std::stream;_mean 3165 ns 3165 ns 4
Build func full name std::stream;_median 3169 ns 3169 ns 4
Build func full name std::stream;_stddev 34.1 ns 34.1 ns 4
Build func full name std::stream;_cv 1.08 % 1.08 % 4
Build func full name stringa;_mean 472 ns 472 ns 4
Build func full name stringa;_median 474 ns 474 ns 4
Build func full name stringa;_stddev 10.3 ns 10.3 ns 4
Build func full name stringa;_cv 2.18 % 2.18 % 4
Build func full name stringa 1;_mean 616 ns 616 ns 4
Build func full name stringa 1;_median 600 ns 600 ns 4
Build func full name stringa 1;_stddev 37.3 ns 37.3 ns 4
Build func full name stringa 1;_cv 6.06 % 6.06 % 4
----- Make Upper ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
To upper case std::wstring_mean 162 ns 162 ns 4
To upper case std::wstring_median 161 ns 161 ns 4
To upper case std::wstring_stddev 3.72 ns 3.72 ns 4
To upper case std::wstring_cv 2.29 % 2.29 % 4
To upper case lstringw<15>_mean 43.7 ns 43.7 ns 4
To upper case lstringw<15>_median 42.9 ns 42.9 ns 4
To upper case lstringw<15>_stddev 1.64 ns 1.64 ns 4
To upper case lstringw<15>_cv 3.75 % 3.75 % 4

View File

@ -0,0 +1,989 @@
Benchmarks of simstr, version 1.8.1
Sources: https://github.com/orefkov/simstr
Results: https://orefkov.github.io/simstr/results.html
Compiler Clang 22.0.0, use libc++
2026-03-22T13:31:21+03:00
Running ./benchStr
Run on (32 X 2494.22 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x16)
L1 Instruction 32 KiB (x16)
L2 Unified 256 KiB (x16)
L3 Unified 40960 KiB (x1)
Load Average: 0.28, 0.77, 0.74
***WARNING*** ASLR is enabled, the results may have unreproducible noise in them.
--------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------------------------------------------------------------------------------------------
----- Concatenate email ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat email std::format_mean 170 ns 170 ns 4
Concat email std::format_median 170 ns 170 ns 4
Concat email std::format_stddev 3.56 ns 3.56 ns 4
Concat email std::format_cv 2.09 % 2.09 % 4
Concat email std::stringstream_mean 279 ns 279 ns 4
Concat email std::stringstream_median 277 ns 277 ns 4
Concat email std::stringstream_stddev 4.82 ns 4.82 ns 4
Concat email std::stringstream_cv 1.73 % 1.73 % 4
Concat email stringzilla append_mean 141 ns 141 ns 4
Concat email stringzilla append_median 141 ns 141 ns 4
Concat email stringzilla append_stddev 1.31 ns 1.31 ns 4
Concat email stringzilla append_cv 0.93 % 0.93 % 4
Concat email stringzilla concat_mean 55.0 ns 55.0 ns 4
Concat email stringzilla concat_median 55.5 ns 55.5 ns 4
Concat email stringzilla concat_stddev 1.41 ns 1.41 ns 4
Concat email stringzilla concat_cv 2.57 % 2.57 % 4
Concat email std::string append_mean 91.0 ns 91.0 ns 4
Concat email std::string append_median 91.0 ns 91.0 ns 4
Concat email std::string append_stddev 0.590 ns 0.591 ns 4
Concat email std::string append_cv 0.65 % 0.65 % 4
Concat email std::string by strexpr_mean 46.8 ns 46.8 ns 4
Concat email std::string by strexpr_median 46.7 ns 46.7 ns 4
Concat email std::string by strexpr_stddev 1.12 ns 1.13 ns 4
Concat email std::string by strexpr_cv 2.40 % 2.40 % 4
Concat email stringa_mean 38.7 ns 38.7 ns 4
Concat email stringa_median 38.6 ns 38.6 ns 4
Concat email stringa_stddev 0.446 ns 0.446 ns 4
Concat email stringa_cv 1.15 % 1.15 % 4
----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and number by std to std::string_mean 242 ns 242 ns 4
Concat std::string and number by std to std::string_median 242 ns 242 ns 4
Concat std::string and number by std to std::string_stddev 4.41 ns 4.41 ns 4
Concat std::string and number by std to std::string_cv 1.82 % 1.82 % 4
Concat std::string and number by StrExpr to std::string_mean 102 ns 102 ns 4
Concat std::string and number by StrExpr to std::string_median 102 ns 102 ns 4
Concat std::string and number by StrExpr to std::string_stddev 2.17 ns 2.17 ns 4
Concat std::string and number by StrExpr to std::string_cv 2.13 % 2.13 % 4
Concat stringa and number by StrExpr to simstr::stringa_mean 64.3 ns 64.3 ns 4
Concat stringa and number by StrExpr to simstr::stringa_median 64.5 ns 64.5 ns 4
Concat stringa and number by StrExpr to simstr::stringa_stddev 0.626 ns 0.626 ns 4
Concat stringa and number by StrExpr to simstr::stringa_cv 0.97 % 0.97 % 4
Concat stringa and number by e_concat to simstr::stringa_mean 72.1 ns 72.1 ns 4
Concat stringa and number by e_concat to simstr::stringa_median 72.6 ns 72.6 ns 4
Concat stringa and number by e_concat to simstr::stringa_stddev 1.16 ns 1.16 ns 4
Concat stringa and number by e_concat to simstr::stringa_cv 1.61 % 1.61 % 4
----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and format hex number and literal to std::string_mean 724 ns 724 ns 4
Concat std::string and format hex number and literal to std::string_median 719 ns 719 ns 4
Concat std::string and format hex number and literal to std::string_stddev 20.0 ns 20.0 ns 4
Concat std::string and format hex number and literal to std::string_cv 2.76 % 2.77 % 4
std::format std::string and hex number by literal to std::string_mean 783 ns 783 ns 4
std::format std::string and hex number by literal to std::string_median 784 ns 784 ns 4
std::format std::string and hex number by literal to std::string_stddev 20.1 ns 20.1 ns 4
std::format std::string and hex number by literal to std::string_cv 2.56 % 2.56 % 4
Concat std::string and std::to_chars and string to std::string_mean 221 ns 221 ns 4
Concat std::string and std::to_chars and string to std::string_median 222 ns 222 ns 4
Concat std::string and std::to_chars and string to std::string_stddev 3.44 ns 3.44 ns 4
Concat std::string and std::to_chars and string to std::string_cv 1.56 % 1.56 % 4
Concat std::string and hex number and literal by StrExpr to std::string_mean 150 ns 150 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_median 151 ns 151 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_stddev 2.94 ns 2.94 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_cv 1.96 % 1.96 % 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 120 ns 120 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 119 ns 119 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 1.85 ns 1.85 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 1.54 % 1.54 % 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 124 ns 124 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_median 124 ns 124 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 2.45 ns 2.45 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 1.97 % 1.97 % 4
Subst stringa and hex number by e_subst literal to simstr::stringa_mean 187 ns 187 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_median 186 ns 186 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 4.21 ns 4.21 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_cv 2.25 % 2.25 % 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_mean 332 ns 332 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_median 334 ns 334 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_stddev 5.45 ns 5.45 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_cv 1.64 % 1.64 % 4
---- format/vformat and subst/vsubst octal number to 32 symbols result ----/repeats:1 0.000 ns 0.000 ns 1000000000000
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_mean 278 ns 278 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_median 277 ns 277 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_stddev 3.23 ns 3.23 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_cv 1.16 % 1.16 % 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_mean 358 ns 358 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_median 358 ns 358 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_stddev 4.17 ns 4.17 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_cv 1.16 % 1.16 % 4
e_vsubst(pattern, i / 0x8a010_fmt)_mean 608 ns 608 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_median 607 ns 607 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_stddev 8.27 ns 8.26 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_cv 1.36 % 1.36 % 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_mean 697 ns 697 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_median 695 ns 695 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_stddev 8.91 ns 8.91 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_cv 1.28 % 1.28 % 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_mean 814 ns 814 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_median 810 ns 810 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_stddev 23.1 ns 23.1 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_cv 2.84 % 2.84 % 4
std::format("abcdefghihklmopqr {:#010o} end", i)_mean 1268 ns 1268 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_median 1255 ns 1255 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_stddev 30.3 ns 30.3 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_cv 2.39 % 2.39 % 4
std::vformat(pattern, std::make_format_args(i))_mean 1228 ns 1228 ns 4
std::vformat(pattern, std::make_format_args(i))_median 1227 ns 1227 ns 4
std::vformat(pattern, std::make_format_args(i))_stddev 9.77 ns 9.77 ns 4
std::vformat(pattern, std::make_format_args(i))_cv 0.80 % 0.80 % 4
std::format with std::formatted_size_mean 2175 ns 2175 ns 4
std::format with std::formatted_size_median 2181 ns 2180 ns 4
std::format with std::formatted_size_stddev 13.9 ns 13.9 ns 4
std::format with std::formatted_size_cv 0.64 % 0.64 % 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_mean 2608 ns 2608 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_median 2609 ns 2609 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_stddev 18.4 ns 18.4 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_cv 0.71 % 0.70 % 4
----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string by std to std::string_mean 34.1 ns 34.1 ns 4
Concat std::string by std to std::string_median 33.7 ns 33.7 ns 4
Concat std::string by std to std::string_stddev 0.874 ns 0.874 ns 4
Concat std::string by std to std::string_cv 2.56 % 2.56 % 4
Concat std::string by StrExpr to std::string_mean 37.3 ns 37.3 ns 4
Concat std::string by StrExpr to std::string_median 37.2 ns 37.2 ns 4
Concat std::string by StrExpr to std::string_stddev 0.340 ns 0.340 ns 4
Concat std::string by StrExpr to std::string_cv 0.91 % 0.91 % 4
Concat stringa by StrExpr to stringa_mean 28.3 ns 28.3 ns 4
Concat stringa by StrExpr to stringa_median 28.0 ns 28.0 ns 4
Concat stringa by StrExpr to stringa_stddev 0.716 ns 0.716 ns 4
Concat stringa by StrExpr to stringa_cv 2.53 % 2.53 % 4
----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Find concat three std::string_mean 92.4 ns 92.4 ns 4
Find concat three std::string_median 92.1 ns 92.1 ns 4
Find concat three std::string_stddev 1.44 ns 1.44 ns 4
Find concat three std::string_cv 1.56 % 1.56 % 4
Find concat three strexpr_mean 46.5 ns 46.5 ns 4
Find concat three strexpr_median 45.9 ns 45.9 ns 4
Find concat three strexpr_stddev 1.25 ns 1.25 ns 4
Find concat three strexpr_cv 2.68 % 2.68 % 4
Find concat three simstr_mean 17.0 ns 17.0 ns 4
Find concat three simstr_median 16.9 ns 16.9 ns 4
Find concat three simstr_stddev 0.649 ns 0.649 ns 4
Find concat three simstr_cv 3.81 % 3.81 % 4
Find concat three stringzilla string_mean 176 ns 176 ns 4
Find concat three stringzilla string_median 177 ns 177 ns 4
Find concat three stringzilla string_stddev 4.56 ns 4.56 ns 4
Find concat three stringzilla string_cv 2.59 % 2.59 % 4
----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
BuildTypeNameStr 0/0_mean 6.45 ns 6.44 ns 4
BuildTypeNameStr 0/0_median 6.46 ns 6.46 ns 4
BuildTypeNameStr 0/0_stddev 0.192 ns 0.192 ns 4
BuildTypeNameStr 0/0_cv 2.97 % 2.97 % 4
BuildTypeNameExp 0/0_mean 6.41 ns 6.41 ns 4
BuildTypeNameExp 0/0_median 6.39 ns 6.39 ns 4
BuildTypeNameExp 0/0_stddev 0.052 ns 0.052 ns 4
BuildTypeNameExp 0/0_cv 0.81 % 0.81 % 4
BuildTypeNameSim 0/0_mean 4.99 ns 4.99 ns 4
BuildTypeNameSim 0/0_median 4.98 ns 4.98 ns 4
BuildTypeNameSim 0/0_stddev 0.092 ns 0.092 ns 4
BuildTypeNameSim 0/0_cv 1.84 % 1.84 % 4
BuildTypeNameStr 10/10_mean 90.0 ns 90.0 ns 4
BuildTypeNameStr 10/10_median 89.9 ns 89.9 ns 4
BuildTypeNameStr 10/10_stddev 0.738 ns 0.739 ns 4
BuildTypeNameStr 10/10_cv 0.82 % 0.82 % 4
BuildTypeNameExp 10/10_mean 39.0 ns 39.0 ns 4
BuildTypeNameExp 10/10_median 39.2 ns 39.2 ns 4
BuildTypeNameExp 10/10_stddev 1.05 ns 1.05 ns 4
BuildTypeNameExp 10/10_cv 2.70 % 2.70 % 4
BuildTypeNameSim 10/10_mean 23.6 ns 23.6 ns 4
BuildTypeNameSim 10/10_median 23.6 ns 23.6 ns 4
BuildTypeNameSim 10/10_stddev 0.539 ns 0.539 ns 4
BuildTypeNameSim 10/10_cv 2.28 % 2.28 % 4
----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat with replace str_mean 243 ns 243 ns 4
Concat with replace str_median 243 ns 243 ns 4
Concat with replace str_stddev 5.58 ns 5.58 ns 4
Concat with replace str_cv 2.29 % 2.29 % 4
Concat with replace exp_mean 151 ns 151 ns 4
Concat with replace exp_median 151 ns 151 ns 4
Concat with replace exp_stddev 1.04 ns 1.03 ns 4
Concat with replace exp_cv 0.69 % 0.69 % 4
----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e;_mean 0.758 ns 0.758 ns 4
std::string e;_median 0.756 ns 0.756 ns 4
std::string e;_stddev 0.006 ns 0.006 ns 4
std::string e;_cv 0.74 % 0.74 % 4
std::string_view e;_mean 0.380 ns 0.380 ns 4
std::string_view e;_median 0.380 ns 0.380 ns 4
std::string_view e;_stddev 0.002 ns 0.002 ns 4
std::string_view e;_cv 0.49 % 0.49 % 4
ssa e;_mean 0.375 ns 0.375 ns 4
ssa e;_median 0.375 ns 0.375 ns 4
ssa e;_stddev 0.006 ns 0.006 ns 4
ssa e;_cv 1.57 % 1.57 % 4
stringa e;_mean 0.754 ns 0.754 ns 4
stringa e;_median 0.754 ns 0.754 ns 4
stringa e;_stddev 0.005 ns 0.005 ns 4
stringa e;_cv 0.66 % 0.66 % 4
lstringa<20> e;_mean 1.13 ns 1.13 ns 4
lstringa<20> e;_median 1.12 ns 1.12 ns 4
lstringa<20> e;_stddev 0.026 ns 0.026 ns 4
lstringa<20> e;_cv 2.28 % 2.28 % 4
lstringa<40> e;_mean 1.14 ns 1.14 ns 4
lstringa<40> e;_median 1.15 ns 1.15 ns 4
lstringa<40> e;_stddev 0.027 ns 0.027 ns 4
lstringa<40> e;_cv 2.39 % 2.39 % 4
----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "Test text";_mean 1.51 ns 1.51 ns 4
std::string e = "Test text";_median 1.51 ns 1.51 ns 4
std::string e = "Test text";_stddev 0.020 ns 0.020 ns 4
std::string e = "Test text";_cv 1.30 % 1.30 % 4
std::string_view e = "Test text";_mean 0.767 ns 0.767 ns 4
std::string_view e = "Test text";_median 0.765 ns 0.765 ns 4
std::string_view e = "Test text";_stddev 0.010 ns 0.010 ns 4
std::string_view e = "Test text";_cv 1.33 % 1.33 % 4
ssa e = "Test text";_mean 0.381 ns 0.381 ns 4
ssa e = "Test text";_median 0.382 ns 0.382 ns 4
ssa e = "Test text";_stddev 0.006 ns 0.006 ns 4
ssa e = "Test text";_cv 1.64 % 1.64 % 4
stringa e = "Test text";_mean 1.13 ns 1.13 ns 4
stringa e = "Test text";_median 1.13 ns 1.13 ns 4
stringa e = "Test text";_stddev 0.014 ns 0.014 ns 4
stringa e = "Test text";_cv 1.24 % 1.24 % 4
lstringa<20> e = "Test text";_mean 1.89 ns 1.89 ns 4
lstringa<20> e = "Test text";_median 1.89 ns 1.89 ns 4
lstringa<20> e = "Test text";_stddev 0.038 ns 0.038 ns 4
lstringa<20> e = "Test text";_cv 2.03 % 2.03 % 4
lstringa<40> e = "Test text";_mean 1.86 ns 1.86 ns 4
lstringa<40> e = "Test text";_median 1.86 ns 1.86 ns 4
lstringa<40> e = "Test text";_stddev 0.017 ns 0.017 ns 4
lstringa<40> e = "Test text";_cv 0.92 % 0.92 % 4
----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890";_mean 19.3 ns 19.3 ns 4
std::string e = "123456789012345678901234567890";_median 19.3 ns 19.2 ns 4
std::string e = "123456789012345678901234567890";_stddev 0.214 ns 0.214 ns 4
std::string e = "123456789012345678901234567890";_cv 1.11 % 1.11 % 4
std::string_view e = "123456789012345678901234567890";_mean 0.745 ns 0.745 ns 4
std::string_view e = "123456789012345678901234567890";_median 0.745 ns 0.745 ns 4
std::string_view e = "123456789012345678901234567890";_stddev 0.016 ns 0.016 ns 4
std::string_view e = "123456789012345678901234567890";_cv 2.09 % 2.09 % 4
ssa e = "123456789012345678901234567890";_mean 0.374 ns 0.374 ns 4
ssa e = "123456789012345678901234567890";_median 0.373 ns 0.373 ns 4
ssa e = "123456789012345678901234567890";_stddev 0.004 ns 0.004 ns 4
ssa e = "123456789012345678901234567890";_cv 1.01 % 1.01 % 4
stringa e = "123456789012345678901234567890";_mean 1.12 ns 1.12 ns 4
stringa e = "123456789012345678901234567890";_median 1.12 ns 1.12 ns 4
stringa e = "123456789012345678901234567890";_stddev 0.017 ns 0.017 ns 4
stringa e = "123456789012345678901234567890";_cv 1.53 % 1.53 % 4
lstringa<20> e = "123456789012345678901234567890";_mean 18.9 ns 18.9 ns 4
lstringa<20> e = "123456789012345678901234567890";_median 18.9 ns 18.9 ns 4
lstringa<20> e = "123456789012345678901234567890";_stddev 0.143 ns 0.143 ns 4
lstringa<20> e = "123456789012345678901234567890";_cv 0.75 % 0.75 % 4
lstringa<40> e = "123456789012345678901234567890";_mean 1.89 ns 1.89 ns 4
lstringa<40> e = "123456789012345678901234567890";_median 1.89 ns 1.89 ns 4
lstringa<40> e = "123456789012345678901234567890";_stddev 0.023 ns 0.023 ns 4
lstringa<40> e = "123456789012345678901234567890";_cv 1.21 % 1.22 % 4
----- 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.18 ns 1.18 ns 4
std::string e = "Test text"; auto c{e};_median 1.18 ns 1.18 ns 4
std::string e = "Test text"; auto c{e};_stddev 0.010 ns 0.010 ns 4
std::string e = "Test text"; auto c{e};_cv 0.82 % 0.82 % 4
std::string_view e = "Test text"; auto c{e};_mean 0.377 ns 0.377 ns 4
std::string_view e = "Test text"; auto c{e};_median 0.375 ns 0.375 ns 4
std::string_view e = "Test text"; auto c{e};_stddev 0.004 ns 0.004 ns 4
std::string_view e = "Test text"; auto c{e};_cv 1.03 % 1.03 % 4
ssa e = "Test text"; auto c{e};_mean 0.378 ns 0.378 ns 4
ssa e = "Test text"; auto c{e};_median 0.378 ns 0.378 ns 4
ssa e = "Test text"; auto c{e};_stddev 0.003 ns 0.003 ns 4
ssa e = "Test text"; auto c{e};_cv 0.80 % 0.80 % 4
stringa e = "Test text"; auto c{e};_mean 1.13 ns 1.13 ns 4
stringa e = "Test text"; auto c{e};_median 1.13 ns 1.13 ns 4
stringa e = "Test text"; auto c{e};_stddev 0.020 ns 0.020 ns 4
stringa e = "Test text"; auto c{e};_cv 1.76 % 1.76 % 4
lstringa<20> e = "Test text"; auto c{e};_mean 1.12 ns 1.12 ns 4
lstringa<20> e = "Test text"; auto c{e};_median 1.12 ns 1.12 ns 4
lstringa<20> e = "Test text"; auto c{e};_stddev 0.012 ns 0.012 ns 4
lstringa<20> e = "Test text"; auto c{e};_cv 1.04 % 1.04 % 4
lstringa<40> e = "Test text"; auto c{e};_mean 1.85 ns 1.85 ns 4
lstringa<40> e = "Test text"; auto c{e};_median 1.85 ns 1.85 ns 4
lstringa<40> e = "Test text"; auto c{e};_stddev 0.023 ns 0.023 ns 4
lstringa<40> e = "Test text"; auto c{e};_cv 1.27 % 1.27 % 4
----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890"; auto c{e};_mean 24.9 ns 24.9 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_median 24.8 ns 24.8 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_stddev 0.277 ns 0.277 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_cv 1.11 % 1.11 % 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.757 ns 0.757 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.754 ns 0.754 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.013 ns 0.013 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.67 % 1.67 % 4
ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.381 ns 0.381 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_median 0.382 ns 0.382 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.004 ns 0.004 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_cv 1.01 % 1.01 % 4
stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.14 ns 1.14 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_median 1.14 ns 1.14 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.019 ns 0.019 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_cv 1.66 % 1.66 % 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 18.0 ns 18.0 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 18.1 ns 18.1 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.454 ns 0.454 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 2.52 % 2.52 % 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 5.53 ns 5.53 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 5.52 ns 5.52 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.080 ns 0.080 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 1.45 % 1.45 % 4
----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
sz::string::find;_mean 96.5 ns 96.5 ns 4
sz::string::find;_median 96.3 ns 96.3 ns 4
sz::string::find;_stddev 1.47 ns 1.47 ns 4
sz::string::find;_cv 1.53 % 1.53 % 4
std::string::find;_mean 7.76 ns 7.76 ns 4
std::string::find;_median 7.84 ns 7.84 ns 4
std::string::find;_stddev 0.180 ns 0.180 ns 4
std::string::find;_cv 2.31 % 2.31 % 4
std::string_view::find;_mean 7.82 ns 7.82 ns 4
std::string_view::find;_median 7.85 ns 7.84 ns 4
std::string_view::find;_stddev 0.082 ns 0.082 ns 4
std::string_view::find;_cv 1.05 % 1.05 % 4
ssa::find;_mean 7.82 ns 7.82 ns 4
ssa::find;_median 7.81 ns 7.81 ns 4
ssa::find;_stddev 0.113 ns 0.113 ns 4
ssa::find;_cv 1.44 % 1.45 % 4
stringa::find;_mean 8.60 ns 8.60 ns 4
stringa::find;_median 8.59 ns 8.59 ns 4
stringa::find;_stddev 0.045 ns 0.045 ns 4
stringa::find;_cv 0.52 % 0.52 % 4
lstringa<20>::find;_mean 6.98 ns 6.98 ns 4
lstringa<20>::find;_median 6.95 ns 6.95 ns 4
lstringa<20>::find;_stddev 0.090 ns 0.090 ns 4
lstringa<20>::find;_cv 1.29 % 1.29 % 4
lstringa<40>::find;_mean 7.01 ns 7.01 ns 4
lstringa<40>::find;_median 7.02 ns 7.02 ns 4
lstringa<40>::find;_stddev 0.253 ns 0.253 ns 4
lstringa<40>::find;_cv 3.61 % 3.61 % 4
------- 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.18 ns 1.18 ns 4
std::string copy{str_with_len_N};/15_median 1.17 ns 1.17 ns 4
std::string copy{str_with_len_N};/15_stddev 0.043 ns 0.043 ns 4
std::string copy{str_with_len_N};/15_cv 3.65 % 3.65 % 4
std::string copy{str_with_len_N};/16_mean 1.16 ns 1.16 ns 4
std::string copy{str_with_len_N};/16_median 1.16 ns 1.16 ns 4
std::string copy{str_with_len_N};/16_stddev 0.028 ns 0.028 ns 4
std::string copy{str_with_len_N};/16_cv 2.42 % 2.42 % 4
std::string copy{str_with_len_N};/23_mean 25.8 ns 25.8 ns 4
std::string copy{str_with_len_N};/23_median 25.6 ns 25.6 ns 4
std::string copy{str_with_len_N};/23_stddev 0.708 ns 0.707 ns 4
std::string copy{str_with_len_N};/23_cv 2.75 % 2.75 % 4
std::string copy{str_with_len_N};/24_mean 24.8 ns 24.8 ns 4
std::string copy{str_with_len_N};/24_median 24.9 ns 24.9 ns 4
std::string copy{str_with_len_N};/24_stddev 0.390 ns 0.390 ns 4
std::string copy{str_with_len_N};/24_cv 1.57 % 1.57 % 4
std::string copy{str_with_len_N};/32_mean 24.7 ns 24.7 ns 4
std::string copy{str_with_len_N};/32_median 24.9 ns 24.9 ns 4
std::string copy{str_with_len_N};/32_stddev 0.466 ns 0.466 ns 4
std::string copy{str_with_len_N};/32_cv 1.88 % 1.89 % 4
std::string copy{str_with_len_N};/64_mean 26.2 ns 26.2 ns 4
std::string copy{str_with_len_N};/64_median 26.2 ns 26.2 ns 4
std::string copy{str_with_len_N};/64_stddev 0.221 ns 0.221 ns 4
std::string copy{str_with_len_N};/64_cv 0.84 % 0.84 % 4
std::string copy{str_with_len_N};/128_mean 26.8 ns 26.8 ns 4
std::string copy{str_with_len_N};/128_median 26.8 ns 26.8 ns 4
std::string copy{str_with_len_N};/128_stddev 0.300 ns 0.300 ns 4
std::string copy{str_with_len_N};/128_cv 1.12 % 1.12 % 4
std::string copy{str_with_len_N};/256_mean 27.5 ns 27.5 ns 4
std::string copy{str_with_len_N};/256_median 27.5 ns 27.5 ns 4
std::string copy{str_with_len_N};/256_stddev 0.234 ns 0.234 ns 4
std::string copy{str_with_len_N};/256_cv 0.85 % 0.85 % 4
std::string copy{str_with_len_N};/512_mean 31.6 ns 31.6 ns 4
std::string copy{str_with_len_N};/512_median 31.6 ns 31.6 ns 4
std::string copy{str_with_len_N};/512_stddev 0.751 ns 0.751 ns 4
std::string copy{str_with_len_N};/512_cv 2.38 % 2.38 % 4
std::string copy{str_with_len_N};/1024_mean 38.4 ns 38.4 ns 4
std::string copy{str_with_len_N};/1024_median 38.4 ns 38.4 ns 4
std::string copy{str_with_len_N};/1024_stddev 1.03 ns 1.03 ns 4
std::string copy{str_with_len_N};/1024_cv 2.67 % 2.67 % 4
std::string copy{str_with_len_N};/2048_mean 86.0 ns 86.0 ns 4
std::string copy{str_with_len_N};/2048_median 87.3 ns 87.3 ns 4
std::string copy{str_with_len_N};/2048_stddev 4.29 ns 4.29 ns 4
std::string copy{str_with_len_N};/2048_cv 4.99 % 4.99 % 4
std::string copy{str_with_len_N};/4096_mean 117 ns 117 ns 4
std::string copy{str_with_len_N};/4096_median 118 ns 118 ns 4
std::string copy{str_with_len_N};/4096_stddev 3.68 ns 3.68 ns 4
std::string copy{str_with_len_N};/4096_cv 3.14 % 3.14 % 4
stringa copy{str_with_len_N};/15_mean 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/15_median 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/15_stddev 0.037 ns 0.037 ns 4
stringa copy{str_with_len_N};/15_cv 3.27 % 3.27 % 4
stringa copy{str_with_len_N};/16_mean 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/16_median 1.14 ns 1.14 ns 4
stringa copy{str_with_len_N};/16_stddev 0.014 ns 0.014 ns 4
stringa copy{str_with_len_N};/16_cv 1.22 % 1.22 % 4
stringa copy{str_with_len_N};/23_mean 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/23_median 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/23_stddev 0.006 ns 0.006 ns 4
stringa copy{str_with_len_N};/23_cv 0.58 % 0.58 % 4
stringa copy{str_with_len_N};/24_mean 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/24_median 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/24_stddev 0.167 ns 0.167 ns 4
stringa copy{str_with_len_N};/24_cv 1.01 % 1.01 % 4
stringa copy{str_with_len_N};/32_mean 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/32_median 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/32_stddev 0.075 ns 0.075 ns 4
stringa copy{str_with_len_N};/32_cv 0.46 % 0.46 % 4
stringa copy{str_with_len_N};/64_mean 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/64_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/64_stddev 0.129 ns 0.129 ns 4
stringa copy{str_with_len_N};/64_cv 0.78 % 0.78 % 4
stringa copy{str_with_len_N};/128_mean 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/128_median 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/128_stddev 0.176 ns 0.176 ns 4
stringa copy{str_with_len_N};/128_cv 1.06 % 1.06 % 4
stringa copy{str_with_len_N};/256_mean 16.6 ns 16.6 ns 4
stringa copy{str_with_len_N};/256_median 16.6 ns 16.6 ns 4
stringa copy{str_with_len_N};/256_stddev 0.081 ns 0.081 ns 4
stringa copy{str_with_len_N};/256_cv 0.49 % 0.49 % 4
stringa copy{str_with_len_N};/512_mean 16.6 ns 16.6 ns 4
stringa copy{str_with_len_N};/512_median 16.6 ns 16.6 ns 4
stringa copy{str_with_len_N};/512_stddev 0.117 ns 0.117 ns 4
stringa copy{str_with_len_N};/512_cv 0.71 % 0.71 % 4
stringa copy{str_with_len_N};/1024_mean 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/1024_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/1024_stddev 0.232 ns 0.232 ns 4
stringa copy{str_with_len_N};/1024_cv 1.41 % 1.41 % 4
stringa copy{str_with_len_N};/2048_mean 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/2048_median 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/2048_stddev 0.122 ns 0.122 ns 4
stringa copy{str_with_len_N};/2048_cv 0.74 % 0.74 % 4
stringa copy{str_with_len_N};/4096_mean 16.7 ns 16.7 ns 4
stringa copy{str_with_len_N};/4096_median 16.7 ns 16.7 ns 4
stringa copy{str_with_len_N};/4096_stddev 0.175 ns 0.175 ns 4
stringa copy{str_with_len_N};/4096_cv 1.05 % 1.05 % 4
lstringa<16> copy{str_with_len_N};/15_mean 1.12 ns 1.12 ns 4
lstringa<16> copy{str_with_len_N};/15_median 1.12 ns 1.12 ns 4
lstringa<16> copy{str_with_len_N};/15_stddev 0.018 ns 0.018 ns 4
lstringa<16> copy{str_with_len_N};/15_cv 1.63 % 1.63 % 4
lstringa<16> copy{str_with_len_N};/16_mean 5.35 ns 5.35 ns 4
lstringa<16> copy{str_with_len_N};/16_median 5.32 ns 5.32 ns 4
lstringa<16> copy{str_with_len_N};/16_stddev 0.139 ns 0.139 ns 4
lstringa<16> copy{str_with_len_N};/16_cv 2.60 % 2.60 % 4
lstringa<16> copy{str_with_len_N};/23_mean 5.31 ns 5.31 ns 4
lstringa<16> copy{str_with_len_N};/23_median 5.33 ns 5.33 ns 4
lstringa<16> copy{str_with_len_N};/23_stddev 0.075 ns 0.075 ns 4
lstringa<16> copy{str_with_len_N};/23_cv 1.42 % 1.42 % 4
lstringa<16> copy{str_with_len_N};/24_mean 21.8 ns 21.8 ns 4
lstringa<16> copy{str_with_len_N};/24_median 21.9 ns 21.9 ns 4
lstringa<16> copy{str_with_len_N};/24_stddev 0.457 ns 0.457 ns 4
lstringa<16> copy{str_with_len_N};/24_cv 2.10 % 2.10 % 4
lstringa<16> copy{str_with_len_N};/32_mean 21.9 ns 21.9 ns 4
lstringa<16> copy{str_with_len_N};/32_median 21.8 ns 21.8 ns 4
lstringa<16> copy{str_with_len_N};/32_stddev 0.650 ns 0.650 ns 4
lstringa<16> copy{str_with_len_N};/32_cv 2.97 % 2.97 % 4
lstringa<16> copy{str_with_len_N};/64_mean 23.1 ns 23.1 ns 4
lstringa<16> copy{str_with_len_N};/64_median 22.9 ns 22.9 ns 4
lstringa<16> copy{str_with_len_N};/64_stddev 0.476 ns 0.476 ns 4
lstringa<16> copy{str_with_len_N};/64_cv 2.06 % 2.06 % 4
lstringa<16> copy{str_with_len_N};/128_mean 25.7 ns 25.7 ns 4
lstringa<16> copy{str_with_len_N};/128_median 25.8 ns 25.8 ns 4
lstringa<16> copy{str_with_len_N};/128_stddev 0.666 ns 0.666 ns 4
lstringa<16> copy{str_with_len_N};/128_cv 2.59 % 2.59 % 4
lstringa<16> copy{str_with_len_N};/256_mean 24.8 ns 24.8 ns 4
lstringa<16> copy{str_with_len_N};/256_median 24.7 ns 24.7 ns 4
lstringa<16> copy{str_with_len_N};/256_stddev 0.339 ns 0.339 ns 4
lstringa<16> copy{str_with_len_N};/256_cv 1.37 % 1.37 % 4
lstringa<16> copy{str_with_len_N};/512_mean 27.7 ns 27.7 ns 4
lstringa<16> copy{str_with_len_N};/512_median 27.7 ns 27.7 ns 4
lstringa<16> copy{str_with_len_N};/512_stddev 0.248 ns 0.248 ns 4
lstringa<16> copy{str_with_len_N};/512_cv 0.90 % 0.90 % 4
lstringa<16> copy{str_with_len_N};/1024_mean 78.4 ns 78.4 ns 4
lstringa<16> copy{str_with_len_N};/1024_median 87.3 ns 87.3 ns 4
lstringa<16> copy{str_with_len_N};/1024_stddev 19.5 ns 19.5 ns 4
lstringa<16> copy{str_with_len_N};/1024_cv 24.87 % 24.87 % 4
lstringa<16> copy{str_with_len_N};/2048_mean 73.4 ns 73.4 ns 4
lstringa<16> copy{str_with_len_N};/2048_median 76.1 ns 76.1 ns 4
lstringa<16> copy{str_with_len_N};/2048_stddev 6.12 ns 6.12 ns 4
lstringa<16> copy{str_with_len_N};/2048_cv 8.34 % 8.34 % 4
lstringa<16> copy{str_with_len_N};/4096_mean 88.6 ns 88.6 ns 4
lstringa<16> copy{str_with_len_N};/4096_median 88.9 ns 88.9 ns 4
lstringa<16> copy{str_with_len_N};/4096_stddev 0.993 ns 0.993 ns 4
lstringa<16> copy{str_with_len_N};/4096_cv 1.12 % 1.12 % 4
lstringa<512> copy{str_with_len_N};/15_mean 1.13 ns 1.13 ns 4
lstringa<512> copy{str_with_len_N};/15_median 1.14 ns 1.14 ns 4
lstringa<512> copy{str_with_len_N};/15_stddev 0.008 ns 0.008 ns 4
lstringa<512> copy{str_with_len_N};/15_cv 0.74 % 0.74 % 4
lstringa<512> copy{str_with_len_N};/16_mean 4.98 ns 4.98 ns 4
lstringa<512> copy{str_with_len_N};/16_median 4.96 ns 4.96 ns 4
lstringa<512> copy{str_with_len_N};/16_stddev 0.149 ns 0.149 ns 4
lstringa<512> copy{str_with_len_N};/16_cv 3.00 % 3.00 % 4
lstringa<512> copy{str_with_len_N};/23_mean 5.01 ns 5.01 ns 4
lstringa<512> copy{str_with_len_N};/23_median 5.02 ns 5.02 ns 4
lstringa<512> copy{str_with_len_N};/23_stddev 0.121 ns 0.120 ns 4
lstringa<512> copy{str_with_len_N};/23_cv 2.41 % 2.40 % 4
lstringa<512> copy{str_with_len_N};/24_mean 4.59 ns 4.59 ns 4
lstringa<512> copy{str_with_len_N};/24_median 4.59 ns 4.59 ns 4
lstringa<512> copy{str_with_len_N};/24_stddev 0.088 ns 0.088 ns 4
lstringa<512> copy{str_with_len_N};/24_cv 1.92 % 1.92 % 4
lstringa<512> copy{str_with_len_N};/32_mean 4.64 ns 4.64 ns 4
lstringa<512> copy{str_with_len_N};/32_median 4.64 ns 4.64 ns 4
lstringa<512> copy{str_with_len_N};/32_stddev 0.075 ns 0.075 ns 4
lstringa<512> copy{str_with_len_N};/32_cv 1.61 % 1.61 % 4
lstringa<512> copy{str_with_len_N};/64_mean 6.06 ns 6.06 ns 4
lstringa<512> copy{str_with_len_N};/64_median 6.10 ns 6.10 ns 4
lstringa<512> copy{str_with_len_N};/64_stddev 0.122 ns 0.122 ns 4
lstringa<512> copy{str_with_len_N};/64_cv 2.01 % 2.01 % 4
lstringa<512> copy{str_with_len_N};/128_mean 6.63 ns 6.63 ns 4
lstringa<512> copy{str_with_len_N};/128_median 6.60 ns 6.60 ns 4
lstringa<512> copy{str_with_len_N};/128_stddev 0.128 ns 0.128 ns 4
lstringa<512> copy{str_with_len_N};/128_cv 1.93 % 1.93 % 4
lstringa<512> copy{str_with_len_N};/256_mean 17.3 ns 17.3 ns 4
lstringa<512> copy{str_with_len_N};/256_median 17.3 ns 17.3 ns 4
lstringa<512> copy{str_with_len_N};/256_stddev 0.252 ns 0.252 ns 4
lstringa<512> copy{str_with_len_N};/256_cv 1.45 % 1.45 % 4
lstringa<512> copy{str_with_len_N};/512_mean 10.6 ns 10.6 ns 4
lstringa<512> copy{str_with_len_N};/512_median 10.6 ns 10.6 ns 4
lstringa<512> copy{str_with_len_N};/512_stddev 0.094 ns 0.094 ns 4
lstringa<512> copy{str_with_len_N};/512_cv 0.88 % 0.88 % 4
lstringa<512> copy{str_with_len_N};/1024_mean 52.1 ns 52.1 ns 4
lstringa<512> copy{str_with_len_N};/1024_median 52.0 ns 52.0 ns 4
lstringa<512> copy{str_with_len_N};/1024_stddev 1.85 ns 1.85 ns 4
lstringa<512> copy{str_with_len_N};/1024_cv 3.55 % 3.55 % 4
lstringa<512> copy{str_with_len_N};/2048_mean 73.6 ns 73.6 ns 4
lstringa<512> copy{str_with_len_N};/2048_median 76.5 ns 76.5 ns 4
lstringa<512> copy{str_with_len_N};/2048_stddev 8.36 ns 8.36 ns 4
lstringa<512> copy{str_with_len_N};/2048_cv 11.35 % 11.35 % 4
lstringa<512> copy{str_with_len_N};/4096_mean 90.1 ns 90.1 ns 4
lstringa<512> copy{str_with_len_N};/4096_median 90.3 ns 90.3 ns 4
lstringa<512> copy{str_with_len_N};/4096_stddev 0.860 ns 0.860 ns 4
lstringa<512> copy{str_with_len_N};/4096_cv 0.95 % 0.95 % 4
----- Convert to int '1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 27.4 ns 27.4 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 27.5 ns 27.5 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.390 ns 0.390 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 1.42 % 1.42 % 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 17.5 ns 17.5 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 17.6 ns 17.6 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.354 ns 0.354 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 2.02 % 2.02 % 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 9.48 ns 9.48 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 9.50 ns 9.50 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.135 ns 0.135 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 1.42 % 1.42 % 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 9.76 ns 9.76 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 9.80 ns 9.80 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.135 ns 0.135 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 1.38 % 1.38 % 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 9.51 ns 9.51 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_median 9.53 ns 9.53 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.042 ns 0.042 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 0.44 % 0.44 % 4
----- Convert to unsigned 'abcDef' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_mean 24.4 ns 24.4 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 24.3 ns 24.3 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.490 ns 0.490 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 2.01 % 2.01 % 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 22.0 ns 22.0 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 22.2 ns 22.2 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.697 ns 0.697 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 3.17 % 3.17 % 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 8.28 ns 8.28 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 8.15 ns 8.15 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.363 ns 0.363 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 4.38 % 4.38 % 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 7.65 ns 7.65 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 7.63 ns 7.63 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.109 ns 0.109 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.43 % 1.43 % 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 7.84 ns 7.84 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 7.87 ns 7.87 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.130 ns 0.130 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.66 % 1.66 % 4
----- 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.4 ns 29.4 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 29.3 ns 29.3 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 0.371 ns 0.371 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 1.26 % 1.26 % 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_mean 11.4 ns 11.4 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_median 11.4 ns 11.4 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_stddev 0.079 ns 0.079 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_cv 0.70 % 0.70 % 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_mean 13.2 ns 13.2 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_median 13.2 ns 13.2 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_stddev 0.292 ns 0.292 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_cv 2.21 % 2.21 % 4
----- 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.8 ns 65.8 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 65.6 ns 65.6 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 0.998 ns 0.998 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 1.52 % 1.52 % 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res); ERROR OCCURRED: 'not implemented'
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res); ERROR OCCURRED: 'not implemented'
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res); ERROR OCCURRED: 'not implemented'
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res); ERROR OCCURRED: 'not implemented'
ssa s = "1234.567e10"; double res = *s.to_double()_mean 34.8 ns 34.8 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_median 34.7 ns 34.7 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.864 ns 0.864 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_cv 2.48 % 2.48 % 4
-- 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 2080 ns 2080 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_median 2077 ns 2077 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 35.9 ns 35.9 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_cv 1.72 % 1.72 % 4
std::string str; ... str += "abbaabbaabbaabba";_mean 416 ns 416 ns 4
std::string str; ... str += "abbaabbaabbaabba";_median 416 ns 416 ns 4
std::string str; ... str += "abbaabbaabbaabba";_stddev 18.5 ns 18.5 ns 4
std::string str; ... str += "abbaabbaabbaabba";_cv 4.45 % 4.45 % 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 362 ns 362 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_median 362 ns 362 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 3.73 ns 3.73 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 1.03 % 1.03 % 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 245 ns 245 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_median 248 ns 248 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 19.5 ns 19.5 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 7.96 % 7.96 % 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 217 ns 217 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_median 222 ns 222 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 16.2 ns 16.2 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 7.49 % 7.49 % 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 136 ns 136 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 136 ns 136 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 1.48 ns 1.48 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.09 % 1.08 % 4
-- 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 2037 ns 2037 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 2042 ns 2042 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 54.5 ns 54.5 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 2.68 % 2.67 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1253 ns 1253 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1255 ns 1255 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 17.7 ns 17.7 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 1.41 % 1.41 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 401 ns 401 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 406 ns 406 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 23.1 ns 23.1 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 5.75 % 5.75 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 335 ns 335 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 346 ns 346 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 24.4 ns 24.4 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 7.29 % 7.29 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 291 ns 291 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 297 ns 297 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 18.8 ns 18.8 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 6.47 % 6.47 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 214 ns 214 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 214 ns 214 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 1.16 ns 1.16 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 0.54 % 0.54 % 4
-- 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 159733 ns 159734 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 158296 ns 158296 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 6342 ns 6342 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 3.97 % 3.97 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 104710 ns 104710 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 104630 ns 104630 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1116 ns 1116 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.07 % 1.07 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 49815 ns 49815 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 49890 ns 49891 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 327 ns 327 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 0.66 % 0.66 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 27270 ns 27270 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 27160 ns 27160 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 903 ns 903 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.31 % 3.31 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16860 ns 16860 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16838 ns 16838 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 204 ns 204 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.21 % 1.21 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 16899 ns 16899 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 16878 ns 16878 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 88.6 ns 88.6 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 0.52 % 0.52 % 4
-- 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 2073 ns 2073 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_median 2050 ns 2050 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_stddev 66.2 ns 66.2 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_cv 3.19 % 3.19 % 4
std::string str; ... str += str_var1 + str_var2;_mean 1492 ns 1492 ns 4
std::string str; ... str += str_var1 + str_var2;_median 1494 ns 1494 ns 4
std::string str; ... str += str_var1 + str_var2;_stddev 29.6 ns 29.6 ns 4
std::string str; ... str += str_var1 + str_var2;_cv 1.98 % 1.98 % 4
lstringa<16> str; ... str += str_var1 + str_var2;_mean 476 ns 476 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_median 480 ns 480 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_stddev 20.4 ns 20.4 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_cv 4.29 % 4.29 % 4
lstringa<128> str; ... str += str_var1 + str_var2;_mean 448 ns 448 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_median 460 ns 460 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_stddev 27.7 ns 27.7 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_cv 6.18 % 6.18 % 4
lstringa<512> str; ... str += str_var1 + str_var2;_mean 379 ns 379 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_median 385 ns 385 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_stddev 13.8 ns 13.8 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_cv 3.63 % 3.63 % 4
lstringa<1024> str; ... str += str_var1 + str_var2;_mean 298 ns 298 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_median 296 ns 296 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 4.34 ns 4.34 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_cv 1.46 % 1.46 % 4
-- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::stringstream str; str << "test = " << k << " times";_mean 3419 ns 3419 ns 4
std::stringstream str; str << "test = " << k << " times";_median 3420 ns 3420 ns 4
std::stringstream str; str << "test = " << k << " times";_stddev 78.3 ns 78.3 ns 4
std::stringstream str; str << "test = " << k << " times";_cv 2.29 % 2.29 % 4
std::string str = "test = " + std::to_string(k) + " times";_mean 474 ns 474 ns 4
std::string str = "test = " + std::to_string(k) + " times";_median 477 ns 477 ns 4
std::string str = "test = " + std::to_string(k) + " times";_stddev 9.20 ns 9.20 ns 4
std::string str = "test = " + std::to_string(k) + " times";_cv 1.94 % 1.94 % 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1229 ns 1229 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1226 ns 1226 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 15.9 ns 15.9 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 1.29 % 1.29 % 4
std::string str = std::format("test = {} times", k);_mean 959 ns 959 ns 4
std::string str = std::format("test = {} times", k);_median 955 ns 955 ns 4
std::string str = std::format("test = {} times", k);_stddev 9.35 ns 9.35 ns 4
std::string str = std::format("test = {} times", k);_cv 0.97 % 0.97 % 4
lstringa<8> str; str.format("test = {} times", k);_mean 2002 ns 2002 ns 4
lstringa<8> str; str.format("test = {} times", k);_median 2000 ns 2000 ns 4
lstringa<8> str; str.format("test = {} times", k);_stddev 27.3 ns 27.3 ns 4
lstringa<8> str; str.format("test = {} times", k);_cv 1.37 % 1.37 % 4
lstringa<32> str; str.format("test = {} times", k);_mean 1745 ns 1745 ns 4
lstringa<32> str; str.format("test = {} times", k);_median 1743 ns 1743 ns 4
lstringa<32> str; str.format("test = {} times", k);_stddev 33.1 ns 33.1 ns 4
lstringa<32> str; str.format("test = {} times", k);_cv 1.90 % 1.90 % 4
lstringa<8> str = "test = " + k + " times";_mean 263 ns 263 ns 4
lstringa<8> str = "test = " + k + " times";_median 264 ns 264 ns 4
lstringa<8> str = "test = " + k + " times";_stddev 5.32 ns 5.32 ns 4
lstringa<8> str = "test = " + k + " times";_cv 2.02 % 2.02 % 4
lstringa<32> str = "test = " + k + " times";_mean 119 ns 119 ns 4
lstringa<32> str = "test = " + k + " times";_median 119 ns 119 ns 4
lstringa<32> str = "test = " + k + " times";_stddev 1.45 ns 1.45 ns 4
lstringa<32> str = "test = " + k + " times";_cv 1.22 % 1.22 % 4
stringa str = "test = " + k + " times";_mean 118 ns 118 ns 4
stringa str = "test = " + k + " times";_median 118 ns 118 ns 4
stringa str = "test = " + k + " times";_stddev 0.943 ns 0.943 ns 4
stringa str = "test = " + k + " times";_cv 0.80 % 0.80 % 4
-- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string::find + substr + std::strtol_mean 277 ns 277 ns 4
std::string::find + substr + std::strtol_median 276 ns 276 ns 4
std::string::find + substr + std::strtol_stddev 2.54 ns 2.54 ns 4
std::string::find + substr + std::strtol_cv 0.92 % 0.92 % 4
ssa::splitter + ssa::as_int_mean 159 ns 159 ns 4
ssa::splitter + ssa::as_int_median 159 ns 159 ns 4
ssa::splitter + ssa::as_int_stddev 3.14 ns 3.14 ns 4
ssa::splitter + ssa::as_int_cv 1.97 % 1.97 % 4
ssa::splitf + functor_mean 213 ns 213 ns 4
ssa::splitf + functor_median 212 ns 212 ns 4
ssa::splitf + functor_stddev 8.20 ns 8.20 ns 4
ssa::splitf + functor_cv 3.84 % 3.84 % 4
-- 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 916 ns 916 ns 4
Naive (and wrong) replace symbols with std::string find + replace_median 909 ns 909 ns 4
Naive (and wrong) replace symbols with std::string find + replace_stddev 27.2 ns 27.2 ns 4
Naive (and wrong) replace symbols with std::string find + replace_cv 2.97 % 2.97 % 4
replace symbols with std::string find_first_of + replace_mean 2428 ns 2428 ns 4
replace symbols with std::string find_first_of + replace_median 2432 ns 2432 ns 4
replace symbols with std::string find_first_of + replace_stddev 22.9 ns 22.9 ns 4
replace symbols with std::string find_first_of + replace_cv 0.94 % 0.94 % 4
replace symbols with std::string_view find_first_of + copy_mean 1026 ns 1026 ns 4
replace symbols with std::string_view find_first_of + copy_median 1018 ns 1018 ns 4
replace symbols with std::string_view find_first_of + copy_stddev 22.2 ns 22.2 ns 4
replace symbols with std::string_view find_first_of + copy_cv 2.16 % 2.16 % 4
replace runtime symbols with string expressions and without remembering all search results_mean 1408 ns 1408 ns 4
replace runtime symbols with string expressions and without remembering all search results_median 1410 ns 1410 ns 4
replace runtime symbols with string expressions and without remembering all search results_stddev 14.7 ns 14.7 ns 4
replace runtime symbols with string expressions and without remembering all search results_cv 1.04 % 1.04 % 4
replace runtime symbols with simstr and memorization of all search results_mean 1083 ns 1083 ns 4
replace runtime symbols with simstr and memorization of all search results_median 1076 ns 1076 ns 4
replace runtime symbols with simstr and memorization of all search results_stddev 17.0 ns 17.0 ns 4
replace runtime symbols with simstr and memorization of all search results_cv 1.57 % 1.57 % 4
replace const symbols with string expressions and without remembering all search results_mean 1128 ns 1128 ns 4
replace const symbols with string expressions and without remembering all search results_median 1130 ns 1130 ns 4
replace const symbols with string expressions and without remembering all search results_stddev 7.02 ns 7.02 ns 4
replace const symbols with string expressions and without remembering all search results_cv 0.62 % 0.62 % 4
replace const symbols with string expressions and memorization of all search results_mean 820 ns 820 ns 4
replace const symbols with string expressions and memorization of all search results_median 812 ns 812 ns 4
replace const symbols with string expressions and memorization of all search results_stddev 23.0 ns 23.0 ns 4
replace const symbols with string expressions and memorization of all search results_cv 2.81 % 2.81 % 4
-- 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 177 ns 177 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_median 177 ns 177 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_stddev 0.976 ns 0.976 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_cv 0.55 % 0.55 % 4
Short replace symbols with std::string find_first_of + replace_mean 324 ns 324 ns 4
Short replace symbols with std::string find_first_of + replace_median 325 ns 325 ns 4
Short replace symbols with std::string find_first_of + replace_stddev 4.96 ns 4.96 ns 4
Short replace symbols with std::string find_first_of + replace_cv 1.53 % 1.53 % 4
Short replace symbols with std::string_view find_first_of + copy_mean 141 ns 141 ns 4
Short replace symbols with std::string_view find_first_of + copy_median 139 ns 139 ns 4
Short replace symbols with std::string_view find_first_of + copy_stddev 4.79 ns 4.79 ns 4
Short replace symbols with std::string_view find_first_of + copy_cv 3.41 % 3.41 % 4
Short replace runtime symbols with string expressions and without remembering all search results_mean 198 ns 198 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_median 197 ns 197 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_stddev 6.51 ns 6.51 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_cv 3.29 % 3.29 % 4
Short replace runtime symbols with simstr and memorization of all search results_mean 186 ns 186 ns 4
Short replace runtime symbols with simstr and memorization of all search results_median 186 ns 186 ns 4
Short replace runtime symbols with simstr and memorization of all search results_stddev 2.39 ns 2.39 ns 4
Short replace runtime symbols with simstr and memorization of all search results_cv 1.28 % 1.28 % 4
Short replace const symbols with string expressions and without remembering all search results_mean 126 ns 126 ns 4
Short replace const symbols with string expressions and without remembering all search results_median 126 ns 126 ns 4
Short replace const symbols with string expressions and without remembering all search results_stddev 1.64 ns 1.64 ns 4
Short replace const symbols with string expressions and without remembering all search results_cv 1.30 % 1.30 % 4
Short replace const symbols with string expressions and memorization of all search results_mean 136 ns 136 ns 4
Short replace const symbols with string expressions and memorization of all search results_median 136 ns 136 ns 4
Short replace const symbols with string expressions and memorization of all search results_stddev 2.88 ns 2.88 ns 4
Short replace const symbols with string expressions and memorization of all search results_cv 2.12 % 2.12 % 4
----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to ---- in std::string|64_mean 180 ns 180 ns 4
replace bb to ---- in std::string|64_median 181 ns 181 ns 4
replace bb to ---- in std::string|64_stddev 5.27 ns 5.27 ns 4
replace bb to ---- in std::string|64_cv 2.93 % 2.93 % 4
replace bb to ---- in std::string|256_mean 842 ns 842 ns 4
replace bb to ---- in std::string|256_median 844 ns 844 ns 4
replace bb to ---- in std::string|256_stddev 12.7 ns 12.7 ns 4
replace bb to ---- in std::string|256_cv 1.50 % 1.50 % 4
replace bb to ---- in std::string|512_mean 1259 ns 1259 ns 4
replace bb to ---- in std::string|512_median 1269 ns 1269 ns 4
replace bb to ---- in std::string|512_stddev 30.9 ns 30.9 ns 4
replace bb to ---- in std::string|512_cv 2.45 % 2.45 % 4
replace bb to ---- in std::string|1024_mean 2422 ns 2422 ns 4
replace bb to ---- in std::string|1024_median 2423 ns 2423 ns 4
replace bb to ---- in std::string|1024_stddev 19.3 ns 19.3 ns 4
replace bb to ---- in std::string|1024_cv 0.80 % 0.80 % 4
replace bb to ---- in std::string|2048_mean 6347 ns 6347 ns 4
replace bb to ---- in std::string|2048_median 6403 ns 6403 ns 4
replace bb to ---- in std::string|2048_stddev 221 ns 221 ns 4
replace bb to ---- in std::string|2048_cv 3.48 % 3.48 % 4
replace bb to ---- in lstringa<8>|64_mean 129 ns 129 ns 4
replace bb to ---- in lstringa<8>|64_median 129 ns 129 ns 4
replace bb to ---- in lstringa<8>|64_stddev 3.09 ns 3.09 ns 4
replace bb to ---- in lstringa<8>|64_cv 2.39 % 2.39 % 4
replace bb to ---- in lstringa<8>|256_mean 444 ns 444 ns 4
replace bb to ---- in lstringa<8>|256_median 444 ns 444 ns 4
replace bb to ---- in lstringa<8>|256_stddev 12.1 ns 12.1 ns 4
replace bb to ---- in lstringa<8>|256_cv 2.73 % 2.73 % 4
replace bb to ---- in lstringa<8>|512_mean 828 ns 828 ns 4
replace bb to ---- in lstringa<8>|512_median 825 ns 825 ns 4
replace bb to ---- in lstringa<8>|512_stddev 23.9 ns 23.9 ns 4
replace bb to ---- in lstringa<8>|512_cv 2.89 % 2.89 % 4
replace bb to ---- in lstringa<8>|1024_mean 1614 ns 1614 ns 4
replace bb to ---- in lstringa<8>|1024_median 1611 ns 1611 ns 4
replace bb to ---- in lstringa<8>|1024_stddev 19.6 ns 19.6 ns 4
replace bb to ---- in lstringa<8>|1024_cv 1.21 % 1.21 % 4
replace bb to ---- in lstringa<8>|2048_mean 3127 ns 3127 ns 4
replace bb to ---- in lstringa<8>|2048_median 3109 ns 3109 ns 4
replace bb to ---- in lstringa<8>|2048_stddev 54.0 ns 54.0 ns 4
replace bb to ---- in lstringa<8>|2048_cv 1.73 % 1.73 % 4
replace bb to ---- by init stringa|64_mean 90.9 ns 90.9 ns 4
replace bb to ---- by init stringa|64_median 91.5 ns 91.5 ns 4
replace bb to ---- by init stringa|64_stddev 2.07 ns 2.07 ns 4
replace bb to ---- by init stringa|64_cv 2.28 % 2.28 % 4
replace bb to ---- by init stringa|256_mean 308 ns 308 ns 4
replace bb to ---- by init stringa|256_median 309 ns 309 ns 4
replace bb to ---- by init stringa|256_stddev 3.01 ns 3.01 ns 4
replace bb to ---- by init stringa|256_cv 0.98 % 0.98 % 4
replace bb to ---- by init stringa|512_mean 709 ns 709 ns 4
replace bb to ---- by init stringa|512_median 709 ns 709 ns 4
replace bb to ---- by init stringa|512_stddev 3.56 ns 3.56 ns 4
replace bb to ---- by init stringa|512_cv 0.50 % 0.50 % 4
replace bb to ---- by init stringa|1024_mean 1392 ns 1392 ns 4
replace bb to ---- by init stringa|1024_median 1391 ns 1391 ns 4
replace bb to ---- by init stringa|1024_stddev 5.76 ns 5.76 ns 4
replace bb to ---- by init stringa|1024_cv 0.41 % 0.41 % 4
replace bb to ---- by init stringa|2048_mean 2810 ns 2810 ns 4
replace bb to ---- by init stringa|2048_median 2815 ns 2815 ns 4
replace bb to ---- by init stringa|2048_stddev 36.4 ns 36.4 ns 4
replace bb to ---- by init stringa|2048_cv 1.29 % 1.29 % 4
----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to -- in std::string|64_mean 130 ns 130 ns 4
replace bb to -- in std::string|64_median 129 ns 129 ns 4
replace bb to -- in std::string|64_stddev 2.30 ns 2.30 ns 4
replace bb to -- in std::string|64_cv 1.77 % 1.77 % 4
replace bb to -- in std::string|256_mean 427 ns 427 ns 4
replace bb to -- in std::string|256_median 429 ns 429 ns 4
replace bb to -- in std::string|256_stddev 6.83 ns 6.83 ns 4
replace bb to -- in std::string|256_cv 1.60 % 1.60 % 4
replace bb to -- in std::string|512_mean 851 ns 851 ns 4
replace bb to -- in std::string|512_median 849 ns 849 ns 4
replace bb to -- in std::string|512_stddev 11.5 ns 11.5 ns 4
replace bb to -- in std::string|512_cv 1.35 % 1.35 % 4
replace bb to -- in std::string|1024_mean 1603 ns 1603 ns 4
replace bb to -- in std::string|1024_median 1613 ns 1613 ns 4
replace bb to -- in std::string|1024_stddev 35.0 ns 35.0 ns 4
replace bb to -- in std::string|1024_cv 2.18 % 2.18 % 4
replace bb to -- in std::string|2048_mean 3230 ns 3230 ns 4
replace bb to -- in std::string|2048_median 3217 ns 3217 ns 4
replace bb to -- in std::string|2048_stddev 41.6 ns 41.6 ns 4
replace bb to -- in std::string|2048_cv 1.29 % 1.29 % 4
replace bb to -- in lstringa<8>|64_mean 90.8 ns 90.8 ns 4
replace bb to -- in lstringa<8>|64_median 91.5 ns 91.5 ns 4
replace bb to -- in lstringa<8>|64_stddev 1.56 ns 1.56 ns 4
replace bb to -- in lstringa<8>|64_cv 1.72 % 1.72 % 4
replace bb to -- in lstringa<8>|256_mean 294 ns 294 ns 4
replace bb to -- in lstringa<8>|256_median 294 ns 294 ns 4
replace bb to -- in lstringa<8>|256_stddev 5.26 ns 5.26 ns 4
replace bb to -- in lstringa<8>|256_cv 1.79 % 1.79 % 4
replace bb to -- in lstringa<8>|512_mean 551 ns 551 ns 4
replace bb to -- in lstringa<8>|512_median 555 ns 555 ns 4
replace bb to -- in lstringa<8>|512_stddev 9.79 ns 9.78 ns 4
replace bb to -- in lstringa<8>|512_cv 1.78 % 1.78 % 4
replace bb to -- in lstringa<8>|1024_mean 1066 ns 1066 ns 4
replace bb to -- in lstringa<8>|1024_median 1071 ns 1071 ns 4
replace bb to -- in lstringa<8>|1024_stddev 18.1 ns 18.1 ns 4
replace bb to -- in lstringa<8>|1024_cv 1.70 % 1.70 % 4
replace bb to -- in lstringa<8>|2048_mean 2242 ns 2242 ns 4
replace bb to -- in lstringa<8>|2048_median 2197 ns 2197 ns 4
replace bb to -- in lstringa<8>|2048_stddev 132 ns 132 ns 4
replace bb to -- in lstringa<8>|2048_cv 5.90 % 5.90 % 4
replace bb to -- by init stringa|64_mean 83.0 ns 83.0 ns 4
replace bb to -- by init stringa|64_median 81.6 ns 81.6 ns 4
replace bb to -- by init stringa|64_stddev 4.12 ns 4.12 ns 4
replace bb to -- by init stringa|64_cv 4.96 % 4.96 % 4
replace bb to -- by init stringa|256_mean 237 ns 237 ns 4
replace bb to -- by init stringa|256_median 236 ns 236 ns 4
replace bb to -- by init stringa|256_stddev 4.04 ns 4.04 ns 4
replace bb to -- by init stringa|256_cv 1.70 % 1.70 % 4
replace bb to -- by init stringa|512_mean 435 ns 435 ns 4
replace bb to -- by init stringa|512_median 435 ns 435 ns 4
replace bb to -- by init stringa|512_stddev 5.95 ns 5.95 ns 4
replace bb to -- by init stringa|512_cv 1.37 % 1.37 % 4
replace bb to -- by init stringa|1024_mean 851 ns 851 ns 4
replace bb to -- by init stringa|1024_median 846 ns 846 ns 4
replace bb to -- by init stringa|1024_stddev 18.7 ns 18.7 ns 4
replace bb to -- by init stringa|1024_cv 2.20 % 2.20 % 4
replace bb to -- by init stringa|2048_mean 1658 ns 1658 ns 4
replace bb to -- by init stringa|2048_median 1652 ns 1652 ns 4
replace bb to -- by init stringa|2048_stddev 28.9 ns 28.9 ns 4
replace bb to -- by init stringa|2048_cv 1.74 % 1.74 % 4
----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
hashStrMapA<size_t> emplace & find stringa;_mean 3780026 ns 3780035 ns 4
hashStrMapA<size_t> emplace & find stringa;_median 3764708 ns 3764717 ns 4
hashStrMapA<size_t> emplace & find stringa;_stddev 108428 ns 108427 ns 4
hashStrMapA<size_t> emplace & find stringa;_cv 2.87 % 2.87 % 4
std::unordered_map<std::string, size_t> emplace & find std::string;_mean 3706958 ns 3706967 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_median 3712805 ns 3712816 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_stddev 32417 ns 32419 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_cv 0.87 % 0.87 % 4
hashStrMapA<size_t> emplace & find ssa;_mean 3815600 ns 3815610 ns 4
hashStrMapA<size_t> emplace & find ssa;_median 3818146 ns 3818155 ns 4
hashStrMapA<size_t> emplace & find ssa;_stddev 36526 ns 36523 ns 4
hashStrMapA<size_t> emplace & find ssa;_cv 0.96 % 0.96 % 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_mean 4134155 ns 4134170 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_median 4133427 ns 4133445 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_stddev 54010 ns 54012 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_cv 1.31 % 1.31 % 4
----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Build func full name std::string;_mean 1021 ns 1021 ns 4
Build func full name std::string;_median 1018 ns 1018 ns 4
Build func full name std::string;_stddev 20.5 ns 20.5 ns 4
Build func full name std::string;_cv 2.01 % 2.01 % 4
Build func full name std::string 1;_mean 1021 ns 1021 ns 4
Build func full name std::string 1;_median 1019 ns 1019 ns 4
Build func full name std::string 1;_stddev 26.5 ns 26.5 ns 4
Build func full name std::string 1;_cv 2.60 % 2.60 % 4
Build func full name std::stream;_mean 2984 ns 2984 ns 4
Build func full name std::stream;_median 2987 ns 2987 ns 4
Build func full name std::stream;_stddev 37.7 ns 37.7 ns 4
Build func full name std::stream;_cv 1.26 % 1.26 % 4
Build func full name stringa;_mean 471 ns 471 ns 4
Build func full name stringa;_median 470 ns 470 ns 4
Build func full name stringa;_stddev 4.83 ns 4.83 ns 4
Build func full name stringa;_cv 1.02 % 1.02 % 4
Build func full name stringa 1;_mean 648 ns 648 ns 4
Build func full name stringa 1;_median 651 ns 651 ns 4
Build func full name stringa 1;_stddev 9.87 ns 9.87 ns 4
Build func full name stringa 1;_cv 1.52 % 1.52 % 4
----- Make Upper ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
To upper case std::wstring_mean 175 ns 175 ns 4
To upper case std::wstring_median 177 ns 177 ns 4
To upper case std::wstring_stddev 3.99 ns 3.99 ns 4
To upper case std::wstring_cv 2.28 % 2.28 % 4
To upper case lstringw<15>_mean 38.5 ns 38.5 ns 4
To upper case lstringw<15>_median 38.5 ns 38.5 ns 4
To upper case lstringw<15>_stddev 1.33 ns 1.33 ns 4
To upper case lstringw<15>_cv 3.44 % 3.44 % 4

View File

@ -1,931 +0,0 @@
Benchmarks of simstr, version 1.6.4
Sources: https://github.com/orefkov/simstr
Results: https://orefkov.github.io/simstr/results.html
2026-02-04T16:14:00+03:00
Running ./benchStr
Run on (32 X 2494.22 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x16)
L1 Instruction 32 KiB (x16)
L2 Unified 256 KiB (x16)
L3 Unified 40960 KiB (x1)
Load Average: 0.00, 0.00, 0.00
***WARNING*** ASLR is enabled, the results may have unreproducible noise in them.
--------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------------------------------------------------------------------------------------------
----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and number by std to std::string_mean 201 ns 201 ns 4
Concat std::string and number by std to std::string_median 199 ns 199 ns 4
Concat std::string and number by std to std::string_stddev 7.26 ns 7.26 ns 4
Concat std::string and number by std to std::string_cv 3.62 % 3.62 % 4
Concat std::string and number by StrExpr to std::string_mean 100 ns 100 ns 4
Concat std::string and number by StrExpr to std::string_median 94.2 ns 94.2 ns 4
Concat std::string and number by StrExpr to std::string_stddev 13.1 ns 13.1 ns 4
Concat std::string and number by StrExpr to std::string_cv 13.10 % 13.10 % 4
Concat stringa and number by StrExpr to simstr::stringa_mean 77.9 ns 77.9 ns 4
Concat stringa and number by StrExpr to simstr::stringa_median 78.3 ns 78.3 ns 4
Concat stringa and number by StrExpr to simstr::stringa_stddev 6.99 ns 6.99 ns 4
Concat stringa and number by StrExpr to simstr::stringa_cv 8.97 % 8.97 % 4
Concat stringa and number by e_concat to simstr::stringa_mean 79.0 ns 79.0 ns 4
Concat stringa and number by e_concat to simstr::stringa_median 75.8 ns 75.8 ns 4
Concat stringa and number by e_concat to simstr::stringa_stddev 6.87 ns 6.87 ns 4
Concat stringa and number by e_concat to simstr::stringa_cv 8.70 % 8.70 % 4
----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and format hex number and literal to std::string_mean 691 ns 691 ns 4
Concat std::string and format hex number and literal to std::string_median 676 ns 676 ns 4
Concat std::string and format hex number and literal to std::string_stddev 49.5 ns 49.5 ns 4
Concat std::string and format hex number and literal to std::string_cv 7.16 % 7.16 % 4
std::format std::string and hex number by literal to std::string_mean 995 ns 995 ns 4
std::format std::string and hex number by literal to std::string_median 964 ns 964 ns 4
std::format std::string and hex number by literal to std::string_stddev 130 ns 130 ns 4
std::format std::string and hex number by literal to std::string_cv 13.08 % 13.08 % 4
Concat std::string and std::to_chars and string to std::string_mean 175 ns 175 ns 4
Concat std::string and std::to_chars and string to std::string_median 176 ns 176 ns 4
Concat std::string and std::to_chars and string to std::string_stddev 3.22 ns 3.22 ns 4
Concat std::string and std::to_chars and string to std::string_cv 1.84 % 1.84 % 4
Concat std::string and hex number and literal by StrExpr to std::string_mean 126 ns 126 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_median 124 ns 124 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_stddev 5.99 ns 5.99 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_cv 4.75 % 4.75 % 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 119 ns 119 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 120 ns 120 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 1.61 ns 1.61 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 1.35 % 1.35 % 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 131 ns 131 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_median 126 ns 126 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 10.1 ns 10.1 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 7.71 % 7.71 % 4
Subst stringa and hex number by e_subst literal to simstr::stringa_mean 164 ns 164 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_median 164 ns 164 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 2.00 ns 2.00 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_cv 1.22 % 1.22 % 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_mean 277 ns 277 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_median 274 ns 274 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_stddev 10.4 ns 10.4 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_cv 3.75 % 3.75 % 4
----- format/vformat and subst/vsubst octal number ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
"art "_ss + i / 0x8a010_fmt + " end"_mean 96.6 ns 96.6 ns 4
"art "_ss + i / 0x8a010_fmt + " end"_median 96.2 ns 96.2 ns 4
"art "_ss + i / 0x8a010_fmt + " end"_stddev 7.79 ns 7.79 ns 4
"art "_ss + i / 0x8a010_fmt + " end"_cv 8.06 % 8.06 % 4
e_subst("art {} end", i / 0x8a010_fmt)_mean 145 ns 145 ns 4
e_subst("art {} end", i / 0x8a010_fmt)_median 145 ns 145 ns 4
e_subst("art {} end", i / 0x8a010_fmt)_stddev 8.28 ns 8.28 ns 4
e_subst("art {} end", i / 0x8a010_fmt)_cv 5.73 % 5.73 % 4
e_vsubst(pattern, i / 0x8a010_fmt)_mean 327 ns 327 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_median 327 ns 327 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_stddev 17.8 ns 17.8 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_cv 5.43 % 5.43 % 4
std::format("art {:#010o} end", i)_mean 1204 ns 1204 ns 4
std::format("art {:#010o} end", i)_median 1211 ns 1211 ns 4
std::format("art {:#010o} end", i)_stddev 29.0 ns 29.0 ns 4
std::format("art {:#010o} end", i)_cv 2.41 % 2.41 % 4
std::vformat(pattern, std::make_format_args(i))_mean 1091 ns 1091 ns 4
std::vformat(pattern, std::make_format_args(i))_median 1104 ns 1104 ns 4
std::vformat(pattern, std::make_format_args(i))_stddev 27.5 ns 27.5 ns 4
std::vformat(pattern, std::make_format_args(i))_cv 2.52 % 2.52 % 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_mean 2084 ns 2084 ns 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_median 2079 ns 2079 ns 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_stddev 58.5 ns 58.5 ns 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_cv 2.81 % 2.81 % 4
----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string by std to std::string_mean 43.5 ns 43.5 ns 4
Concat std::string by std to std::string_median 43.5 ns 43.5 ns 4
Concat std::string by std to std::string_stddev 0.763 ns 0.763 ns 4
Concat std::string by std to std::string_cv 1.76 % 1.76 % 4
Concat std::string by StrExpr to std::string_mean 29.4 ns 29.4 ns 4
Concat std::string by StrExpr to std::string_median 29.5 ns 29.5 ns 4
Concat std::string by StrExpr to std::string_stddev 0.740 ns 0.740 ns 4
Concat std::string by StrExpr to std::string_cv 2.52 % 2.52 % 4
Concat stringa by StrExpr to stringa_mean 33.0 ns 33.0 ns 4
Concat stringa by StrExpr to stringa_median 33.9 ns 33.9 ns 4
Concat stringa by StrExpr to stringa_stddev 3.22 ns 3.22 ns 4
Concat stringa by StrExpr to stringa_cv 9.75 % 9.75 % 4
----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Find concat three std::string_mean 194 ns 194 ns 4
Find concat three std::string_median 191 ns 191 ns 4
Find concat three std::string_stddev 19.8 ns 19.8 ns 4
Find concat three std::string_cv 10.22 % 10.22 % 4
Find concat three strexpr_mean 69.7 ns 69.7 ns 4
Find concat three strexpr_median 69.0 ns 69.0 ns 4
Find concat three strexpr_stddev 2.66 ns 2.66 ns 4
Find concat three strexpr_cv 3.81 % 3.81 % 4
Find concat three simstr_mean 44.2 ns 44.2 ns 4
Find concat three simstr_median 44.2 ns 44.2 ns 4
Find concat three simstr_stddev 0.637 ns 0.637 ns 4
Find concat three simstr_cv 1.44 % 1.44 % 4
----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
BuildTypeNameStr 0/0_mean 10.3 ns 10.3 ns 4
BuildTypeNameStr 0/0_median 10.3 ns 10.3 ns 4
BuildTypeNameStr 0/0_stddev 0.209 ns 0.209 ns 4
BuildTypeNameStr 0/0_cv 2.03 % 2.03 % 4
BuildTypeNameExp 0/0_mean 6.71 ns 6.71 ns 4
BuildTypeNameExp 0/0_median 6.71 ns 6.71 ns 4
BuildTypeNameExp 0/0_stddev 0.028 ns 0.028 ns 4
BuildTypeNameExp 0/0_cv 0.41 % 0.41 % 4
BuildTypeNameSim 0/0_mean 5.47 ns 5.47 ns 4
BuildTypeNameSim 0/0_median 5.44 ns 5.44 ns 4
BuildTypeNameSim 0/0_stddev 0.483 ns 0.483 ns 4
BuildTypeNameSim 0/0_cv 8.83 % 8.83 % 4
BuildTypeNameStr 10/10_mean 83.0 ns 83.0 ns 4
BuildTypeNameStr 10/10_median 83.1 ns 83.1 ns 4
BuildTypeNameStr 10/10_stddev 0.474 ns 0.474 ns 4
BuildTypeNameStr 10/10_cv 0.57 % 0.57 % 4
BuildTypeNameExp 10/10_mean 24.5 ns 24.5 ns 4
BuildTypeNameExp 10/10_median 24.4 ns 24.4 ns 4
BuildTypeNameExp 10/10_stddev 0.431 ns 0.431 ns 4
BuildTypeNameExp 10/10_cv 1.76 % 1.76 % 4
BuildTypeNameSim 10/10_mean 25.3 ns 25.3 ns 4
BuildTypeNameSim 10/10_median 25.3 ns 25.3 ns 4
BuildTypeNameSim 10/10_stddev 0.570 ns 0.570 ns 4
BuildTypeNameSim 10/10_cv 2.25 % 2.25 % 4
----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat with replace str_mean 403 ns 403 ns 4
Concat with replace str_median 395 ns 395 ns 4
Concat with replace str_stddev 35.8 ns 35.8 ns 4
Concat with replace str_cv 8.88 % 8.88 % 4
Concat with replace exp_mean 175 ns 175 ns 4
Concat with replace exp_median 174 ns 174 ns 4
Concat with replace exp_stddev 6.82 ns 6.82 ns 4
Concat with replace exp_cv 3.89 % 3.89 % 4
----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e;_mean 1.10 ns 1.10 ns 4
std::string e;_median 1.10 ns 1.10 ns 4
std::string e;_stddev 0.011 ns 0.011 ns 4
std::string e;_cv 1.01 % 1.01 % 4
std::string_view e;_mean 0.748 ns 0.748 ns 4
std::string_view e;_median 0.747 ns 0.747 ns 4
std::string_view e;_stddev 0.026 ns 0.026 ns 4
std::string_view e;_cv 3.50 % 3.50 % 4
ssa e;_mean 0.180 ns 0.180 ns 4
ssa e;_median 0.179 ns 0.179 ns 4
ssa e;_stddev 0.001 ns 0.001 ns 4
ssa e;_cv 0.49 % 0.49 % 4
stringa e;_mean 0.744 ns 0.744 ns 4
stringa e;_median 0.741 ns 0.741 ns 4
stringa e;_stddev 0.013 ns 0.013 ns 4
stringa e;_cv 1.71 % 1.71 % 4
lstringa<20> e;_mean 1.11 ns 1.11 ns 4
lstringa<20> e;_median 1.11 ns 1.11 ns 4
lstringa<20> e;_stddev 0.009 ns 0.009 ns 4
lstringa<20> e;_cv 0.79 % 0.79 % 4
lstringa<40> e;_mean 1.11 ns 1.11 ns 4
lstringa<40> e;_median 1.11 ns 1.11 ns 4
lstringa<40> e;_stddev 0.010 ns 0.010 ns 4
lstringa<40> e;_cv 0.91 % 0.91 % 4
----- 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 4
std::string e = "Test text";_median 1.83 ns 1.83 ns 4
std::string e = "Test text";_stddev 0.045 ns 0.045 ns 4
std::string e = "Test text";_cv 2.45 % 2.45 % 4
std::string_view e = "Test text";_mean 0.750 ns 0.750 ns 4
std::string_view e = "Test text";_median 0.757 ns 0.757 ns 4
std::string_view e = "Test text";_stddev 0.031 ns 0.031 ns 4
std::string_view e = "Test text";_cv 4.12 % 4.12 % 4
ssa e = "Test text";_mean 0.732 ns 0.732 ns 4
ssa e = "Test text";_median 0.731 ns 0.731 ns 4
ssa e = "Test text";_stddev 0.010 ns 0.010 ns 4
ssa e = "Test text";_cv 1.36 % 1.36 % 4
stringa e = "Test text";_mean 1.11 ns 1.11 ns 4
stringa e = "Test text";_median 1.11 ns 1.11 ns 4
stringa e = "Test text";_stddev 0.022 ns 0.022 ns 4
stringa e = "Test text";_cv 2.00 % 2.00 % 4
lstringa<20> e = "Test text";_mean 1.82 ns 1.82 ns 4
lstringa<20> e = "Test text";_median 1.82 ns 1.82 ns 4
lstringa<20> e = "Test text";_stddev 0.020 ns 0.020 ns 4
lstringa<20> e = "Test text";_cv 1.10 % 1.10 % 4
lstringa<40> e = "Test text";_mean 1.84 ns 1.84 ns 4
lstringa<40> e = "Test text";_median 1.82 ns 1.82 ns 4
lstringa<40> e = "Test text";_stddev 0.047 ns 0.047 ns 4
lstringa<40> e = "Test text";_cv 2.57 % 2.57 % 4
----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890";_mean 18.7 ns 18.7 ns 4
std::string e = "123456789012345678901234567890";_median 18.7 ns 18.7 ns 4
std::string e = "123456789012345678901234567890";_stddev 0.169 ns 0.169 ns 4
std::string e = "123456789012345678901234567890";_cv 0.90 % 0.90 % 4
std::string_view e = "123456789012345678901234567890";_mean 0.745 ns 0.745 ns 4
std::string_view e = "123456789012345678901234567890";_median 0.743 ns 0.743 ns 4
std::string_view e = "123456789012345678901234567890";_stddev 0.009 ns 0.009 ns 4
std::string_view e = "123456789012345678901234567890";_cv 1.22 % 1.22 % 4
ssa e = "123456789012345678901234567890";_mean 0.782 ns 0.782 ns 4
ssa e = "123456789012345678901234567890";_median 0.773 ns 0.773 ns 4
ssa e = "123456789012345678901234567890";_stddev 0.038 ns 0.038 ns 4
ssa e = "123456789012345678901234567890";_cv 4.84 % 4.84 % 4
stringa e = "123456789012345678901234567890";_mean 1.14 ns 1.14 ns 4
stringa e = "123456789012345678901234567890";_median 1.13 ns 1.13 ns 4
stringa e = "123456789012345678901234567890";_stddev 0.038 ns 0.038 ns 4
stringa e = "123456789012345678901234567890";_cv 3.32 % 3.32 % 4
lstringa<20> e = "123456789012345678901234567890";_mean 20.0 ns 20.0 ns 4
lstringa<20> e = "123456789012345678901234567890";_median 19.9 ns 19.9 ns 4
lstringa<20> e = "123456789012345678901234567890";_stddev 0.345 ns 0.345 ns 4
lstringa<20> e = "123456789012345678901234567890";_cv 1.73 % 1.73 % 4
lstringa<40> e = "123456789012345678901234567890";_mean 1.92 ns 1.92 ns 4
lstringa<40> e = "123456789012345678901234567890";_median 1.89 ns 1.89 ns 4
lstringa<40> e = "123456789012345678901234567890";_stddev 0.108 ns 0.108 ns 4
lstringa<40> e = "123456789012345678901234567890";_cv 5.64 % 5.64 % 4
----- 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.89 ns 4.89 ns 4
std::string e = "Test text"; auto c{e};_median 4.90 ns 4.90 ns 4
std::string e = "Test text"; auto c{e};_stddev 0.162 ns 0.162 ns 4
std::string e = "Test text"; auto c{e};_cv 3.31 % 3.31 % 4
std::string_view e = "Test text"; auto c{e};_mean 0.379 ns 0.379 ns 4
std::string_view e = "Test text"; auto c{e};_median 0.373 ns 0.373 ns 4
std::string_view e = "Test text"; auto c{e};_stddev 0.016 ns 0.016 ns 4
std::string_view e = "Test text"; auto c{e};_cv 4.24 % 4.24 % 4
ssa e = "Test text"; auto c{e};_mean 0.368 ns 0.368 ns 4
ssa e = "Test text"; auto c{e};_median 0.369 ns 0.369 ns 4
ssa e = "Test text"; auto c{e};_stddev 0.005 ns 0.005 ns 4
ssa e = "Test text"; auto c{e};_cv 1.42 % 1.42 % 4
stringa e = "Test text"; auto c{e};_mean 1.32 ns 1.32 ns 4
stringa e = "Test text"; auto c{e};_median 1.32 ns 1.32 ns 4
stringa e = "Test text"; auto c{e};_stddev 0.040 ns 0.040 ns 4
stringa e = "Test text"; auto c{e};_cv 2.99 % 2.99 % 4
lstringa<20> e = "Test text"; auto c{e};_mean 4.43 ns 4.43 ns 4
lstringa<20> e = "Test text"; auto c{e};_median 4.44 ns 4.44 ns 4
lstringa<20> e = "Test text"; auto c{e};_stddev 0.071 ns 0.071 ns 4
lstringa<20> e = "Test text"; auto c{e};_cv 1.61 % 1.61 % 4
lstringa<40> e = "Test text"; auto c{e};_mean 4.57 ns 4.57 ns 4
lstringa<40> e = "Test text"; auto c{e};_median 4.55 ns 4.55 ns 4
lstringa<40> e = "Test text"; auto c{e};_stddev 0.152 ns 0.152 ns 4
lstringa<40> e = "Test text"; auto c{e};_cv 3.34 % 3.34 % 4
----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890"; auto c{e};_mean 23.8 ns 23.8 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_median 23.9 ns 23.9 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_stddev 0.401 ns 0.401 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_cv 1.68 % 1.68 % 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.726 ns 0.726 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.722 ns 0.722 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.013 ns 0.013 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.76 % 1.76 % 4
ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.734 ns 0.734 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_median 0.735 ns 0.735 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.009 ns 0.009 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_cv 1.18 % 1.18 % 4
stringa e = "123456789012345678901234567890"; auto c{e};_mean 1.15 ns 1.15 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_median 1.12 ns 1.12 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.078 ns 0.078 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_cv 6.77 % 6.77 % 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 21.3 ns 21.3 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 21.2 ns 21.2 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.688 ns 0.688 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 3.23 % 3.23 % 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 5.18 ns 5.18 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 5.08 ns 5.08 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.278 ns 0.278 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 5.37 % 5.37 % 4
----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string::find;_mean 6.65 ns 6.65 ns 4
std::string::find;_median 6.65 ns 6.65 ns 4
std::string::find;_stddev 0.092 ns 0.092 ns 4
std::string::find;_cv 1.39 % 1.39 % 4
std::string_view::find;_mean 6.63 ns 6.63 ns 4
std::string_view::find;_median 6.64 ns 6.64 ns 4
std::string_view::find;_stddev 0.076 ns 0.076 ns 4
std::string_view::find;_cv 1.14 % 1.14 % 4
ssa::find;_mean 6.33 ns 6.33 ns 4
ssa::find;_median 6.31 ns 6.31 ns 4
ssa::find;_stddev 0.168 ns 0.168 ns 4
ssa::find;_cv 2.65 % 2.65 % 4
stringa::find;_mean 6.65 ns 6.65 ns 4
stringa::find;_median 6.65 ns 6.65 ns 4
stringa::find;_stddev 0.052 ns 0.052 ns 4
stringa::find;_cv 0.78 % 0.78 % 4
lstringa<20>::find;_mean 6.67 ns 6.67 ns 4
lstringa<20>::find;_median 6.41 ns 6.41 ns 4
lstringa<20>::find;_stddev 0.601 ns 0.601 ns 4
lstringa<20>::find;_cv 9.01 % 9.01 % 4
lstringa<40>::find;_mean 6.44 ns 6.44 ns 4
lstringa<40>::find;_median 6.39 ns 6.39 ns 4
lstringa<40>::find;_stddev 0.170 ns 0.170 ns 4
lstringa<40>::find;_cv 2.64 % 2.64 % 4
------- 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.83 ns 4.83 ns 4
std::string copy{str_with_len_N};/15_median 4.82 ns 4.82 ns 4
std::string copy{str_with_len_N};/15_stddev 0.074 ns 0.074 ns 4
std::string copy{str_with_len_N};/15_cv 1.54 % 1.54 % 4
std::string copy{str_with_len_N};/16_mean 23.7 ns 23.7 ns 4
std::string copy{str_with_len_N};/16_median 23.8 ns 23.8 ns 4
std::string copy{str_with_len_N};/16_stddev 0.626 ns 0.626 ns 4
std::string copy{str_with_len_N};/16_cv 2.65 % 2.65 % 4
std::string copy{str_with_len_N};/23_mean 26.3 ns 26.3 ns 4
std::string copy{str_with_len_N};/23_median 27.1 ns 27.1 ns 4
std::string copy{str_with_len_N};/23_stddev 2.75 ns 2.75 ns 4
std::string copy{str_with_len_N};/23_cv 10.46 % 10.46 % 4
std::string copy{str_with_len_N};/24_mean 25.2 ns 25.2 ns 4
std::string copy{str_with_len_N};/24_median 24.4 ns 24.4 ns 4
std::string copy{str_with_len_N};/24_stddev 2.74 ns 2.74 ns 4
std::string copy{str_with_len_N};/24_cv 10.89 % 10.89 % 4
std::string copy{str_with_len_N};/32_mean 23.0 ns 23.0 ns 4
std::string copy{str_with_len_N};/32_median 22.9 ns 22.9 ns 4
std::string copy{str_with_len_N};/32_stddev 0.431 ns 0.431 ns 4
std::string copy{str_with_len_N};/32_cv 1.87 % 1.87 % 4
std::string copy{str_with_len_N};/64_mean 24.4 ns 24.4 ns 4
std::string copy{str_with_len_N};/64_median 23.2 ns 23.2 ns 4
std::string copy{str_with_len_N};/64_stddev 2.89 ns 2.89 ns 4
std::string copy{str_with_len_N};/64_cv 11.86 % 11.86 % 4
std::string copy{str_with_len_N};/128_mean 24.7 ns 24.7 ns 4
std::string copy{str_with_len_N};/128_median 24.7 ns 24.7 ns 4
std::string copy{str_with_len_N};/128_stddev 0.278 ns 0.278 ns 4
std::string copy{str_with_len_N};/128_cv 1.13 % 1.13 % 4
std::string copy{str_with_len_N};/256_mean 25.5 ns 25.5 ns 4
std::string copy{str_with_len_N};/256_median 25.5 ns 25.5 ns 4
std::string copy{str_with_len_N};/256_stddev 0.525 ns 0.525 ns 4
std::string copy{str_with_len_N};/256_cv 2.06 % 2.06 % 4
std::string copy{str_with_len_N};/512_mean 29.2 ns 29.2 ns 4
std::string copy{str_with_len_N};/512_median 29.1 ns 29.1 ns 4
std::string copy{str_with_len_N};/512_stddev 0.182 ns 0.182 ns 4
std::string copy{str_with_len_N};/512_cv 0.63 % 0.63 % 4
std::string copy{str_with_len_N};/1024_mean 45.8 ns 45.8 ns 4
std::string copy{str_with_len_N};/1024_median 46.0 ns 46.0 ns 4
std::string copy{str_with_len_N};/1024_stddev 0.721 ns 0.721 ns 4
std::string copy{str_with_len_N};/1024_cv 1.57 % 1.57 % 4
std::string copy{str_with_len_N};/2048_mean 71.1 ns 71.1 ns 4
std::string copy{str_with_len_N};/2048_median 72.6 ns 72.6 ns 4
std::string copy{str_with_len_N};/2048_stddev 7.51 ns 7.51 ns 4
std::string copy{str_with_len_N};/2048_cv 10.57 % 10.57 % 4
std::string copy{str_with_len_N};/4096_mean 121 ns 121 ns 4
std::string copy{str_with_len_N};/4096_median 118 ns 118 ns 4
std::string copy{str_with_len_N};/4096_stddev 10.6 ns 10.6 ns 4
std::string copy{str_with_len_N};/4096_cv 8.71 % 8.71 % 4
stringa copy{str_with_len_N};/15_mean 1.30 ns 1.30 ns 4
stringa copy{str_with_len_N};/15_median 1.31 ns 1.31 ns 4
stringa copy{str_with_len_N};/15_stddev 0.031 ns 0.031 ns 4
stringa copy{str_with_len_N};/15_cv 2.39 % 2.39 % 4
stringa copy{str_with_len_N};/16_mean 1.29 ns 1.29 ns 4
stringa copy{str_with_len_N};/16_median 1.29 ns 1.29 ns 4
stringa copy{str_with_len_N};/16_stddev 0.010 ns 0.010 ns 4
stringa copy{str_with_len_N};/16_cv 0.81 % 0.81 % 4
stringa copy{str_with_len_N};/23_mean 1.28 ns 1.28 ns 4
stringa copy{str_with_len_N};/23_median 1.28 ns 1.28 ns 4
stringa copy{str_with_len_N};/23_stddev 0.006 ns 0.006 ns 4
stringa copy{str_with_len_N};/23_cv 0.47 % 0.46 % 4
stringa copy{str_with_len_N};/24_mean 15.9 ns 15.9 ns 4
stringa copy{str_with_len_N};/24_median 15.9 ns 15.9 ns 4
stringa copy{str_with_len_N};/24_stddev 0.091 ns 0.091 ns 4
stringa copy{str_with_len_N};/24_cv 0.57 % 0.57 % 4
stringa copy{str_with_len_N};/32_mean 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/32_median 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/32_stddev 0.181 ns 0.181 ns 4
stringa copy{str_with_len_N};/32_cv 1.13 % 1.13 % 4
stringa copy{str_with_len_N};/64_mean 15.9 ns 15.9 ns 4
stringa copy{str_with_len_N};/64_median 15.9 ns 15.9 ns 4
stringa copy{str_with_len_N};/64_stddev 0.029 ns 0.029 ns 4
stringa copy{str_with_len_N};/64_cv 0.18 % 0.18 % 4
stringa copy{str_with_len_N};/128_mean 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/128_median 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/128_stddev 0.076 ns 0.076 ns 4
stringa copy{str_with_len_N};/128_cv 0.47 % 0.47 % 4
stringa copy{str_with_len_N};/256_mean 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/256_median 16.0 ns 16.0 ns 4
stringa copy{str_with_len_N};/256_stddev 0.162 ns 0.162 ns 4
stringa copy{str_with_len_N};/256_cv 1.01 % 1.01 % 4
stringa copy{str_with_len_N};/512_mean 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/512_median 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/512_stddev 0.145 ns 0.145 ns 4
stringa copy{str_with_len_N};/512_cv 0.90 % 0.90 % 4
stringa copy{str_with_len_N};/1024_mean 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/1024_median 16.1 ns 16.1 ns 4
stringa copy{str_with_len_N};/1024_stddev 0.220 ns 0.220 ns 4
stringa copy{str_with_len_N};/1024_cv 1.36 % 1.36 % 4
stringa copy{str_with_len_N};/2048_mean 16.2 ns 16.2 ns 4
stringa copy{str_with_len_N};/2048_median 16.2 ns 16.2 ns 4
stringa copy{str_with_len_N};/2048_stddev 0.240 ns 0.240 ns 4
stringa copy{str_with_len_N};/2048_cv 1.48 % 1.48 % 4
stringa copy{str_with_len_N};/4096_mean 16.2 ns 16.2 ns 4
stringa copy{str_with_len_N};/4096_median 16.2 ns 16.2 ns 4
stringa copy{str_with_len_N};/4096_stddev 0.155 ns 0.155 ns 4
stringa copy{str_with_len_N};/4096_cv 0.96 % 0.96 % 4
lstringa<16> copy{str_with_len_N};/15_mean 4.43 ns 4.43 ns 4
lstringa<16> copy{str_with_len_N};/15_median 4.39 ns 4.39 ns 4
lstringa<16> copy{str_with_len_N};/15_stddev 0.123 ns 0.123 ns 4
lstringa<16> copy{str_with_len_N};/15_cv 2.77 % 2.77 % 4
lstringa<16> copy{str_with_len_N};/16_mean 4.88 ns 4.88 ns 4
lstringa<16> copy{str_with_len_N};/16_median 4.92 ns 4.92 ns 4
lstringa<16> copy{str_with_len_N};/16_stddev 0.323 ns 0.323 ns 4
lstringa<16> copy{str_with_len_N};/16_cv 6.62 % 6.62 % 4
lstringa<16> copy{str_with_len_N};/23_mean 5.22 ns 5.22 ns 4
lstringa<16> copy{str_with_len_N};/23_median 5.19 ns 5.19 ns 4
lstringa<16> copy{str_with_len_N};/23_stddev 0.863 ns 0.863 ns 4
lstringa<16> copy{str_with_len_N};/23_cv 16.53 % 16.53 % 4
lstringa<16> copy{str_with_len_N};/24_mean 24.4 ns 24.4 ns 4
lstringa<16> copy{str_with_len_N};/24_median 24.4 ns 24.4 ns 4
lstringa<16> copy{str_with_len_N};/24_stddev 0.440 ns 0.440 ns 4
lstringa<16> copy{str_with_len_N};/24_cv 1.81 % 1.81 % 4
lstringa<16> copy{str_with_len_N};/32_mean 24.1 ns 24.1 ns 4
lstringa<16> copy{str_with_len_N};/32_median 23.7 ns 23.7 ns 4
lstringa<16> copy{str_with_len_N};/32_stddev 1.38 ns 1.38 ns 4
lstringa<16> copy{str_with_len_N};/32_cv 5.71 % 5.71 % 4
lstringa<16> copy{str_with_len_N};/64_mean 25.4 ns 25.4 ns 4
lstringa<16> copy{str_with_len_N};/64_median 25.2 ns 25.2 ns 4
lstringa<16> copy{str_with_len_N};/64_stddev 0.678 ns 0.678 ns 4
lstringa<16> copy{str_with_len_N};/64_cv 2.67 % 2.67 % 4
lstringa<16> copy{str_with_len_N};/128_mean 25.6 ns 25.6 ns 4
lstringa<16> copy{str_with_len_N};/128_median 25.8 ns 25.8 ns 4
lstringa<16> copy{str_with_len_N};/128_stddev 0.675 ns 0.675 ns 4
lstringa<16> copy{str_with_len_N};/128_cv 2.64 % 2.64 % 4
lstringa<16> copy{str_with_len_N};/256_mean 29.7 ns 29.7 ns 4
lstringa<16> copy{str_with_len_N};/256_median 29.8 ns 29.8 ns 4
lstringa<16> copy{str_with_len_N};/256_stddev 1.45 ns 1.45 ns 4
lstringa<16> copy{str_with_len_N};/256_cv 4.89 % 4.89 % 4
lstringa<16> copy{str_with_len_N};/512_mean 34.0 ns 34.0 ns 4
lstringa<16> copy{str_with_len_N};/512_median 32.6 ns 32.6 ns 4
lstringa<16> copy{str_with_len_N};/512_stddev 4.46 ns 4.46 ns 4
lstringa<16> copy{str_with_len_N};/512_cv 13.11 % 13.11 % 4
lstringa<16> copy{str_with_len_N};/1024_mean 53.7 ns 53.7 ns 4
lstringa<16> copy{str_with_len_N};/1024_median 53.9 ns 53.9 ns 4
lstringa<16> copy{str_with_len_N};/1024_stddev 0.505 ns 0.505 ns 4
lstringa<16> copy{str_with_len_N};/1024_cv 0.94 % 0.94 % 4
lstringa<16> copy{str_with_len_N};/2048_mean 66.7 ns 66.7 ns 4
lstringa<16> copy{str_with_len_N};/2048_median 67.0 ns 67.0 ns 4
lstringa<16> copy{str_with_len_N};/2048_stddev 4.26 ns 4.26 ns 4
lstringa<16> copy{str_with_len_N};/2048_cv 6.40 % 6.40 % 4
lstringa<16> copy{str_with_len_N};/4096_mean 88.0 ns 88.0 ns 4
lstringa<16> copy{str_with_len_N};/4096_median 87.0 ns 87.0 ns 4
lstringa<16> copy{str_with_len_N};/4096_stddev 2.20 ns 2.20 ns 4
lstringa<16> copy{str_with_len_N};/4096_cv 2.49 % 2.49 % 4
lstringa<512> copy{str_with_len_N};/15_mean 5.14 ns 5.14 ns 4
lstringa<512> copy{str_with_len_N};/15_median 5.12 ns 5.12 ns 4
lstringa<512> copy{str_with_len_N};/15_stddev 0.076 ns 0.076 ns 4
lstringa<512> copy{str_with_len_N};/15_cv 1.49 % 1.49 % 4
lstringa<512> copy{str_with_len_N};/16_mean 5.18 ns 5.18 ns 4
lstringa<512> copy{str_with_len_N};/16_median 5.16 ns 5.16 ns 4
lstringa<512> copy{str_with_len_N};/16_stddev 0.062 ns 0.062 ns 4
lstringa<512> copy{str_with_len_N};/16_cv 1.20 % 1.20 % 4
lstringa<512> copy{str_with_len_N};/23_mean 5.43 ns 5.43 ns 4
lstringa<512> copy{str_with_len_N};/23_median 5.40 ns 5.40 ns 4
lstringa<512> copy{str_with_len_N};/23_stddev 0.292 ns 0.292 ns 4
lstringa<512> copy{str_with_len_N};/23_cv 5.39 % 5.39 % 4
lstringa<512> copy{str_with_len_N};/24_mean 5.23 ns 5.23 ns 4
lstringa<512> copy{str_with_len_N};/24_median 5.24 ns 5.24 ns 4
lstringa<512> copy{str_with_len_N};/24_stddev 0.059 ns 0.059 ns 4
lstringa<512> copy{str_with_len_N};/24_cv 1.13 % 1.13 % 4
lstringa<512> copy{str_with_len_N};/32_mean 4.77 ns 4.77 ns 4
lstringa<512> copy{str_with_len_N};/32_median 4.77 ns 4.77 ns 4
lstringa<512> copy{str_with_len_N};/32_stddev 0.123 ns 0.123 ns 4
lstringa<512> copy{str_with_len_N};/32_cv 2.58 % 2.58 % 4
lstringa<512> copy{str_with_len_N};/64_mean 6.29 ns 6.29 ns 4
lstringa<512> copy{str_with_len_N};/64_median 6.29 ns 6.29 ns 4
lstringa<512> copy{str_with_len_N};/64_stddev 0.127 ns 0.127 ns 4
lstringa<512> copy{str_with_len_N};/64_cv 2.03 % 2.03 % 4
lstringa<512> copy{str_with_len_N};/128_mean 7.26 ns 7.26 ns 4
lstringa<512> copy{str_with_len_N};/128_median 7.29 ns 7.29 ns 4
lstringa<512> copy{str_with_len_N};/128_stddev 0.310 ns 0.310 ns 4
lstringa<512> copy{str_with_len_N};/128_cv 4.27 % 4.27 % 4
lstringa<512> copy{str_with_len_N};/256_mean 7.80 ns 7.80 ns 4
lstringa<512> copy{str_with_len_N};/256_median 7.84 ns 7.84 ns 4
lstringa<512> copy{str_with_len_N};/256_stddev 0.214 ns 0.214 ns 4
lstringa<512> copy{str_with_len_N};/256_cv 2.74 % 2.74 % 4
lstringa<512> copy{str_with_len_N};/512_mean 10.4 ns 10.4 ns 4
lstringa<512> copy{str_with_len_N};/512_median 10.4 ns 10.4 ns 4
lstringa<512> copy{str_with_len_N};/512_stddev 0.172 ns 0.172 ns 4
lstringa<512> copy{str_with_len_N};/512_cv 1.65 % 1.65 % 4
lstringa<512> copy{str_with_len_N};/1024_mean 54.1 ns 54.1 ns 4
lstringa<512> copy{str_with_len_N};/1024_median 54.2 ns 54.2 ns 4
lstringa<512> copy{str_with_len_N};/1024_stddev 1.32 ns 1.32 ns 4
lstringa<512> copy{str_with_len_N};/1024_cv 2.43 % 2.43 % 4
lstringa<512> copy{str_with_len_N};/2048_mean 66.6 ns 66.6 ns 4
lstringa<512> copy{str_with_len_N};/2048_median 63.3 ns 63.3 ns 4
lstringa<512> copy{str_with_len_N};/2048_stddev 7.31 ns 7.31 ns 4
lstringa<512> copy{str_with_len_N};/2048_cv 10.97 % 10.97 % 4
lstringa<512> copy{str_with_len_N};/4096_mean 85.3 ns 85.3 ns 4
lstringa<512> copy{str_with_len_N};/4096_median 84.7 ns 84.7 ns 4
lstringa<512> copy{str_with_len_N};/4096_stddev 2.25 ns 2.25 ns 4
lstringa<512> copy{str_with_len_N};/4096_cv 2.64 % 2.64 % 4
----- 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 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 27.0 ns 27.0 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.606 ns 0.606 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 2.26 % 2.26 % 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 11.3 ns 11.3 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 11.2 ns 11.2 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.252 ns 0.252 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 2.23 % 2.23 % 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 8.07 ns 8.07 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 8.07 ns 8.07 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.095 ns 0.095 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 1.18 % 1.18 % 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 8.02 ns 8.02 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 7.99 ns 7.99 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.170 ns 0.170 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 2.12 % 2.12 % 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 8.16 ns 8.16 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_median 8.05 ns 8.05 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.387 ns 0.387 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 4.75 % 4.75 % 4
----- 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.5 ns 23.5 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 23.4 ns 23.4 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.447 ns 0.447 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 1.90 % 1.90 % 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 10.0 ns 10.0 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 10.1 ns 10.1 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.250 ns 0.250 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 2.49 % 2.49 % 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 8.15 ns 8.15 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 8.10 ns 8.10 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.298 ns 0.298 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 3.66 % 3.66 % 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 8.03 ns 8.03 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 8.07 ns 8.07 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.111 ns 0.111 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.39 % 1.39 % 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 7.86 ns 7.86 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 7.82 ns 7.82 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.292 ns 0.292 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 3.71 % 3.71 % 4
----- 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.2 ns 28.2 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 27.6 ns 27.6 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 1.34 ns 1.34 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 4.77 % 4.77 % 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_mean 15.3 ns 15.3 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_median 15.3 ns 15.3 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_stddev 0.607 ns 0.607 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_cv 3.96 % 3.96 % 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_mean 13.7 ns 13.7 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_median 13.8 ns 13.8 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_stddev 0.253 ns 0.253 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_cv 1.85 % 1.85 % 4
----- 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 67.9 ns 67.9 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 67.5 ns 67.5 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 3.99 ns 3.99 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 5.88 % 5.88 % 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 26.1 ns 26.1 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 25.4 ns 25.4 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 2.88 ns 2.88 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 11.04 % 11.04 % 4
ssa s = "1234.567e10"; double res = *s.to_double()_mean 24.9 ns 24.9 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_median 25.0 ns 25.0 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.363 ns 0.363 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_cv 1.46 % 1.46 % 4
-- 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 1400 ns 1400 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_median 1400 ns 1400 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 38.7 ns 38.7 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_cv 2.76 % 2.76 % 4
std::string str; ... str += "abbaabbaabbaabba";_mean 339 ns 339 ns 4
std::string str; ... str += "abbaabbaabbaabba";_median 340 ns 340 ns 4
std::string str; ... str += "abbaabbaabbaabba";_stddev 7.76 ns 7.76 ns 4
std::string str; ... str += "abbaabbaabbaabba";_cv 2.29 % 2.29 % 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 357 ns 357 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_median 360 ns 360 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 9.38 ns 9.38 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 2.63 % 2.63 % 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 238 ns 238 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_median 237 ns 237 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 3.94 ns 3.94 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 1.66 % 1.66 % 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 211 ns 211 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_median 205 ns 205 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 14.0 ns 14.0 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 6.65 % 6.65 % 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 141 ns 141 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 141 ns 141 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 2.69 ns 2.69 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.91 % 1.91 % 4
-- 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 1387 ns 1387 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1390 ns 1390 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 35.2 ns 35.2 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 2.54 % 2.54 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1230 ns 1230 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1230 ns 1230 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 42.2 ns 42.2 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 3.43 % 3.43 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 388 ns 388 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 385 ns 385 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 11.0 ns 11.0 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.84 % 2.84 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 348 ns 348 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 342 ns 342 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 13.6 ns 13.6 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.91 % 3.91 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 303 ns 303 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 303 ns 303 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 14.6 ns 14.6 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 4.81 % 4.81 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 250 ns 250 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 252 ns 252 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 6.07 ns 6.07 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.42 % 2.42 % 4
-- 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 110614 ns 110615 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 110190 ns 110191 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 2152 ns 2152 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 1.95 % 1.95 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 72502 ns 72502 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 73060 ns 73060 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1314 ns 1314 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.81 % 1.81 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 42661 ns 42661 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 42668 ns 42668 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 789 ns 789 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.85 % 1.85 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 24880 ns 24880 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 24398 ns 24398 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1695 ns 1695 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 6.81 % 6.81 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 18255 ns 18255 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17111 ns 17111 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2640 ns 2640 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 14.46 % 14.46 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 19723 ns 19723 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 20313 ns 20313 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2091 ns 2091 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 10.60 % 10.60 % 4
-- 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 1684 ns 1684 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_median 1714 ns 1714 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_stddev 139 ns 139 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_cv 8.28 % 8.28 % 4
std::string str; ... str += str_var1 + str_var2;_mean 1517 ns 1517 ns 4
std::string str; ... str += str_var1 + str_var2;_median 1498 ns 1498 ns 4
std::string str; ... str += str_var1 + str_var2;_stddev 61.2 ns 61.2 ns 4
std::string str; ... str += str_var1 + str_var2;_cv 4.04 % 4.04 % 4
lstringa<16> str; ... str += str_var1 + str_var2;_mean 500 ns 500 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_median 477 ns 477 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_stddev 50.9 ns 50.9 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_cv 10.17 % 10.17 % 4
lstringa<128> str; ... str += str_var1 + str_var2;_mean 421 ns 421 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_median 421 ns 421 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_stddev 22.9 ns 22.9 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_cv 5.45 % 5.45 % 4
lstringa<512> str; ... str += str_var1 + str_var2;_mean 373 ns 373 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_median 368 ns 368 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_stddev 12.4 ns 12.4 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_cv 3.33 % 3.33 % 4
lstringa<1024> str; ... str += str_var1 + str_var2;_mean 305 ns 305 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_median 305 ns 305 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 3.45 ns 3.45 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_cv 1.13 % 1.13 % 4
-- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::stringstream str; str << "test = " << k << " times";_mean 3201 ns 3201 ns 4
std::stringstream str; str << "test = " << k << " times";_median 3192 ns 3192 ns 4
std::stringstream str; str << "test = " << k << " times";_stddev 107 ns 107 ns 4
std::stringstream str; str << "test = " << k << " times";_cv 3.34 % 3.34 % 4
std::string str = "test = " + std::to_string(k) + " times";_mean 440 ns 440 ns 4
std::string str = "test = " + std::to_string(k) + " times";_median 442 ns 442 ns 4
std::string str = "test = " + std::to_string(k) + " times";_stddev 8.66 ns 8.66 ns 4
std::string str = "test = " + std::to_string(k) + " times";_cv 1.97 % 1.97 % 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1483 ns 1483 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1486 ns 1486 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 9.75 ns 9.75 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 0.66 % 0.66 % 4
std::string str = std::format("test = {} times", k);_mean 1356 ns 1356 ns 4
std::string str = std::format("test = {} times", k);_median 1345 ns 1345 ns 4
std::string str = std::format("test = {} times", k);_stddev 39.9 ns 39.9 ns 4
std::string str = std::format("test = {} times", k);_cv 2.94 % 2.94 % 4
lstringa<8> str; str.format("test = {} times", k);_mean 1740 ns 1740 ns 4
lstringa<8> str; str.format("test = {} times", k);_median 1748 ns 1748 ns 4
lstringa<8> str; str.format("test = {} times", k);_stddev 49.6 ns 49.6 ns 4
lstringa<8> str; str.format("test = {} times", k);_cv 2.85 % 2.85 % 4
lstringa<32> str; str.format("test = {} times", k);_mean 1116 ns 1116 ns 4
lstringa<32> str; str.format("test = {} times", k);_median 1116 ns 1116 ns 4
lstringa<32> str; str.format("test = {} times", k);_stddev 9.91 ns 9.91 ns 4
lstringa<32> str; str.format("test = {} times", k);_cv 0.89 % 0.89 % 4
lstringa<8> str = "test = " + k + " times";_mean 304 ns 304 ns 4
lstringa<8> str = "test = " + k + " times";_median 304 ns 304 ns 4
lstringa<8> str = "test = " + k + " times";_stddev 5.92 ns 5.92 ns 4
lstringa<8> str = "test = " + k + " times";_cv 1.95 % 1.95 % 4
lstringa<32> str = "test = " + k + " times";_mean 148 ns 148 ns 4
lstringa<32> str = "test = " + k + " times";_median 147 ns 147 ns 4
lstringa<32> str = "test = " + k + " times";_stddev 2.68 ns 2.68 ns 4
lstringa<32> str = "test = " + k + " times";_cv 1.81 % 1.81 % 4
stringa str = "test = " + k + " times";_mean 167 ns 167 ns 4
stringa str = "test = " + k + " times";_median 165 ns 165 ns 4
stringa str = "test = " + k + " times";_stddev 7.60 ns 7.60 ns 4
stringa str = "test = " + k + " times";_cv 4.56 % 4.56 % 4
-- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string::find + substr + std::strtol_mean 280 ns 280 ns 4
std::string::find + substr + std::strtol_median 280 ns 280 ns 4
std::string::find + substr + std::strtol_stddev 5.77 ns 5.77 ns 4
std::string::find + substr + std::strtol_cv 2.06 % 2.06 % 4
ssa::splitter + ssa::as_int_mean 129 ns 129 ns 4
ssa::splitter + ssa::as_int_median 129 ns 129 ns 4
ssa::splitter + ssa::as_int_stddev 3.01 ns 3.01 ns 4
ssa::splitter + ssa::as_int_cv 2.33 % 2.33 % 4
ssa::splitf + functor_mean 128 ns 128 ns 4
ssa::splitf + functor_median 128 ns 128 ns 4
ssa::splitf + functor_stddev 1.92 ns 1.92 ns 4
ssa::splitf + functor_cv 1.50 % 1.50 % 4
-- 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 838 ns 838 ns 4
Naive (and wrong) replace symbols with std::string find + replace_median 835 ns 835 ns 4
Naive (and wrong) replace symbols with std::string find + replace_stddev 7.50 ns 7.50 ns 4
Naive (and wrong) replace symbols with std::string find + replace_cv 0.89 % 0.89 % 4
replace symbols with std::string find_first_of + replace_mean 2528 ns 2528 ns 4
replace symbols with std::string find_first_of + replace_median 2485 ns 2485 ns 4
replace symbols with std::string find_first_of + replace_stddev 126 ns 126 ns 4
replace symbols with std::string find_first_of + replace_cv 4.97 % 4.97 % 4
replace symbols with std::string_view find_first_of + copy_mean 1218 ns 1218 ns 4
replace symbols with std::string_view find_first_of + copy_median 1225 ns 1225 ns 4
replace symbols with std::string_view find_first_of + copy_stddev 46.1 ns 46.1 ns 4
replace symbols with std::string_view find_first_of + copy_cv 3.78 % 3.78 % 4
replace runtime symbols with string expressions and without remembering all search results_mean 1686 ns 1686 ns 4
replace runtime symbols with string expressions and without remembering all search results_median 1624 ns 1624 ns 4
replace runtime symbols with string expressions and without remembering all search results_stddev 148 ns 148 ns 4
replace runtime symbols with string expressions and without remembering all search results_cv 8.79 % 8.79 % 4
replace runtime symbols with simstr and memorization of all search results_mean 1067 ns 1067 ns 4
replace runtime symbols with simstr and memorization of all search results_median 1068 ns 1068 ns 4
replace runtime symbols with simstr and memorization of all search results_stddev 21.5 ns 21.5 ns 4
replace runtime symbols with simstr and memorization of all search results_cv 2.01 % 2.01 % 4
replace const symbols with string expressions and without remembering all search results_mean 1276 ns 1276 ns 4
replace const symbols with string expressions and without remembering all search results_median 1233 ns 1233 ns 4
replace const symbols with string expressions and without remembering all search results_stddev 114 ns 114 ns 4
replace const symbols with string expressions and without remembering all search results_cv 8.92 % 8.92 % 4
replace const symbols with string expressions and memorization of all search results_mean 875 ns 875 ns 4
replace const symbols with string expressions and memorization of all search results_median 881 ns 881 ns 4
replace const symbols with string expressions and memorization of all search results_stddev 23.8 ns 23.8 ns 4
replace const symbols with string expressions and memorization of all search results_cv 2.71 % 2.71 % 4
-- 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 189 ns 189 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_median 190 ns 190 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_stddev 4.78 ns 4.78 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_cv 2.53 % 2.53 % 4
Short replace symbols with std::string find_first_of + replace_mean 351 ns 351 ns 4
Short replace symbols with std::string find_first_of + replace_median 354 ns 354 ns 4
Short replace symbols with std::string find_first_of + replace_stddev 7.55 ns 7.55 ns 4
Short replace symbols with std::string find_first_of + replace_cv 2.15 % 2.15 % 4
Short replace symbols with std::string_view find_first_of + copy_mean 204 ns 204 ns 4
Short replace symbols with std::string_view find_first_of + copy_median 204 ns 204 ns 4
Short replace symbols with std::string_view find_first_of + copy_stddev 2.22 ns 2.22 ns 4
Short replace symbols with std::string_view find_first_of + copy_cv 1.09 % 1.09 % 4
Short replace runtime symbols with string expressions and without remembering all search results_mean 208 ns 208 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_median 206 ns 206 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_stddev 7.59 ns 7.59 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_cv 3.65 % 3.65 % 4
Short replace runtime symbols with simstr and memorization of all search results_mean 262 ns 262 ns 4
Short replace runtime symbols with simstr and memorization of all search results_median 263 ns 263 ns 4
Short replace runtime symbols with simstr and memorization of all search results_stddev 22.6 ns 22.6 ns 4
Short replace runtime symbols with simstr and memorization of all search results_cv 8.63 % 8.63 % 4
Short replace const symbols with string expressions and without remembering all search results_mean 194 ns 194 ns 4
Short replace const symbols with string expressions and without remembering all search results_median 195 ns 195 ns 4
Short replace const symbols with string expressions and without remembering all search results_stddev 14.2 ns 14.2 ns 4
Short replace const symbols with string expressions and without remembering all search results_cv 7.31 % 7.31 % 4
Short replace const symbols with string expressions and memorization of all search results_mean 176 ns 176 ns 4
Short replace const symbols with string expressions and memorization of all search results_median 176 ns 176 ns 4
Short replace const symbols with string expressions and memorization of all search results_stddev 3.86 ns 3.86 ns 4
Short replace const symbols with string expressions and memorization of all search results_cv 2.19 % 2.19 % 4
----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to ---- in std::string|64_mean 259 ns 259 ns 4
replace bb to ---- in std::string|64_median 257 ns 257 ns 4
replace bb to ---- in std::string|64_stddev 3.73 ns 3.73 ns 4
replace bb to ---- in std::string|64_cv 1.44 % 1.44 % 4
replace bb to ---- in std::string|256_mean 861 ns 861 ns 4
replace bb to ---- in std::string|256_median 859 ns 859 ns 4
replace bb to ---- in std::string|256_stddev 13.8 ns 13.8 ns 4
replace bb to ---- in std::string|256_cv 1.60 % 1.60 % 4
replace bb to ---- in std::string|512_mean 1615 ns 1615 ns 4
replace bb to ---- in std::string|512_median 1610 ns 1610 ns 4
replace bb to ---- in std::string|512_stddev 33.2 ns 33.2 ns 4
replace bb to ---- in std::string|512_cv 2.06 % 2.06 % 4
replace bb to ---- in std::string|1024_mean 3426 ns 3426 ns 4
replace bb to ---- in std::string|1024_median 3441 ns 3441 ns 4
replace bb to ---- in std::string|1024_stddev 49.4 ns 49.4 ns 4
replace bb to ---- in std::string|1024_cv 1.44 % 1.44 % 4
replace bb to ---- in std::string|2048_mean 8466 ns 8466 ns 4
replace bb to ---- in std::string|2048_median 8611 ns 8611 ns 4
replace bb to ---- in std::string|2048_stddev 419 ns 419 ns 4
replace bb to ---- in std::string|2048_cv 4.94 % 4.94 % 4
replace bb to ---- in lstringa<8>|64_mean 204 ns 204 ns 4
replace bb to ---- in lstringa<8>|64_median 206 ns 206 ns 4
replace bb to ---- in lstringa<8>|64_stddev 4.78 ns 4.78 ns 4
replace bb to ---- in lstringa<8>|64_cv 2.34 % 2.34 % 4
replace bb to ---- in lstringa<8>|256_mean 556 ns 556 ns 4
replace bb to ---- in lstringa<8>|256_median 555 ns 555 ns 4
replace bb to ---- in lstringa<8>|256_stddev 21.2 ns 21.2 ns 4
replace bb to ---- in lstringa<8>|256_cv 3.82 % 3.82 % 4
replace bb to ---- in lstringa<8>|512_mean 970 ns 970 ns 4
replace bb to ---- in lstringa<8>|512_median 970 ns 970 ns 4
replace bb to ---- in lstringa<8>|512_stddev 24.8 ns 24.8 ns 4
replace bb to ---- in lstringa<8>|512_cv 2.56 % 2.56 % 4
replace bb to ---- in lstringa<8>|1024_mean 1985 ns 1985 ns 4
replace bb to ---- in lstringa<8>|1024_median 1963 ns 1963 ns 4
replace bb to ---- in lstringa<8>|1024_stddev 186 ns 186 ns 4
replace bb to ---- in lstringa<8>|1024_cv 9.38 % 9.38 % 4
replace bb to ---- in lstringa<8>|2048_mean 3912 ns 3912 ns 4
replace bb to ---- in lstringa<8>|2048_median 3979 ns 3979 ns 4
replace bb to ---- in lstringa<8>|2048_stddev 334 ns 334 ns 4
replace bb to ---- in lstringa<8>|2048_cv 8.53 % 8.53 % 4
replace bb to ---- by init stringa|64_mean 119 ns 119 ns 4
replace bb to ---- by init stringa|64_median 119 ns 119 ns 4
replace bb to ---- by init stringa|64_stddev 2.17 ns 2.17 ns 4
replace bb to ---- by init stringa|64_cv 1.82 % 1.82 % 4
replace bb to ---- by init stringa|256_mean 335 ns 335 ns 4
replace bb to ---- by init stringa|256_median 331 ns 331 ns 4
replace bb to ---- by init stringa|256_stddev 14.8 ns 14.8 ns 4
replace bb to ---- by init stringa|256_cv 4.43 % 4.43 % 4
replace bb to ---- by init stringa|512_mean 761 ns 761 ns 4
replace bb to ---- by init stringa|512_median 764 ns 764 ns 4
replace bb to ---- by init stringa|512_stddev 9.46 ns 9.46 ns 4
replace bb to ---- by init stringa|512_cv 1.24 % 1.24 % 4
replace bb to ---- by init stringa|1024_mean 1682 ns 1682 ns 4
replace bb to ---- by init stringa|1024_median 1658 ns 1658 ns 4
replace bb to ---- by init stringa|1024_stddev 77.3 ns 77.3 ns 4
replace bb to ---- by init stringa|1024_cv 4.60 % 4.60 % 4
replace bb to ---- by init stringa|2048_mean 3300 ns 3300 ns 4
replace bb to ---- by init stringa|2048_median 3308 ns 3308 ns 4
replace bb to ---- by init stringa|2048_stddev 42.3 ns 42.3 ns 4
replace bb to ---- by init stringa|2048_cv 1.28 % 1.28 % 4
----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to -- in std::string|64_mean 199 ns 199 ns 4
replace bb to -- in std::string|64_median 200 ns 200 ns 4
replace bb to -- in std::string|64_stddev 4.68 ns 4.68 ns 4
replace bb to -- in std::string|64_cv 2.35 % 2.35 % 4
replace bb to -- in std::string|256_mean 635 ns 635 ns 4
replace bb to -- in std::string|256_median 628 ns 628 ns 4
replace bb to -- in std::string|256_stddev 17.5 ns 17.5 ns 4
replace bb to -- in std::string|256_cv 2.76 % 2.76 % 4
replace bb to -- in std::string|512_mean 1408 ns 1408 ns 4
replace bb to -- in std::string|512_median 1403 ns 1403 ns 4
replace bb to -- in std::string|512_stddev 87.1 ns 87.1 ns 4
replace bb to -- in std::string|512_cv 6.19 % 6.19 % 4
replace bb to -- in std::string|1024_mean 2878 ns 2878 ns 4
replace bb to -- in std::string|1024_median 2843 ns 2843 ns 4
replace bb to -- in std::string|1024_stddev 284 ns 284 ns 4
replace bb to -- in std::string|1024_cv 9.87 % 9.87 % 4
replace bb to -- in std::string|2048_mean 4530 ns 4530 ns 4
replace bb to -- in std::string|2048_median 4518 ns 4518 ns 4
replace bb to -- in std::string|2048_stddev 230 ns 230 ns 4
replace bb to -- in std::string|2048_cv 5.07 % 5.07 % 4
replace bb to -- in lstringa<8>|64_mean 137 ns 137 ns 4
replace bb to -- in lstringa<8>|64_median 137 ns 137 ns 4
replace bb to -- in lstringa<8>|64_stddev 2.56 ns 2.56 ns 4
replace bb to -- in lstringa<8>|64_cv 1.86 % 1.86 % 4
replace bb to -- in lstringa<8>|256_mean 347 ns 347 ns 4
replace bb to -- in lstringa<8>|256_median 345 ns 345 ns 4
replace bb to -- in lstringa<8>|256_stddev 9.86 ns 9.86 ns 4
replace bb to -- in lstringa<8>|256_cv 2.84 % 2.84 % 4
replace bb to -- in lstringa<8>|512_mean 569 ns 569 ns 4
replace bb to -- in lstringa<8>|512_median 568 ns 568 ns 4
replace bb to -- in lstringa<8>|512_stddev 9.56 ns 9.56 ns 4
replace bb to -- in lstringa<8>|512_cv 1.68 % 1.68 % 4
replace bb to -- in lstringa<8>|1024_mean 1085 ns 1085 ns 4
replace bb to -- in lstringa<8>|1024_median 1069 ns 1069 ns 4
replace bb to -- in lstringa<8>|1024_stddev 47.7 ns 47.7 ns 4
replace bb to -- in lstringa<8>|1024_cv 4.40 % 4.40 % 4
replace bb to -- in lstringa<8>|2048_mean 2030 ns 2030 ns 4
replace bb to -- in lstringa<8>|2048_median 2025 ns 2025 ns 4
replace bb to -- in lstringa<8>|2048_stddev 50.8 ns 50.8 ns 4
replace bb to -- in lstringa<8>|2048_cv 2.50 % 2.50 % 4
replace bb to -- by init stringa|64_mean 107 ns 107 ns 4
replace bb to -- by init stringa|64_median 107 ns 107 ns 4
replace bb to -- by init stringa|64_stddev 0.854 ns 0.854 ns 4
replace bb to -- by init stringa|64_cv 0.80 % 0.80 % 4
replace bb to -- by init stringa|256_mean 289 ns 289 ns 4
replace bb to -- by init stringa|256_median 288 ns 288 ns 4
replace bb to -- by init stringa|256_stddev 7.41 ns 7.41 ns 4
replace bb to -- by init stringa|256_cv 2.57 % 2.57 % 4
replace bb to -- by init stringa|512_mean 523 ns 523 ns 4
replace bb to -- by init stringa|512_median 518 ns 518 ns 4
replace bb to -- by init stringa|512_stddev 16.4 ns 16.4 ns 4
replace bb to -- by init stringa|512_cv 3.13 % 3.13 % 4
replace bb to -- by init stringa|1024_mean 1033 ns 1033 ns 4
replace bb to -- by init stringa|1024_median 1016 ns 1016 ns 4
replace bb to -- by init stringa|1024_stddev 39.1 ns 39.1 ns 4
replace bb to -- by init stringa|1024_cv 3.79 % 3.79 % 4
replace bb to -- by init stringa|2048_mean 1962 ns 1962 ns 4
replace bb to -- by init stringa|2048_median 1904 ns 1904 ns 4
replace bb to -- by init stringa|2048_stddev 118 ns 118 ns 4
replace bb to -- by init stringa|2048_cv 6.02 % 6.02 % 4
----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
hashStrMapA<size_t> emplace & find stringa;_mean 3722252 ns 3722266 ns 4
hashStrMapA<size_t> emplace & find stringa;_median 3715967 ns 3715981 ns 4
hashStrMapA<size_t> emplace & find stringa;_stddev 73617 ns 73617 ns 4
hashStrMapA<size_t> emplace & find stringa;_cv 1.98 % 1.98 % 4
std::unordered_map<std::string, size_t> emplace & find std::string;_mean 3459756 ns 3459769 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_median 3450948 ns 3450961 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_stddev 48808 ns 48805 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_cv 1.41 % 1.41 % 4
hashStrMapA<size_t> emplace & find ssa;_mean 3732175 ns 3732184 ns 4
hashStrMapA<size_t> emplace & find ssa;_median 3724329 ns 3724337 ns 4
hashStrMapA<size_t> emplace & find ssa;_stddev 33009 ns 33011 ns 4
hashStrMapA<size_t> emplace & find ssa;_cv 0.88 % 0.88 % 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_mean 4165106 ns 4165116 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_median 4053998 ns 4054006 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_stddev 289772 ns 289775 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_cv 6.96 % 6.96 % 4
----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Build func full name std::string;_mean 1064 ns 1064 ns 4
Build func full name std::string;_median 1061 ns 1061 ns 4
Build func full name std::string;_stddev 12.6 ns 12.6 ns 4
Build func full name std::string;_cv 1.18 % 1.18 % 4
Build func full name std::string 1;_mean 1133 ns 1133 ns 4
Build func full name std::string 1;_median 1137 ns 1137 ns 4
Build func full name std::string 1;_stddev 35.9 ns 35.9 ns 4
Build func full name std::string 1;_cv 3.17 % 3.17 % 4
Build func full name std::stream;_mean 2789 ns 2789 ns 4
Build func full name std::stream;_median 2800 ns 2800 ns 4
Build func full name std::stream;_stddev 141 ns 141 ns 4
Build func full name std::stream;_cv 5.05 % 5.05 % 4
Build func full name stringa;_mean 575 ns 575 ns 4
Build func full name stringa;_median 574 ns 574 ns 4
Build func full name stringa;_stddev 15.4 ns 15.4 ns 4
Build func full name stringa;_cv 2.68 % 2.68 % 4
Build func full name stringa 1;_mean 897 ns 897 ns 4
Build func full name stringa 1;_median 896 ns 896 ns 4
Build func full name stringa 1;_stddev 13.8 ns 13.8 ns 4
Build func full name stringa 1;_cv 1.54 % 1.54 % 4

View File

@ -0,0 +1,989 @@
Benchmarks of simstr, version 1.8.1
Sources: https://github.com/orefkov/simstr
Results: https://orefkov.github.io/simstr/results.html
Compiler GNU 15.2.0
2026-03-22T13:04:50+03:00
Running ./benchStr
Run on (32 X 2494.22 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x16)
L1 Instruction 32 KiB (x16)
L2 Unified 256 KiB (x16)
L3 Unified 40960 KiB (x1)
Load Average: 0.06, 0.09, 0.08
***WARNING*** ASLR is enabled, the results may have unreproducible noise in them.
--------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------------------------------------------------------------------------------------------
----- Concatenate email ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat email std::format_mean 160 ns 160 ns 4
Concat email std::format_median 162 ns 162 ns 4
Concat email std::format_stddev 4.85 ns 4.85 ns 4
Concat email std::format_cv 3.03 % 3.03 % 4
Concat email std::stringstream_mean 321 ns 321 ns 4
Concat email std::stringstream_median 322 ns 322 ns 4
Concat email std::stringstream_stddev 3.32 ns 3.32 ns 4
Concat email std::stringstream_cv 1.04 % 1.03 % 4
Concat email stringzilla append_mean 108 ns 108 ns 4
Concat email stringzilla append_median 108 ns 108 ns 4
Concat email stringzilla append_stddev 3.84 ns 3.85 ns 4
Concat email stringzilla append_cv 3.57 % 3.57 % 4
Concat email stringzilla concat_mean 42.8 ns 42.8 ns 4
Concat email stringzilla concat_median 42.0 ns 42.0 ns 4
Concat email stringzilla concat_stddev 1.96 ns 1.96 ns 4
Concat email stringzilla concat_cv 4.57 % 4.57 % 4
Concat email std::string append_mean 79.2 ns 79.2 ns 4
Concat email std::string append_median 79.1 ns 79.1 ns 4
Concat email std::string append_stddev 2.03 ns 2.03 ns 4
Concat email std::string append_cv 2.57 % 2.57 % 4
Concat email std::string by strexpr_mean 34.4 ns 34.4 ns 4
Concat email std::string by strexpr_median 34.7 ns 34.7 ns 4
Concat email std::string by strexpr_stddev 0.818 ns 0.818 ns 4
Concat email std::string by strexpr_cv 2.38 % 2.38 % 4
Concat email stringa_mean 40.7 ns 40.7 ns 4
Concat email stringa_median 40.5 ns 40.5 ns 4
Concat email stringa_stddev 0.971 ns 0.971 ns 4
Concat email stringa_cv 2.38 % 2.38 % 4
----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and number by std to std::string_mean 214 ns 214 ns 4
Concat std::string and number by std to std::string_median 216 ns 216 ns 4
Concat std::string and number by std to std::string_stddev 4.91 ns 4.91 ns 4
Concat std::string and number by std to std::string_cv 2.30 % 2.30 % 4
Concat std::string and number by StrExpr to std::string_mean 102 ns 102 ns 4
Concat std::string and number by StrExpr to std::string_median 101 ns 101 ns 4
Concat std::string and number by StrExpr to std::string_stddev 2.74 ns 2.74 ns 4
Concat std::string and number by StrExpr to std::string_cv 2.69 % 2.69 % 4
Concat stringa and number by StrExpr to simstr::stringa_mean 72.3 ns 72.3 ns 4
Concat stringa and number by StrExpr to simstr::stringa_median 72.4 ns 72.4 ns 4
Concat stringa and number by StrExpr to simstr::stringa_stddev 1.59 ns 1.59 ns 4
Concat stringa and number by StrExpr to simstr::stringa_cv 2.21 % 2.21 % 4
Concat stringa and number by e_concat to simstr::stringa_mean 77.7 ns 77.7 ns 4
Concat stringa and number by e_concat to simstr::stringa_median 77.5 ns 77.5 ns 4
Concat stringa and number by e_concat to simstr::stringa_stddev 2.73 ns 2.73 ns 4
Concat stringa and number by e_concat to simstr::stringa_cv 3.52 % 3.52 % 4
----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and format hex number and literal to std::string_mean 728 ns 728 ns 4
Concat std::string and format hex number and literal to std::string_median 732 ns 732 ns 4
Concat std::string and format hex number and literal to std::string_stddev 19.6 ns 19.6 ns 4
Concat std::string and format hex number and literal to std::string_cv 2.68 % 2.68 % 4
std::format std::string and hex number by literal to std::string_mean 893 ns 893 ns 4
std::format std::string and hex number by literal to std::string_median 890 ns 890 ns 4
std::format std::string and hex number by literal to std::string_stddev 22.3 ns 22.3 ns 4
std::format std::string and hex number by literal to std::string_cv 2.49 % 2.49 % 4
Concat std::string and std::to_chars and string to std::string_mean 199 ns 199 ns 4
Concat std::string and std::to_chars and string to std::string_median 199 ns 199 ns 4
Concat std::string and std::to_chars and string to std::string_stddev 1.39 ns 1.39 ns 4
Concat std::string and std::to_chars and string to std::string_cv 0.70 % 0.70 % 4
Concat std::string and hex number and literal by StrExpr to std::string_mean 125 ns 125 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_median 126 ns 126 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_stddev 1.84 ns 1.84 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_cv 1.47 % 1.47 % 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 122 ns 122 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 122 ns 122 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 1.10 ns 1.10 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 0.90 % 0.90 % 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 125 ns 125 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_median 125 ns 125 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 2.16 ns 2.16 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 1.73 % 1.73 % 4
Subst stringa and hex number by e_subst literal to simstr::stringa_mean 172 ns 172 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_median 171 ns 171 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 4.63 ns 4.63 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_cv 2.69 % 2.69 % 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_mean 280 ns 280 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_median 279 ns 279 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_stddev 5.80 ns 5.80 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_cv 2.07 % 2.07 % 4
---- format/vformat and subst/vsubst octal number to 32 symbols result ----/repeats:1 0.000 ns 0.000 ns 1000000000000
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_mean 261 ns 261 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_median 261 ns 261 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_stddev 4.51 ns 4.51 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_cv 1.73 % 1.73 % 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_mean 315 ns 315 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_median 316 ns 316 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_stddev 3.45 ns 3.45 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_cv 1.09 % 1.09 % 4
e_vsubst(pattern, i / 0x8a010_fmt)_mean 593 ns 593 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_median 587 ns 587 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_stddev 13.1 ns 13.1 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_cv 2.21 % 2.21 % 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_mean 629 ns 629 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_median 631 ns 631 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_stddev 19.2 ns 19.2 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_cv 3.06 % 3.06 % 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_mean 788 ns 788 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_median 794 ns 794 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_stddev 12.1 ns 12.1 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_cv 1.54 % 1.54 % 4
std::format("abcdefghihklmopqr {:#010o} end", i)_mean 1171 ns 1171 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_median 1170 ns 1170 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_stddev 4.63 ns 4.63 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_cv 0.40 % 0.40 % 4
std::vformat(pattern, std::make_format_args(i))_mean 1176 ns 1176 ns 4
std::vformat(pattern, std::make_format_args(i))_median 1174 ns 1174 ns 4
std::vformat(pattern, std::make_format_args(i))_stddev 12.9 ns 12.9 ns 4
std::vformat(pattern, std::make_format_args(i))_cv 1.09 % 1.09 % 4
std::format with std::formatted_size_mean 2267 ns 2267 ns 4
std::format with std::formatted_size_median 2276 ns 2276 ns 4
std::format with std::formatted_size_stddev 38.4 ns 38.4 ns 4
std::format with std::formatted_size_cv 1.69 % 1.69 % 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_mean 2021 ns 2021 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_median 2023 ns 2023 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_stddev 41.5 ns 41.5 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_cv 2.05 % 2.05 % 4
----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string by std to std::string_mean 47.9 ns 47.9 ns 4
Concat std::string by std to std::string_median 47.9 ns 47.9 ns 4
Concat std::string by std to std::string_stddev 0.383 ns 0.383 ns 4
Concat std::string by std to std::string_cv 0.80 % 0.80 % 4
Concat std::string by StrExpr to std::string_mean 35.3 ns 35.3 ns 4
Concat std::string by StrExpr to std::string_median 35.3 ns 35.3 ns 4
Concat std::string by StrExpr to std::string_stddev 0.618 ns 0.618 ns 4
Concat std::string by StrExpr to std::string_cv 1.75 % 1.75 % 4
Concat stringa by StrExpr to stringa_mean 27.4 ns 27.4 ns 4
Concat stringa by StrExpr to stringa_median 27.4 ns 27.4 ns 4
Concat stringa by StrExpr to stringa_stddev 0.154 ns 0.153 ns 4
Concat stringa by StrExpr to stringa_cv 0.56 % 0.56 % 4
----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Find concat three std::string_mean 119 ns 119 ns 4
Find concat three std::string_median 118 ns 118 ns 4
Find concat three std::string_stddev 1.87 ns 1.87 ns 4
Find concat three std::string_cv 1.57 % 1.57 % 4
Find concat three strexpr_mean 38.2 ns 38.2 ns 4
Find concat three strexpr_median 38.2 ns 38.2 ns 4
Find concat three strexpr_stddev 0.339 ns 0.339 ns 4
Find concat three strexpr_cv 0.89 % 0.89 % 4
Find concat three simstr_mean 15.6 ns 15.6 ns 4
Find concat three simstr_median 15.6 ns 15.6 ns 4
Find concat three simstr_stddev 0.214 ns 0.214 ns 4
Find concat three simstr_cv 1.37 % 1.37 % 4
Find concat three stringzilla string_mean 125 ns 125 ns 4
Find concat three stringzilla string_median 125 ns 125 ns 4
Find concat three stringzilla string_stddev 1.18 ns 1.18 ns 4
Find concat three stringzilla string_cv 0.94 % 0.94 % 4
----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
BuildTypeNameStr 0/0_mean 8.65 ns 8.65 ns 4
BuildTypeNameStr 0/0_median 8.66 ns 8.66 ns 4
BuildTypeNameStr 0/0_stddev 0.131 ns 0.131 ns 4
BuildTypeNameStr 0/0_cv 1.51 % 1.51 % 4
BuildTypeNameExp 0/0_mean 6.99 ns 6.99 ns 4
BuildTypeNameExp 0/0_median 7.01 ns 7.01 ns 4
BuildTypeNameExp 0/0_stddev 0.134 ns 0.134 ns 4
BuildTypeNameExp 0/0_cv 1.92 % 1.92 % 4
BuildTypeNameSim 0/0_mean 4.97 ns 4.97 ns 4
BuildTypeNameSim 0/0_median 4.98 ns 4.98 ns 4
BuildTypeNameSim 0/0_stddev 0.065 ns 0.065 ns 4
BuildTypeNameSim 0/0_cv 1.31 % 1.31 % 4
BuildTypeNameStr 10/10_mean 76.6 ns 76.6 ns 4
BuildTypeNameStr 10/10_median 76.1 ns 76.1 ns 4
BuildTypeNameStr 10/10_stddev 1.27 ns 1.27 ns 4
BuildTypeNameStr 10/10_cv 1.65 % 1.65 % 4
BuildTypeNameExp 10/10_mean 27.9 ns 27.9 ns 4
BuildTypeNameExp 10/10_median 27.9 ns 27.9 ns 4
BuildTypeNameExp 10/10_stddev 0.740 ns 0.740 ns 4
BuildTypeNameExp 10/10_cv 2.66 % 2.66 % 4
BuildTypeNameSim 10/10_mean 22.6 ns 22.6 ns 4
BuildTypeNameSim 10/10_median 22.3 ns 22.3 ns 4
BuildTypeNameSim 10/10_stddev 0.683 ns 0.683 ns 4
BuildTypeNameSim 10/10_cv 3.02 % 3.02 % 4
----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat with replace str_mean 236 ns 236 ns 4
Concat with replace str_median 236 ns 236 ns 4
Concat with replace str_stddev 4.01 ns 4.01 ns 4
Concat with replace str_cv 1.70 % 1.70 % 4
Concat with replace exp_mean 135 ns 135 ns 4
Concat with replace exp_median 134 ns 134 ns 4
Concat with replace exp_stddev 3.94 ns 3.94 ns 4
Concat with replace exp_cv 2.92 % 2.92 % 4
----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e;_mean 1.13 ns 1.13 ns 4
std::string e;_median 1.13 ns 1.13 ns 4
std::string e;_stddev 0.012 ns 0.012 ns 4
std::string e;_cv 1.09 % 1.09 % 4
std::string_view e;_mean 0.754 ns 0.754 ns 4
std::string_view e;_median 0.751 ns 0.751 ns 4
std::string_view e;_stddev 0.013 ns 0.013 ns 4
std::string_view e;_cv 1.68 % 1.68 % 4
ssa e;_mean 0.187 ns 0.187 ns 4
ssa e;_median 0.186 ns 0.186 ns 4
ssa e;_stddev 0.002 ns 0.002 ns 4
ssa e;_cv 1.20 % 1.20 % 4
stringa e;_mean 0.753 ns 0.753 ns 4
stringa e;_median 0.757 ns 0.757 ns 4
stringa e;_stddev 0.011 ns 0.011 ns 4
stringa e;_cv 1.52 % 1.52 % 4
lstringa<20> e;_mean 1.14 ns 1.14 ns 4
lstringa<20> e;_median 1.15 ns 1.15 ns 4
lstringa<20> e;_stddev 0.016 ns 0.016 ns 4
lstringa<20> e;_cv 1.44 % 1.44 % 4
lstringa<40> e;_mean 1.15 ns 1.15 ns 4
lstringa<40> e;_median 1.15 ns 1.15 ns 4
lstringa<40> e;_stddev 0.016 ns 0.016 ns 4
lstringa<40> e;_cv 1.39 % 1.39 % 4
----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "Test text";_mean 1.89 ns 1.89 ns 4
std::string e = "Test text";_median 1.89 ns 1.89 ns 4
std::string e = "Test text";_stddev 0.034 ns 0.034 ns 4
std::string e = "Test text";_cv 1.80 % 1.80 % 4
std::string_view e = "Test text";_mean 0.754 ns 0.754 ns 4
std::string_view e = "Test text";_median 0.753 ns 0.753 ns 4
std::string_view e = "Test text";_stddev 0.007 ns 0.007 ns 4
std::string_view e = "Test text";_cv 0.97 % 0.97 % 4
ssa e = "Test text";_mean 0.757 ns 0.757 ns 4
ssa e = "Test text";_median 0.761 ns 0.761 ns 4
ssa e = "Test text";_stddev 0.011 ns 0.011 ns 4
ssa e = "Test text";_cv 1.44 % 1.44 % 4
stringa e = "Test text";_mean 1.13 ns 1.13 ns 4
stringa e = "Test text";_median 1.13 ns 1.13 ns 4
stringa e = "Test text";_stddev 0.014 ns 0.014 ns 4
stringa e = "Test text";_cv 1.26 % 1.26 % 4
lstringa<20> e = "Test text";_mean 1.92 ns 1.92 ns 4
lstringa<20> e = "Test text";_median 1.89 ns 1.89 ns 4
lstringa<20> e = "Test text";_stddev 0.080 ns 0.080 ns 4
lstringa<20> e = "Test text";_cv 4.18 % 4.18 % 4
lstringa<40> e = "Test text";_mean 1.90 ns 1.90 ns 4
lstringa<40> e = "Test text";_median 1.90 ns 1.90 ns 4
lstringa<40> e = "Test text";_stddev 0.021 ns 0.021 ns 4
lstringa<40> e = "Test text";_cv 1.08 % 1.08 % 4
----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890";_mean 19.7 ns 19.7 ns 4
std::string e = "123456789012345678901234567890";_median 19.8 ns 19.8 ns 4
std::string e = "123456789012345678901234567890";_stddev 0.335 ns 0.335 ns 4
std::string e = "123456789012345678901234567890";_cv 1.70 % 1.70 % 4
std::string_view e = "123456789012345678901234567890";_mean 0.751 ns 0.751 ns 4
std::string_view e = "123456789012345678901234567890";_median 0.752 ns 0.752 ns 4
std::string_view e = "123456789012345678901234567890";_stddev 0.009 ns 0.009 ns 4
std::string_view e = "123456789012345678901234567890";_cv 1.19 % 1.19 % 4
ssa e = "123456789012345678901234567890";_mean 0.761 ns 0.761 ns 4
ssa e = "123456789012345678901234567890";_median 0.764 ns 0.764 ns 4
ssa e = "123456789012345678901234567890";_stddev 0.014 ns 0.014 ns 4
ssa e = "123456789012345678901234567890";_cv 1.89 % 1.89 % 4
stringa e = "123456789012345678901234567890";_mean 1.13 ns 1.13 ns 4
stringa e = "123456789012345678901234567890";_median 1.14 ns 1.14 ns 4
stringa e = "123456789012345678901234567890";_stddev 0.015 ns 0.015 ns 4
stringa e = "123456789012345678901234567890";_cv 1.34 % 1.34 % 4
lstringa<20> e = "123456789012345678901234567890";_mean 18.3 ns 18.3 ns 4
lstringa<20> e = "123456789012345678901234567890";_median 18.3 ns 18.3 ns 4
lstringa<20> e = "123456789012345678901234567890";_stddev 0.389 ns 0.389 ns 4
lstringa<20> e = "123456789012345678901234567890";_cv 2.12 % 2.12 % 4
lstringa<40> e = "123456789012345678901234567890";_mean 1.91 ns 1.91 ns 4
lstringa<40> e = "123456789012345678901234567890";_median 1.91 ns 1.91 ns 4
lstringa<40> e = "123456789012345678901234567890";_stddev 0.011 ns 0.011 ns 4
lstringa<40> e = "123456789012345678901234567890";_cv 0.60 % 0.60 % 4
----- 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.03 ns 5.03 ns 4
std::string e = "Test text"; auto c{e};_median 5.05 ns 5.05 ns 4
std::string e = "Test text"; auto c{e};_stddev 0.100 ns 0.100 ns 4
std::string e = "Test text"; auto c{e};_cv 1.98 % 1.98 % 4
std::string_view e = "Test text"; auto c{e};_mean 0.388 ns 0.388 ns 4
std::string_view e = "Test text"; auto c{e};_median 0.389 ns 0.389 ns 4
std::string_view e = "Test text"; auto c{e};_stddev 0.003 ns 0.003 ns 4
std::string_view e = "Test text"; auto c{e};_cv 0.81 % 0.81 % 4
ssa e = "Test text"; auto c{e};_mean 0.388 ns 0.388 ns 4
ssa e = "Test text"; auto c{e};_median 0.391 ns 0.391 ns 4
ssa e = "Test text"; auto c{e};_stddev 0.009 ns 0.009 ns 4
ssa e = "Test text"; auto c{e};_cv 2.21 % 2.21 % 4
stringa e = "Test text"; auto c{e};_mean 1.13 ns 1.13 ns 4
stringa e = "Test text"; auto c{e};_median 1.13 ns 1.13 ns 4
stringa e = "Test text"; auto c{e};_stddev 0.017 ns 0.017 ns 4
stringa e = "Test text"; auto c{e};_cv 1.53 % 1.53 % 4
lstringa<20> e = "Test text"; auto c{e};_mean 1.15 ns 1.15 ns 4
lstringa<20> e = "Test text"; auto c{e};_median 1.15 ns 1.15 ns 4
lstringa<20> e = "Test text"; auto c{e};_stddev 0.018 ns 0.018 ns 4
lstringa<20> e = "Test text"; auto c{e};_cv 1.60 % 1.60 % 4
lstringa<40> e = "Test text"; auto c{e};_mean 1.15 ns 1.15 ns 4
lstringa<40> e = "Test text"; auto c{e};_median 1.15 ns 1.15 ns 4
lstringa<40> e = "Test text"; auto c{e};_stddev 0.016 ns 0.016 ns 4
lstringa<40> e = "Test text"; auto c{e};_cv 1.38 % 1.38 % 4
----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890"; auto c{e};_mean 23.2 ns 23.2 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_median 23.4 ns 23.4 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_stddev 0.477 ns 0.477 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_cv 2.06 % 2.06 % 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 0.759 ns 0.759 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_median 0.760 ns 0.760 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.004 ns 0.004 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 0.54 % 0.54 % 4
ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.758 ns 0.758 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_median 0.754 ns 0.754 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.017 ns 0.017 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_cv 2.19 % 2.19 % 4
stringa e = "123456789012345678901234567890"; auto c{e};_mean 6.85 ns 6.85 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_median 6.85 ns 6.85 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.024 ns 0.024 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_cv 0.36 % 0.36 % 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 17.7 ns 17.7 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 17.6 ns 17.6 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.244 ns 0.244 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 1.38 % 1.38 % 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 4.18 ns 4.18 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 4.16 ns 4.16 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.121 ns 0.121 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 2.90 % 2.90 % 4
----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
sz::string::find;_mean 87.9 ns 87.9 ns 4
sz::string::find;_median 87.9 ns 87.9 ns 4
sz::string::find;_stddev 1.17 ns 1.17 ns 4
sz::string::find;_cv 1.33 % 1.33 % 4
std::string::find;_mean 6.95 ns 6.95 ns 4
std::string::find;_median 6.95 ns 6.95 ns 4
std::string::find;_stddev 0.069 ns 0.069 ns 4
std::string::find;_cv 0.99 % 0.99 % 4
std::string_view::find;_mean 7.39 ns 7.39 ns 4
std::string_view::find;_median 7.40 ns 7.40 ns 4
std::string_view::find;_stddev 0.118 ns 0.118 ns 4
std::string_view::find;_cv 1.59 % 1.59 % 4
ssa::find;_mean 6.87 ns 6.87 ns 4
ssa::find;_median 6.88 ns 6.88 ns 4
ssa::find;_stddev 0.131 ns 0.131 ns 4
ssa::find;_cv 1.90 % 1.90 % 4
stringa::find;_mean 7.21 ns 7.21 ns 4
stringa::find;_median 7.18 ns 7.18 ns 4
stringa::find;_stddev 0.196 ns 0.196 ns 4
stringa::find;_cv 2.72 % 2.72 % 4
lstringa<20>::find;_mean 6.52 ns 6.52 ns 4
lstringa<20>::find;_median 6.56 ns 6.56 ns 4
lstringa<20>::find;_stddev 0.116 ns 0.116 ns 4
lstringa<20>::find;_cv 1.78 % 1.78 % 4
lstringa<40>::find;_mean 6.49 ns 6.49 ns 4
lstringa<40>::find;_median 6.48 ns 6.48 ns 4
lstringa<40>::find;_stddev 0.150 ns 0.150 ns 4
lstringa<40>::find;_cv 2.31 % 2.31 % 4
------- 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.01 ns 5.01 ns 4
std::string copy{str_with_len_N};/15_median 5.01 ns 5.02 ns 4
std::string copy{str_with_len_N};/15_stddev 0.085 ns 0.085 ns 4
std::string copy{str_with_len_N};/15_cv 1.70 % 1.70 % 4
std::string copy{str_with_len_N};/16_mean 29.4 ns 29.4 ns 4
std::string copy{str_with_len_N};/16_median 29.6 ns 29.6 ns 4
std::string copy{str_with_len_N};/16_stddev 1.16 ns 1.16 ns 4
std::string copy{str_with_len_N};/16_cv 3.93 % 3.93 % 4
std::string copy{str_with_len_N};/23_mean 28.9 ns 28.9 ns 4
std::string copy{str_with_len_N};/23_median 28.8 ns 28.8 ns 4
std::string copy{str_with_len_N};/23_stddev 0.401 ns 0.401 ns 4
std::string copy{str_with_len_N};/23_cv 1.39 % 1.39 % 4
std::string copy{str_with_len_N};/24_mean 22.3 ns 22.3 ns 4
std::string copy{str_with_len_N};/24_median 22.4 ns 22.4 ns 4
std::string copy{str_with_len_N};/24_stddev 0.245 ns 0.245 ns 4
std::string copy{str_with_len_N};/24_cv 1.10 % 1.10 % 4
std::string copy{str_with_len_N};/32_mean 21.5 ns 21.5 ns 4
std::string copy{str_with_len_N};/32_median 21.5 ns 21.5 ns 4
std::string copy{str_with_len_N};/32_stddev 0.170 ns 0.170 ns 4
std::string copy{str_with_len_N};/32_cv 0.79 % 0.79 % 4
std::string copy{str_with_len_N};/64_mean 24.6 ns 24.6 ns 4
std::string copy{str_with_len_N};/64_median 24.6 ns 24.6 ns 4
std::string copy{str_with_len_N};/64_stddev 0.699 ns 0.699 ns 4
std::string copy{str_with_len_N};/64_cv 2.85 % 2.85 % 4
std::string copy{str_with_len_N};/128_mean 24.2 ns 24.2 ns 4
std::string copy{str_with_len_N};/128_median 24.4 ns 24.4 ns 4
std::string copy{str_with_len_N};/128_stddev 0.806 ns 0.806 ns 4
std::string copy{str_with_len_N};/128_cv 3.33 % 3.33 % 4
std::string copy{str_with_len_N};/256_mean 25.7 ns 25.7 ns 4
std::string copy{str_with_len_N};/256_median 25.8 ns 25.8 ns 4
std::string copy{str_with_len_N};/256_stddev 0.425 ns 0.425 ns 4
std::string copy{str_with_len_N};/256_cv 1.65 % 1.65 % 4
std::string copy{str_with_len_N};/512_mean 28.5 ns 28.5 ns 4
std::string copy{str_with_len_N};/512_median 28.4 ns 28.4 ns 4
std::string copy{str_with_len_N};/512_stddev 0.749 ns 0.749 ns 4
std::string copy{str_with_len_N};/512_cv 2.63 % 2.63 % 4
std::string copy{str_with_len_N};/1024_mean 33.4 ns 33.4 ns 4
std::string copy{str_with_len_N};/1024_median 33.5 ns 33.5 ns 4
std::string copy{str_with_len_N};/1024_stddev 0.562 ns 0.562 ns 4
std::string copy{str_with_len_N};/1024_cv 1.68 % 1.68 % 4
std::string copy{str_with_len_N};/2048_mean 122 ns 122 ns 4
std::string copy{str_with_len_N};/2048_median 122 ns 122 ns 4
std::string copy{str_with_len_N};/2048_stddev 2.42 ns 2.42 ns 4
std::string copy{str_with_len_N};/2048_cv 1.99 % 1.99 % 4
std::string copy{str_with_len_N};/4096_mean 157 ns 157 ns 4
std::string copy{str_with_len_N};/4096_median 157 ns 157 ns 4
std::string copy{str_with_len_N};/4096_stddev 7.01 ns 7.01 ns 4
std::string copy{str_with_len_N};/4096_cv 4.47 % 4.47 % 4
stringa copy{str_with_len_N};/15_mean 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/15_median 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/15_stddev 0.015 ns 0.015 ns 4
stringa copy{str_with_len_N};/15_cv 1.32 % 1.32 % 4
stringa copy{str_with_len_N};/16_mean 1.15 ns 1.15 ns 4
stringa copy{str_with_len_N};/16_median 1.16 ns 1.16 ns 4
stringa copy{str_with_len_N};/16_stddev 0.020 ns 0.020 ns 4
stringa copy{str_with_len_N};/16_cv 1.73 % 1.73 % 4
stringa copy{str_with_len_N};/23_mean 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/23_median 1.13 ns 1.13 ns 4
stringa copy{str_with_len_N};/23_stddev 0.022 ns 0.022 ns 4
stringa copy{str_with_len_N};/23_cv 1.93 % 1.93 % 4
stringa copy{str_with_len_N};/24_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/24_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/24_stddev 0.124 ns 0.124 ns 4
stringa copy{str_with_len_N};/24_cv 0.76 % 0.76 % 4
stringa copy{str_with_len_N};/32_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/32_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/32_stddev 0.140 ns 0.140 ns 4
stringa copy{str_with_len_N};/32_cv 0.85 % 0.85 % 4
stringa copy{str_with_len_N};/64_mean 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/64_median 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/64_stddev 0.159 ns 0.159 ns 4
stringa copy{str_with_len_N};/64_cv 0.97 % 0.97 % 4
stringa copy{str_with_len_N};/128_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/128_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/128_stddev 0.099 ns 0.099 ns 4
stringa copy{str_with_len_N};/128_cv 0.60 % 0.60 % 4
stringa copy{str_with_len_N};/256_mean 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/256_median 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/256_stddev 0.095 ns 0.095 ns 4
stringa copy{str_with_len_N};/256_cv 0.58 % 0.58 % 4
stringa copy{str_with_len_N};/512_mean 16.3 ns 16.3 ns 4
stringa copy{str_with_len_N};/512_median 16.3 ns 16.3 ns 4
stringa copy{str_with_len_N};/512_stddev 0.048 ns 0.048 ns 4
stringa copy{str_with_len_N};/512_cv 0.29 % 0.29 % 4
stringa copy{str_with_len_N};/1024_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/1024_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/1024_stddev 0.066 ns 0.066 ns 4
stringa copy{str_with_len_N};/1024_cv 0.40 % 0.40 % 4
stringa copy{str_with_len_N};/2048_mean 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/2048_median 16.4 ns 16.4 ns 4
stringa copy{str_with_len_N};/2048_stddev 0.039 ns 0.039 ns 4
stringa copy{str_with_len_N};/2048_cv 0.24 % 0.24 % 4
stringa copy{str_with_len_N};/4096_mean 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/4096_median 16.5 ns 16.5 ns 4
stringa copy{str_with_len_N};/4096_stddev 0.072 ns 0.072 ns 4
stringa copy{str_with_len_N};/4096_cv 0.43 % 0.43 % 4
lstringa<16> copy{str_with_len_N};/15_mean 1.15 ns 1.15 ns 4
lstringa<16> copy{str_with_len_N};/15_median 1.16 ns 1.16 ns 4
lstringa<16> copy{str_with_len_N};/15_stddev 0.021 ns 0.021 ns 4
lstringa<16> copy{str_with_len_N};/15_cv 1.83 % 1.83 % 4
lstringa<16> copy{str_with_len_N};/16_mean 4.89 ns 4.89 ns 4
lstringa<16> copy{str_with_len_N};/16_median 4.91 ns 4.91 ns 4
lstringa<16> copy{str_with_len_N};/16_stddev 0.063 ns 0.063 ns 4
lstringa<16> copy{str_with_len_N};/16_cv 1.29 % 1.29 % 4
lstringa<16> copy{str_with_len_N};/23_mean 4.91 ns 4.91 ns 4
lstringa<16> copy{str_with_len_N};/23_median 4.89 ns 4.89 ns 4
lstringa<16> copy{str_with_len_N};/23_stddev 0.079 ns 0.079 ns 4
lstringa<16> copy{str_with_len_N};/23_cv 1.60 % 1.60 % 4
lstringa<16> copy{str_with_len_N};/24_mean 22.4 ns 22.4 ns 4
lstringa<16> copy{str_with_len_N};/24_median 22.1 ns 22.1 ns 4
lstringa<16> copy{str_with_len_N};/24_stddev 0.925 ns 0.925 ns 4
lstringa<16> copy{str_with_len_N};/24_cv 4.12 % 4.12 % 4
lstringa<16> copy{str_with_len_N};/32_mean 22.5 ns 22.5 ns 4
lstringa<16> copy{str_with_len_N};/32_median 22.4 ns 22.4 ns 4
lstringa<16> copy{str_with_len_N};/32_stddev 0.344 ns 0.344 ns 4
lstringa<16> copy{str_with_len_N};/32_cv 1.53 % 1.53 % 4
lstringa<16> copy{str_with_len_N};/64_mean 24.3 ns 24.3 ns 4
lstringa<16> copy{str_with_len_N};/64_median 24.2 ns 24.2 ns 4
lstringa<16> copy{str_with_len_N};/64_stddev 0.482 ns 0.482 ns 4
lstringa<16> copy{str_with_len_N};/64_cv 1.99 % 1.99 % 4
lstringa<16> copy{str_with_len_N};/128_mean 33.8 ns 33.9 ns 4
lstringa<16> copy{str_with_len_N};/128_median 33.9 ns 33.9 ns 4
lstringa<16> copy{str_with_len_N};/128_stddev 0.822 ns 0.822 ns 4
lstringa<16> copy{str_with_len_N};/128_cv 2.43 % 2.43 % 4
lstringa<16> copy{str_with_len_N};/256_mean 25.9 ns 25.9 ns 4
lstringa<16> copy{str_with_len_N};/256_median 25.9 ns 25.9 ns 4
lstringa<16> copy{str_with_len_N};/256_stddev 0.442 ns 0.442 ns 4
lstringa<16> copy{str_with_len_N};/256_cv 1.71 % 1.71 % 4
lstringa<16> copy{str_with_len_N};/512_mean 34.8 ns 34.8 ns 4
lstringa<16> copy{str_with_len_N};/512_median 34.9 ns 34.9 ns 4
lstringa<16> copy{str_with_len_N};/512_stddev 0.270 ns 0.270 ns 4
lstringa<16> copy{str_with_len_N};/512_cv 0.78 % 0.78 % 4
lstringa<16> copy{str_with_len_N};/1024_mean 99.7 ns 99.7 ns 4
lstringa<16> copy{str_with_len_N};/1024_median 99.2 ns 99.2 ns 4
lstringa<16> copy{str_with_len_N};/1024_stddev 2.75 ns 2.75 ns 4
lstringa<16> copy{str_with_len_N};/1024_cv 2.75 % 2.76 % 4
lstringa<16> copy{str_with_len_N};/2048_mean 110 ns 110 ns 4
lstringa<16> copy{str_with_len_N};/2048_median 111 ns 111 ns 4
lstringa<16> copy{str_with_len_N};/2048_stddev 3.07 ns 3.07 ns 4
lstringa<16> copy{str_with_len_N};/2048_cv 2.78 % 2.78 % 4
lstringa<16> copy{str_with_len_N};/4096_mean 129 ns 129 ns 4
lstringa<16> copy{str_with_len_N};/4096_median 130 ns 130 ns 4
lstringa<16> copy{str_with_len_N};/4096_stddev 2.98 ns 2.98 ns 4
lstringa<16> copy{str_with_len_N};/4096_cv 2.32 % 2.32 % 4
lstringa<512> copy{str_with_len_N};/15_mean 1.15 ns 1.15 ns 4
lstringa<512> copy{str_with_len_N};/15_median 1.15 ns 1.15 ns 4
lstringa<512> copy{str_with_len_N};/15_stddev 0.018 ns 0.018 ns 4
lstringa<512> copy{str_with_len_N};/15_cv 1.55 % 1.55 % 4
lstringa<512> copy{str_with_len_N};/16_mean 4.22 ns 4.22 ns 4
lstringa<512> copy{str_with_len_N};/16_median 4.20 ns 4.20 ns 4
lstringa<512> copy{str_with_len_N};/16_stddev 0.108 ns 0.108 ns 4
lstringa<512> copy{str_with_len_N};/16_cv 2.57 % 2.57 % 4
lstringa<512> copy{str_with_len_N};/23_mean 4.24 ns 4.24 ns 4
lstringa<512> copy{str_with_len_N};/23_median 4.23 ns 4.23 ns 4
lstringa<512> copy{str_with_len_N};/23_stddev 0.108 ns 0.108 ns 4
lstringa<512> copy{str_with_len_N};/23_cv 2.55 % 2.55 % 4
lstringa<512> copy{str_with_len_N};/24_mean 4.26 ns 4.26 ns 4
lstringa<512> copy{str_with_len_N};/24_median 4.24 ns 4.24 ns 4
lstringa<512> copy{str_with_len_N};/24_stddev 0.075 ns 0.075 ns 4
lstringa<512> copy{str_with_len_N};/24_cv 1.77 % 1.77 % 4
lstringa<512> copy{str_with_len_N};/32_mean 4.20 ns 4.20 ns 4
lstringa<512> copy{str_with_len_N};/32_median 4.17 ns 4.17 ns 4
lstringa<512> copy{str_with_len_N};/32_stddev 0.082 ns 0.082 ns 4
lstringa<512> copy{str_with_len_N};/32_cv 1.95 % 1.95 % 4
lstringa<512> copy{str_with_len_N};/64_mean 5.67 ns 5.67 ns 4
lstringa<512> copy{str_with_len_N};/64_median 5.67 ns 5.67 ns 4
lstringa<512> copy{str_with_len_N};/64_stddev 0.074 ns 0.074 ns 4
lstringa<512> copy{str_with_len_N};/64_cv 1.31 % 1.31 % 4
lstringa<512> copy{str_with_len_N};/128_mean 6.29 ns 6.29 ns 4
lstringa<512> copy{str_with_len_N};/128_median 6.30 ns 6.30 ns 4
lstringa<512> copy{str_with_len_N};/128_stddev 0.125 ns 0.125 ns 4
lstringa<512> copy{str_with_len_N};/128_cv 1.98 % 1.98 % 4
lstringa<512> copy{str_with_len_N};/256_mean 7.98 ns 7.98 ns 4
lstringa<512> copy{str_with_len_N};/256_median 7.98 ns 7.98 ns 4
lstringa<512> copy{str_with_len_N};/256_stddev 0.053 ns 0.053 ns 4
lstringa<512> copy{str_with_len_N};/256_cv 0.66 % 0.66 % 4
lstringa<512> copy{str_with_len_N};/512_mean 10.2 ns 10.2 ns 4
lstringa<512> copy{str_with_len_N};/512_median 10.2 ns 10.2 ns 4
lstringa<512> copy{str_with_len_N};/512_stddev 0.100 ns 0.100 ns 4
lstringa<512> copy{str_with_len_N};/512_cv 0.98 % 0.98 % 4
lstringa<512> copy{str_with_len_N};/1024_mean 96.5 ns 96.5 ns 4
lstringa<512> copy{str_with_len_N};/1024_median 95.5 ns 95.5 ns 4
lstringa<512> copy{str_with_len_N};/1024_stddev 3.21 ns 3.21 ns 4
lstringa<512> copy{str_with_len_N};/1024_cv 3.32 % 3.32 % 4
lstringa<512> copy{str_with_len_N};/2048_mean 103 ns 103 ns 4
lstringa<512> copy{str_with_len_N};/2048_median 103 ns 103 ns 4
lstringa<512> copy{str_with_len_N};/2048_stddev 2.63 ns 2.63 ns 4
lstringa<512> copy{str_with_len_N};/2048_cv 2.55 % 2.55 % 4
lstringa<512> copy{str_with_len_N};/4096_mean 126 ns 126 ns 4
lstringa<512> copy{str_with_len_N};/4096_median 126 ns 126 ns 4
lstringa<512> copy{str_with_len_N};/4096_stddev 5.68 ns 5.68 ns 4
lstringa<512> copy{str_with_len_N};/4096_cv 4.51 % 4.51 % 4
----- Convert to int '1234567' ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_mean 27.9 ns 27.9 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 27.9 ns 27.9 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 0.402 ns 0.402 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 1.44 % 1.44 % 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 12.5 ns 12.5 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 12.3 ns 12.3 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.396 ns 0.396 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 3.17 % 3.17 % 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 16.8 ns 16.8 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 16.8 ns 16.8 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.196 ns 0.196 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 1.16 % 1.16 % 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 7.54 ns 7.54 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 7.55 ns 7.55 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.041 ns 0.041 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 0.55 % 0.55 % 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 8.43 ns 8.43 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_median 8.42 ns 8.42 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.141 ns 0.141 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 1.68 % 1.68 % 4
----- 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.9 ns 23.9 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 23.9 ns 23.9 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.614 ns 0.614 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 2.58 % 2.58 % 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 9.15 ns 9.15 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 9.19 ns 9.19 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.181 ns 0.181 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 1.98 % 1.98 % 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 16.2 ns 16.2 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 16.3 ns 16.3 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.118 ns 0.118 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 0.73 % 0.73 % 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 6.48 ns 6.48 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 6.45 ns 6.45 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.151 ns 0.151 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 2.32 % 2.32 % 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 6.42 ns 6.42 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 6.43 ns 6.43 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.128 ns 0.128 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.99 % 1.99 % 4
----- 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.1 ns 29.1 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 29.1 ns 29.1 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 0.141 ns 0.141 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 0.49 % 0.49 % 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_mean 23.8 ns 23.8 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_median 23.7 ns 23.7 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_stddev 0.203 ns 0.203 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_cv 0.85 % 0.85 % 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_mean 11.0 ns 11.0 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_median 11.1 ns 11.1 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_stddev 0.156 ns 0.156 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_cv 1.41 % 1.41 % 4
----- 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 66.3 ns 66.3 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 66.2 ns 66.2 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 0.163 ns 0.163 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 0.25 % 0.25 % 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 24.4 ns 24.4 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 24.2 ns 24.2 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 0.303 ns 0.303 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 1.24 % 1.24 % 4
ssa s = "1234.567e10"; double res = *s.to_double()_mean 24.5 ns 24.5 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_median 24.5 ns 24.5 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.380 ns 0.380 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_cv 1.55 % 1.55 % 4
-- 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 1411 ns 1411 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_median 1412 ns 1412 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 35.0 ns 35.0 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_cv 2.48 % 2.48 % 4
std::string str; ... str += "abbaabbaabbaabba";_mean 380 ns 380 ns 4
std::string str; ... str += "abbaabbaabbaabba";_median 380 ns 380 ns 4
std::string str; ... str += "abbaabbaabbaabba";_stddev 9.10 ns 9.10 ns 4
std::string str; ... str += "abbaabbaabbaabba";_cv 2.40 % 2.40 % 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 364 ns 364 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_median 365 ns 365 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 7.15 ns 7.14 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 1.96 % 1.96 % 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 271 ns 271 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_median 274 ns 274 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 11.8 ns 11.8 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 4.35 % 4.35 % 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 229 ns 229 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_median 233 ns 233 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 8.90 ns 8.90 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 3.89 % 3.89 % 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 144 ns 144 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 144 ns 144 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 1.68 ns 1.68 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.17 % 1.17 % 4
-- 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 1391 ns 1391 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 1393 ns 1393 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 6.61 ns 6.60 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 0.48 % 0.47 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 1161 ns 1161 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1163 ns 1163 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 17.5 ns 17.5 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 1.51 % 1.51 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 443 ns 443 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 443 ns 443 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 6.52 ns 6.52 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.47 % 1.47 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 368 ns 368 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 369 ns 369 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 12.5 ns 12.5 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.41 % 3.41 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 348 ns 348 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 354 ns 354 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 17.3 ns 17.3 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 4.98 % 4.98 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 214 ns 214 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 215 ns 215 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 3.03 ns 3.03 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 1.41 % 1.41 % 4
-- 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 75407 ns 75407 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 76071 ns 76071 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 1624 ns 1624 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 2.15 % 2.15 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 67303 ns 67303 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 67374 ns 67374 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 747 ns 747 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.11 % 1.11 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 20392 ns 20392 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 20416 ns 20416 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 93.8 ns 93.8 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 0.46 % 0.46 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17950 ns 17950 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 18065 ns 18065 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 352 ns 352 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.96 % 1.96 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17908 ns 17908 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17973 ns 17972 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 436 ns 436 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 2.44 % 2.44 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 17735 ns 17735 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 17771 ns 17771 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 347 ns 347 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.95 % 1.95 % 4
-- Append 2 string of 16 bytes 32 times, 1024 total length --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::stringstream str; ... str << str_var1 << str_var2;_mean 1397 ns 1397 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_median 1392 ns 1392 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_stddev 41.3 ns 41.3 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_cv 2.95 % 2.95 % 4
std::string str; ... str += str_var1 + str_var2;_mean 1344 ns 1344 ns 4
std::string str; ... str += str_var1 + str_var2;_median 1332 ns 1332 ns 4
std::string str; ... str += str_var1 + str_var2;_stddev 64.6 ns 64.6 ns 4
std::string str; ... str += str_var1 + str_var2;_cv 4.81 % 4.81 % 4
lstringa<16> str; ... str += str_var1 + str_var2;_mean 547 ns 547 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_median 551 ns 551 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_stddev 9.05 ns 9.05 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_cv 1.65 % 1.65 % 4
lstringa<128> str; ... str += str_var1 + str_var2;_mean 454 ns 454 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_median 457 ns 457 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_stddev 12.0 ns 12.0 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_cv 2.64 % 2.64 % 4
lstringa<512> str; ... str += str_var1 + str_var2;_mean 422 ns 422 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_median 426 ns 426 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_stddev 25.1 ns 25.1 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_cv 5.95 % 5.95 % 4
lstringa<1024> str; ... str += str_var1 + str_var2;_mean 310 ns 310 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_median 311 ns 311 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 6.36 ns 6.36 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_cv 2.05 % 2.05 % 4
-- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::stringstream str; str << "test = " << k << " times";_mean 3033 ns 3033 ns 4
std::stringstream str; str << "test = " << k << " times";_median 3046 ns 3046 ns 4
std::stringstream str; str << "test = " << k << " times";_stddev 70.7 ns 70.7 ns 4
std::stringstream str; str << "test = " << k << " times";_cv 2.33 % 2.33 % 4
std::string str = "test = " + std::to_string(k) + " times";_mean 427 ns 427 ns 4
std::string str = "test = " + std::to_string(k) + " times";_median 426 ns 426 ns 4
std::string str = "test = " + std::to_string(k) + " times";_stddev 5.62 ns 5.61 ns 4
std::string str = "test = " + std::to_string(k) + " times";_cv 1.32 % 1.32 % 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 1487 ns 1487 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 1478 ns 1478 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 26.4 ns 26.4 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 1.78 % 1.78 % 4
std::string str = std::format("test = {} times", k);_mean 1206 ns 1206 ns 4
std::string str = std::format("test = {} times", k);_median 1196 ns 1196 ns 4
std::string str = std::format("test = {} times", k);_stddev 34.6 ns 34.6 ns 4
std::string str = std::format("test = {} times", k);_cv 2.87 % 2.87 % 4
lstringa<8> str; str.format("test = {} times", k);_mean 1559 ns 1559 ns 4
lstringa<8> str; str.format("test = {} times", k);_median 1553 ns 1553 ns 4
lstringa<8> str; str.format("test = {} times", k);_stddev 41.0 ns 41.0 ns 4
lstringa<8> str; str.format("test = {} times", k);_cv 2.63 % 2.63 % 4
lstringa<32> str; str.format("test = {} times", k);_mean 1054 ns 1054 ns 4
lstringa<32> str; str.format("test = {} times", k);_median 1047 ns 1047 ns 4
lstringa<32> str; str.format("test = {} times", k);_stddev 16.7 ns 16.7 ns 4
lstringa<32> str; str.format("test = {} times", k);_cv 1.58 % 1.58 % 4
lstringa<8> str = "test = " + k + " times";_mean 290 ns 290 ns 4
lstringa<8> str = "test = " + k + " times";_median 289 ns 289 ns 4
lstringa<8> str = "test = " + k + " times";_stddev 3.95 ns 3.95 ns 4
lstringa<8> str = "test = " + k + " times";_cv 1.36 % 1.36 % 4
lstringa<32> str = "test = " + k + " times";_mean 136 ns 136 ns 4
lstringa<32> str = "test = " + k + " times";_median 136 ns 136 ns 4
lstringa<32> str = "test = " + k + " times";_stddev 2.69 ns 2.69 ns 4
lstringa<32> str = "test = " + k + " times";_cv 1.98 % 1.98 % 4
stringa str = "test = " + k + " times";_mean 137 ns 137 ns 4
stringa str = "test = " + k + " times";_median 138 ns 138 ns 4
stringa str = "test = " + k + " times";_stddev 2.86 ns 2.86 ns 4
stringa str = "test = " + k + " times";_cv 2.09 % 2.09 % 4
-- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string::find + substr + std::strtol_mean 275 ns 275 ns 4
std::string::find + substr + std::strtol_median 276 ns 276 ns 4
std::string::find + substr + std::strtol_stddev 7.55 ns 7.55 ns 4
std::string::find + substr + std::strtol_cv 2.74 % 2.74 % 4
ssa::splitter + ssa::as_int_mean 192 ns 192 ns 4
ssa::splitter + ssa::as_int_median 192 ns 192 ns 4
ssa::splitter + ssa::as_int_stddev 3.46 ns 3.46 ns 4
ssa::splitter + ssa::as_int_cv 1.80 % 1.80 % 4
ssa::splitf + functor_mean 196 ns 196 ns 4
ssa::splitf + functor_median 196 ns 196 ns 4
ssa::splitf + functor_stddev 0.580 ns 0.580 ns 4
ssa::splitf + functor_cv 0.30 % 0.30 % 4
-- 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 822 ns 822 ns 4
Naive (and wrong) replace symbols with std::string find + replace_median 821 ns 821 ns 4
Naive (and wrong) replace symbols with std::string find + replace_stddev 19.8 ns 19.8 ns 4
Naive (and wrong) replace symbols with std::string find + replace_cv 2.41 % 2.41 % 4
replace symbols with std::string find_first_of + replace_mean 2428 ns 2428 ns 4
replace symbols with std::string find_first_of + replace_median 2424 ns 2424 ns 4
replace symbols with std::string find_first_of + replace_stddev 88.6 ns 88.6 ns 4
replace symbols with std::string find_first_of + replace_cv 3.65 % 3.65 % 4
replace symbols with std::string_view find_first_of + copy_mean 1065 ns 1065 ns 4
replace symbols with std::string_view find_first_of + copy_median 1062 ns 1062 ns 4
replace symbols with std::string_view find_first_of + copy_stddev 18.7 ns 18.7 ns 4
replace symbols with std::string_view find_first_of + copy_cv 1.76 % 1.76 % 4
replace runtime symbols with string expressions and without remembering all search results_mean 1372 ns 1372 ns 4
replace runtime symbols with string expressions and without remembering all search results_median 1363 ns 1363 ns 4
replace runtime symbols with string expressions and without remembering all search results_stddev 28.6 ns 28.6 ns 4
replace runtime symbols with string expressions and without remembering all search results_cv 2.09 % 2.09 % 4
replace runtime symbols with simstr and memorization of all search results_mean 1016 ns 1016 ns 4
replace runtime symbols with simstr and memorization of all search results_median 1011 ns 1011 ns 4
replace runtime symbols with simstr and memorization of all search results_stddev 19.6 ns 19.6 ns 4
replace runtime symbols with simstr and memorization of all search results_cv 1.93 % 1.93 % 4
replace const symbols with string expressions and without remembering all search results_mean 1045 ns 1045 ns 4
replace const symbols with string expressions and without remembering all search results_median 1039 ns 1039 ns 4
replace const symbols with string expressions and without remembering all search results_stddev 35.5 ns 35.5 ns 4
replace const symbols with string expressions and without remembering all search results_cv 3.40 % 3.40 % 4
replace const symbols with string expressions and memorization of all search results_mean 837 ns 837 ns 4
replace const symbols with string expressions and memorization of all search results_median 842 ns 842 ns 4
replace const symbols with string expressions and memorization of all search results_stddev 17.2 ns 17.2 ns 4
replace const symbols with string expressions and memorization of all search results_cv 2.06 % 2.06 % 4
-- 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 161 ns 161 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_median 161 ns 161 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_stddev 2.20 ns 2.20 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_cv 1.36 % 1.36 % 4
Short replace symbols with std::string find_first_of + replace_mean 329 ns 329 ns 4
Short replace symbols with std::string find_first_of + replace_median 329 ns 329 ns 4
Short replace symbols with std::string find_first_of + replace_stddev 8.06 ns 8.06 ns 4
Short replace symbols with std::string find_first_of + replace_cv 2.45 % 2.45 % 4
Short replace symbols with std::string_view find_first_of + copy_mean 154 ns 154 ns 4
Short replace symbols with std::string_view find_first_of + copy_median 153 ns 153 ns 4
Short replace symbols with std::string_view find_first_of + copy_stddev 5.45 ns 5.45 ns 4
Short replace symbols with std::string_view find_first_of + copy_cv 3.55 % 3.55 % 4
Short replace runtime symbols with string expressions and without remembering all search results_mean 180 ns 180 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_median 179 ns 179 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_stddev 4.51 ns 4.51 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_cv 2.50 % 2.50 % 4
Short replace runtime symbols with simstr and memorization of all search results_mean 184 ns 184 ns 4
Short replace runtime symbols with simstr and memorization of all search results_median 184 ns 184 ns 4
Short replace runtime symbols with simstr and memorization of all search results_stddev 2.95 ns 2.95 ns 4
Short replace runtime symbols with simstr and memorization of all search results_cv 1.61 % 1.61 % 4
Short replace const symbols with string expressions and without remembering all search results_mean 139 ns 139 ns 4
Short replace const symbols with string expressions and without remembering all search results_median 139 ns 139 ns 4
Short replace const symbols with string expressions and without remembering all search results_stddev 1.27 ns 1.27 ns 4
Short replace const symbols with string expressions and without remembering all search results_cv 0.91 % 0.91 % 4
Short replace const symbols with string expressions and memorization of all search results_mean 132 ns 132 ns 4
Short replace const symbols with string expressions and memorization of all search results_median 132 ns 132 ns 4
Short replace const symbols with string expressions and memorization of all search results_stddev 1.26 ns 1.26 ns 4
Short replace const symbols with string expressions and memorization of all search results_cv 0.95 % 0.95 % 4
----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to ---- in std::string|64_mean 154 ns 154 ns 4
replace bb to ---- in std::string|64_median 154 ns 154 ns 4
replace bb to ---- in std::string|64_stddev 1.72 ns 1.72 ns 4
replace bb to ---- in std::string|64_cv 1.11 % 1.11 % 4
replace bb to ---- in std::string|256_mean 504 ns 504 ns 4
replace bb to ---- in std::string|256_median 504 ns 504 ns 4
replace bb to ---- in std::string|256_stddev 18.2 ns 18.2 ns 4
replace bb to ---- in std::string|256_cv 3.62 % 3.62 % 4
replace bb to ---- in std::string|512_mean 1000 ns 1000 ns 4
replace bb to ---- in std::string|512_median 1002 ns 1002 ns 4
replace bb to ---- in std::string|512_stddev 17.0 ns 17.0 ns 4
replace bb to ---- in std::string|512_cv 1.70 % 1.70 % 4
replace bb to ---- in std::string|1024_mean 2347 ns 2347 ns 4
replace bb to ---- in std::string|1024_median 2324 ns 2324 ns 4
replace bb to ---- in std::string|1024_stddev 166 ns 166 ns 4
replace bb to ---- in std::string|1024_cv 7.05 % 7.05 % 4
replace bb to ---- in std::string|2048_mean 5969 ns 5969 ns 4
replace bb to ---- in std::string|2048_median 5919 ns 5919 ns 4
replace bb to ---- in std::string|2048_stddev 266 ns 266 ns 4
replace bb to ---- in std::string|2048_cv 4.46 % 4.46 % 4
replace bb to ---- in lstringa<8>|64_mean 138 ns 138 ns 4
replace bb to ---- in lstringa<8>|64_median 139 ns 139 ns 4
replace bb to ---- in lstringa<8>|64_stddev 3.50 ns 3.50 ns 4
replace bb to ---- in lstringa<8>|64_cv 2.53 % 2.53 % 4
replace bb to ---- in lstringa<8>|256_mean 444 ns 444 ns 4
replace bb to ---- in lstringa<8>|256_median 447 ns 447 ns 4
replace bb to ---- in lstringa<8>|256_stddev 6.19 ns 6.19 ns 4
replace bb to ---- in lstringa<8>|256_cv 1.39 % 1.39 % 4
replace bb to ---- in lstringa<8>|512_mean 899 ns 899 ns 4
replace bb to ---- in lstringa<8>|512_median 896 ns 896 ns 4
replace bb to ---- in lstringa<8>|512_stddev 19.6 ns 19.6 ns 4
replace bb to ---- in lstringa<8>|512_cv 2.18 % 2.18 % 4
replace bb to ---- in lstringa<8>|1024_mean 1751 ns 1751 ns 4
replace bb to ---- in lstringa<8>|1024_median 1752 ns 1752 ns 4
replace bb to ---- in lstringa<8>|1024_stddev 11.7 ns 11.7 ns 4
replace bb to ---- in lstringa<8>|1024_cv 0.67 % 0.67 % 4
replace bb to ---- in lstringa<8>|2048_mean 3301 ns 3301 ns 4
replace bb to ---- in lstringa<8>|2048_median 3294 ns 3294 ns 4
replace bb to ---- in lstringa<8>|2048_stddev 81.9 ns 81.9 ns 4
replace bb to ---- in lstringa<8>|2048_cv 2.48 % 2.48 % 4
replace bb to ---- by init stringa|64_mean 92.8 ns 92.8 ns 4
replace bb to ---- by init stringa|64_median 92.6 ns 92.6 ns 4
replace bb to ---- by init stringa|64_stddev 1.37 ns 1.37 ns 4
replace bb to ---- by init stringa|64_cv 1.48 % 1.48 % 4
replace bb to ---- by init stringa|256_mean 287 ns 288 ns 4
replace bb to ---- by init stringa|256_median 287 ns 287 ns 4
replace bb to ---- by init stringa|256_stddev 1.86 ns 1.86 ns 4
replace bb to ---- by init stringa|256_cv 0.65 % 0.65 % 4
replace bb to ---- by init stringa|512_mean 705 ns 705 ns 4
replace bb to ---- by init stringa|512_median 702 ns 702 ns 4
replace bb to ---- by init stringa|512_stddev 12.7 ns 12.7 ns 4
replace bb to ---- by init stringa|512_cv 1.79 % 1.79 % 4
replace bb to ---- by init stringa|1024_mean 1550 ns 1550 ns 4
replace bb to ---- by init stringa|1024_median 1543 ns 1543 ns 4
replace bb to ---- by init stringa|1024_stddev 19.4 ns 19.4 ns 4
replace bb to ---- by init stringa|1024_cv 1.25 % 1.25 % 4
replace bb to ---- by init stringa|2048_mean 3106 ns 3106 ns 4
replace bb to ---- by init stringa|2048_median 3111 ns 3111 ns 4
replace bb to ---- by init stringa|2048_stddev 20.5 ns 20.4 ns 4
replace bb to ---- by init stringa|2048_cv 0.66 % 0.66 % 4
----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to -- in std::string|64_mean 131 ns 131 ns 4
replace bb to -- in std::string|64_median 129 ns 129 ns 4
replace bb to -- in std::string|64_stddev 4.51 ns 4.51 ns 4
replace bb to -- in std::string|64_cv 3.45 % 3.45 % 4
replace bb to -- in std::string|256_mean 381 ns 381 ns 4
replace bb to -- in std::string|256_median 381 ns 381 ns 4
replace bb to -- in std::string|256_stddev 5.71 ns 5.71 ns 4
replace bb to -- in std::string|256_cv 1.50 % 1.50 % 4
replace bb to -- in std::string|512_mean 743 ns 743 ns 4
replace bb to -- in std::string|512_median 744 ns 744 ns 4
replace bb to -- in std::string|512_stddev 6.19 ns 6.19 ns 4
replace bb to -- in std::string|512_cv 0.83 % 0.83 % 4
replace bb to -- in std::string|1024_mean 1483 ns 1483 ns 4
replace bb to -- in std::string|1024_median 1477 ns 1477 ns 4
replace bb to -- in std::string|1024_stddev 36.1 ns 36.1 ns 4
replace bb to -- in std::string|1024_cv 2.43 % 2.43 % 4
replace bb to -- in std::string|2048_mean 2798 ns 2798 ns 4
replace bb to -- in std::string|2048_median 2793 ns 2793 ns 4
replace bb to -- in std::string|2048_stddev 34.3 ns 34.2 ns 4
replace bb to -- in std::string|2048_cv 1.23 % 1.22 % 4
replace bb to -- in lstringa<8>|64_mean 91.5 ns 91.5 ns 4
replace bb to -- in lstringa<8>|64_median 91.9 ns 91.9 ns 4
replace bb to -- in lstringa<8>|64_stddev 2.11 ns 2.11 ns 4
replace bb to -- in lstringa<8>|64_cv 2.30 % 2.30 % 4
replace bb to -- in lstringa<8>|256_mean 302 ns 302 ns 4
replace bb to -- in lstringa<8>|256_median 305 ns 305 ns 4
replace bb to -- in lstringa<8>|256_stddev 5.90 ns 5.90 ns 4
replace bb to -- in lstringa<8>|256_cv 1.95 % 1.95 % 4
replace bb to -- in lstringa<8>|512_mean 539 ns 539 ns 4
replace bb to -- in lstringa<8>|512_median 541 ns 541 ns 4
replace bb to -- in lstringa<8>|512_stddev 7.25 ns 7.25 ns 4
replace bb to -- in lstringa<8>|512_cv 1.34 % 1.34 % 4
replace bb to -- in lstringa<8>|1024_mean 1121 ns 1121 ns 4
replace bb to -- in lstringa<8>|1024_median 1103 ns 1103 ns 4
replace bb to -- in lstringa<8>|1024_stddev 86.3 ns 86.3 ns 4
replace bb to -- in lstringa<8>|1024_cv 7.70 % 7.70 % 4
replace bb to -- in lstringa<8>|2048_mean 2174 ns 2174 ns 4
replace bb to -- in lstringa<8>|2048_median 2126 ns 2126 ns 4
replace bb to -- in lstringa<8>|2048_stddev 136 ns 136 ns 4
replace bb to -- in lstringa<8>|2048_cv 6.25 % 6.25 % 4
replace bb to -- by init stringa|64_mean 112 ns 112 ns 4
replace bb to -- by init stringa|64_median 112 ns 112 ns 4
replace bb to -- by init stringa|64_stddev 1.35 ns 1.35 ns 4
replace bb to -- by init stringa|64_cv 1.20 % 1.20 % 4
replace bb to -- by init stringa|256_mean 262 ns 262 ns 4
replace bb to -- by init stringa|256_median 262 ns 262 ns 4
replace bb to -- by init stringa|256_stddev 3.25 ns 3.25 ns 4
replace bb to -- by init stringa|256_cv 1.24 % 1.24 % 4
replace bb to -- by init stringa|512_mean 479 ns 479 ns 4
replace bb to -- by init stringa|512_median 478 ns 478 ns 4
replace bb to -- by init stringa|512_stddev 6.02 ns 6.02 ns 4
replace bb to -- by init stringa|512_cv 1.26 % 1.26 % 4
replace bb to -- by init stringa|1024_mean 954 ns 954 ns 4
replace bb to -- by init stringa|1024_median 953 ns 953 ns 4
replace bb to -- by init stringa|1024_stddev 27.7 ns 27.7 ns 4
replace bb to -- by init stringa|1024_cv 2.91 % 2.91 % 4
replace bb to -- by init stringa|2048_mean 1809 ns 1809 ns 4
replace bb to -- by init stringa|2048_median 1804 ns 1804 ns 4
replace bb to -- by init stringa|2048_stddev 20.3 ns 20.3 ns 4
replace bb to -- by init stringa|2048_cv 1.12 % 1.12 % 4
----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
hashStrMapA<size_t> emplace & find stringa;_mean 3843202 ns 3843218 ns 4
hashStrMapA<size_t> emplace & find stringa;_median 3876351 ns 3876368 ns 4
hashStrMapA<size_t> emplace & find stringa;_stddev 83132 ns 83131 ns 4
hashStrMapA<size_t> emplace & find stringa;_cv 2.16 % 2.16 % 4
std::unordered_map<std::string, size_t> emplace & find std::string;_mean 3689411 ns 3689422 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_median 3701989 ns 3701997 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_stddev 102615 ns 102613 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_cv 2.78 % 2.78 % 4
hashStrMapA<size_t> emplace & find ssa;_mean 3848145 ns 3848147 ns 4
hashStrMapA<size_t> emplace & find ssa;_median 3860211 ns 3860203 ns 4
hashStrMapA<size_t> emplace & find ssa;_stddev 53550 ns 53545 ns 4
hashStrMapA<size_t> emplace & find ssa;_cv 1.39 % 1.39 % 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_mean 4076242 ns 4076215 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_median 4075582 ns 4075516 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_stddev 57080 ns 57087 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_cv 1.40 % 1.40 % 4
----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Build func full name std::string;_mean 738 ns 738 ns 4
Build func full name std::string;_median 745 ns 745 ns 4
Build func full name std::string;_stddev 20.2 ns 20.2 ns 4
Build func full name std::string;_cv 2.74 % 2.74 % 4
Build func full name std::string 1;_mean 820 ns 820 ns 4
Build func full name std::string 1;_median 819 ns 819 ns 4
Build func full name std::string 1;_stddev 7.48 ns 7.48 ns 4
Build func full name std::string 1;_cv 0.91 % 0.91 % 4
Build func full name std::stream;_mean 2610 ns 2610 ns 4
Build func full name std::stream;_median 2628 ns 2628 ns 4
Build func full name std::stream;_stddev 45.5 ns 45.5 ns 4
Build func full name std::stream;_cv 1.75 % 1.75 % 4
Build func full name stringa;_mean 480 ns 480 ns 4
Build func full name stringa;_median 479 ns 479 ns 4
Build func full name stringa;_stddev 6.26 ns 6.26 ns 4
Build func full name stringa;_cv 1.30 % 1.30 % 4
Build func full name stringa 1;_mean 564 ns 564 ns 4
Build func full name stringa 1;_median 563 ns 563 ns 4
Build func full name stringa 1;_stddev 12.8 ns 12.8 ns 4
Build func full name stringa 1;_cv 2.26 % 2.26 % 4
----- Make Upper ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
To upper case std::wstring_mean 175 ns 175 ns 4
To upper case std::wstring_median 174 ns 174 ns 4
To upper case std::wstring_stddev 3.12 ns 3.12 ns 4
To upper case std::wstring_cv 1.78 % 1.78 % 4
To upper case lstringw<15>_mean 40.4 ns 40.4 ns 4
To upper case lstringw<15>_median 40.3 ns 40.3 ns 4
To upper case lstringw<15>_stddev 0.801 ns 0.801 ns 4
To upper case lstringw<15>_cv 1.98 % 1.98 % 4

View File

@ -1,923 +0,0 @@
Benchmarks of simstr, version 1.6.4
Sources: https://github.com/orefkov/simstr
Results: https://orefkov.github.io/simstr/results.html
Run on (32 X 2513.96 MHz CPU s)
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 891 ns 891 ns 4
Concat std::string and number by std to std::string_median 878 ns 878 ns 4
Concat std::string and number by std to std::string_stddev 66.3 ns 66.3 ns 4
Concat std::string and number by std to std::string_cv 7.44 % 7.44 % 4
Concat std::string and number by StrExpr to std::string_mean 402 ns 402 ns 4
Concat std::string and number by StrExpr to std::string_median 393 ns 393 ns 4
Concat std::string and number by StrExpr to std::string_stddev 19.0 ns 19.0 ns 4
Concat std::string and number by StrExpr to std::string_cv 4.73 % 4.73 % 4
Concat stringa and number by StrExpr to simstr::stringa_mean 230 ns 230 ns 4
Concat stringa and number by StrExpr to simstr::stringa_median 232 ns 232 ns 4
Concat stringa and number by StrExpr to simstr::stringa_stddev 19.5 ns 19.5 ns 4
Concat stringa and number by StrExpr to simstr::stringa_cv 8.50 % 8.50 % 4
Concat stringa and number by e_concat to simstr::stringa_mean 196 ns 196 ns 4
Concat stringa and number by e_concat to simstr::stringa_median 196 ns 196 ns 4
Concat stringa and number by e_concat to simstr::stringa_stddev 5.39 ns 5.39 ns 4
Concat stringa and number by e_concat to simstr::stringa_cv 2.75 % 2.75 % 4
----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and format hex number and literal to std::string_mean 1301 ns 1301 ns 4
Concat std::string and format hex number and literal to std::string_median 1297 ns 1297 ns 4
Concat std::string and format hex number and literal to std::string_stddev 34.9 ns 34.9 ns 4
Concat std::string and format hex number and literal to std::string_cv 2.68 % 2.68 % 4
std::format std::string and hex number by literal to std::string_mean 1590 ns 1590 ns 4
std::format std::string and hex number by literal to std::string_median 1587 ns 1587 ns 4
std::format std::string and hex number by literal to std::string_stddev 34.8 ns 34.8 ns 4
std::format std::string and hex number by literal to std::string_cv 2.19 % 2.19 % 4
Concat std::string and std::to_chars and string to std::string_mean 611 ns 611 ns 4
Concat std::string and std::to_chars and string to std::string_median 604 ns 605 ns 4
Concat std::string and std::to_chars and string to std::string_stddev 14.9 ns 14.8 ns 4
Concat std::string and std::to_chars and string to std::string_cv 2.44 % 2.42 % 4
Concat std::string and hex number and literal by StrExpr to std::string_mean 419 ns 419 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_median 420 ns 420 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_stddev 29.1 ns 29.1 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_cv 6.95 % 6.95 % 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 220 ns 220 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 221 ns 221 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 21.1 ns 21.1 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 9.60 % 9.60 % 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 214 ns 214 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_median 213 ns 213 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 9.28 ns 9.28 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 4.34 % 4.34 % 4
Subst stringa and hex number by e_subst literal to simstr::stringa_mean 463 ns 463 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_median 477 ns 477 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 35.6 ns 35.6 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_cv 7.67 % 7.67 % 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_mean 770 ns 770 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_median 779 ns 779 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_stddev 43.5 ns 43.5 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_cv 5.65 % 5.65 % 4
----- format/vformat and subst/vsubst octal number ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
"art "_ss + i / 0x8a010_fmt + " end"_mean 497 ns 497 ns 4
"art "_ss + i / 0x8a010_fmt + " end"_median 507 ns 507 ns 4
"art "_ss + i / 0x8a010_fmt + " end"_stddev 37.5 ns 37.5 ns 4
"art "_ss + i / 0x8a010_fmt + " end"_cv 7.55 % 7.55 % 4
e_subst("art {} end", i / 0x8a010_fmt)_mean 682 ns 683 ns 4
e_subst("art {} end", i / 0x8a010_fmt)_median 684 ns 684 ns 4
e_subst("art {} end", i / 0x8a010_fmt)_stddev 20.2 ns 19.8 ns 4
e_subst("art {} end", i / 0x8a010_fmt)_cv 2.96 % 2.90 % 4
e_vsubst(pattern, i / 0x8a010_fmt)_mean 999 ns 999 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_median 998 ns 998 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_stddev 9.96 ns 9.96 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_cv 1.00 % 1.00 % 4
std::format("art {:#010o} end", i)_mean 1770 ns 1770 ns 4
std::format("art {:#010o} end", i)_median 1779 ns 1779 ns 4
std::format("art {:#010o} end", i)_stddev 42.1 ns 42.1 ns 4
std::format("art {:#010o} end", i)_cv 2.38 % 2.38 % 4
std::vformat(pattern, std::make_format_args(i))_mean 1790 ns 1790 ns 4
std::vformat(pattern, std::make_format_args(i))_median 1803 ns 1803 ns 4
std::vformat(pattern, std::make_format_args(i))_stddev 63.4 ns 63.4 ns 4
std::vformat(pattern, std::make_format_args(i))_cv 3.54 % 3.54 % 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_mean 4124 ns 4124 ns 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_median 4096 ns 4096 ns 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_stddev 120 ns 120 ns 4
strm << "art 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_cv 2.92 % 2.92 % 4
----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string by std to std::string_mean 102 ns 102 ns 4
Concat std::string by std to std::string_median 102 ns 102 ns 4
Concat std::string by std to std::string_stddev 0.936 ns 0.936 ns 4
Concat std::string by std to std::string_cv 0.92 % 0.92 % 4
Concat std::string by StrExpr to std::string_mean 119 ns 119 ns 4
Concat std::string by StrExpr to std::string_median 118 ns 118 ns 4
Concat std::string by StrExpr to std::string_stddev 5.22 ns 5.22 ns 4
Concat std::string by StrExpr to std::string_cv 4.39 % 4.39 % 4
Concat stringa by StrExpr to stringa_mean 93.6 ns 93.6 ns 4
Concat stringa by StrExpr to stringa_median 94.6 ns 94.6 ns 4
Concat stringa by StrExpr to stringa_stddev 2.79 ns 2.79 ns 4
Concat stringa by StrExpr to stringa_cv 2.98 % 2.98 % 4
----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Find concat three std::string_mean 157 ns 157 ns 4
Find concat three std::string_median 156 ns 156 ns 4
Find concat three std::string_stddev 7.12 ns 7.12 ns 4
Find concat three std::string_cv 4.53 % 4.53 % 4
Find concat three strexpr_mean 102 ns 102 ns 4
Find concat three strexpr_median 101 ns 101 ns 4
Find concat three strexpr_stddev 3.58 ns 3.58 ns 4
Find concat three strexpr_cv 3.50 % 3.50 % 4
Find concat three simstr_mean 72.5 ns 72.5 ns 4
Find concat three simstr_median 72.7 ns 72.7 ns 4
Find concat three simstr_stddev 1.58 ns 1.58 ns 4
Find concat three simstr_cv 2.18 % 2.18 % 4
----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
BuildTypeNameStr 0/0_mean 17.5 ns 17.5 ns 4
BuildTypeNameStr 0/0_median 17.3 ns 17.3 ns 4
BuildTypeNameStr 0/0_stddev 1.09 ns 1.09 ns 4
BuildTypeNameStr 0/0_cv 6.24 % 6.24 % 4
BuildTypeNameExp 0/0_mean 16.4 ns 16.4 ns 4
BuildTypeNameExp 0/0_median 16.0 ns 16.0 ns 4
BuildTypeNameExp 0/0_stddev 1.13 ns 1.13 ns 4
BuildTypeNameExp 0/0_cv 6.89 % 6.89 % 4
BuildTypeNameSim 0/0_mean 16.5 ns 16.5 ns 4
BuildTypeNameSim 0/0_median 16.6 ns 16.6 ns 4
BuildTypeNameSim 0/0_stddev 0.683 ns 0.683 ns 4
BuildTypeNameSim 0/0_cv 4.15 % 4.15 % 4
BuildTypeNameStr 10/10_mean 283 ns 283 ns 4
BuildTypeNameStr 10/10_median 282 ns 282 ns 4
BuildTypeNameStr 10/10_stddev 5.99 ns 5.99 ns 4
BuildTypeNameStr 10/10_cv 2.12 % 2.12 % 4
BuildTypeNameExp 10/10_mean 98.2 ns 98.2 ns 4
BuildTypeNameExp 10/10_median 97.6 ns 97.6 ns 4
BuildTypeNameExp 10/10_stddev 7.37 ns 7.37 ns 4
BuildTypeNameExp 10/10_cv 7.51 % 7.51 % 4
BuildTypeNameSim 10/10_mean 74.6 ns 74.6 ns 4
BuildTypeNameSim 10/10_median 73.4 ns 73.4 ns 4
BuildTypeNameSim 10/10_stddev 7.30 ns 7.30 ns 4
BuildTypeNameSim 10/10_cv 9.79 % 9.79 % 4
----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat with replace str_mean 436 ns 436 ns 4
Concat with replace str_median 435 ns 435 ns 4
Concat with replace str_stddev 17.1 ns 17.1 ns 4
Concat with replace str_cv 3.93 % 3.93 % 4
Concat with replace exp_mean 259 ns 259 ns 4
Concat with replace exp_median 261 ns 261 ns 4
Concat with replace exp_stddev 10.3 ns 10.3 ns 4
Concat with replace exp_cv 3.97 % 3.97 % 4
----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e;_mean 2.15 ns 2.15 ns 4
std::string e;_median 2.15 ns 2.15 ns 4
std::string e;_stddev 0.034 ns 0.034 ns 4
std::string e;_cv 1.59 % 1.59 % 4
std::string_view e;_mean 1.03 ns 1.03 ns 4
std::string_view e;_median 1.02 ns 1.02 ns 4
std::string_view e;_stddev 0.041 ns 0.041 ns 4
std::string_view e;_cv 4.01 % 4.01 % 4
ssa e;_mean 0.941 ns 0.941 ns 4
ssa e;_median 0.939 ns 0.939 ns 4
ssa e;_stddev 0.009 ns 0.009 ns 4
ssa e;_cv 0.96 % 0.96 % 4
stringa e;_mean 2.15 ns 2.15 ns 4
stringa e;_median 2.15 ns 2.15 ns 4
stringa e;_stddev 0.005 ns 0.005 ns 4
stringa e;_cv 0.23 % 0.23 % 4
lstringa<20> e;_mean 2.25 ns 2.25 ns 4
lstringa<20> e;_median 2.23 ns 2.23 ns 4
lstringa<20> e;_stddev 0.076 ns 0.076 ns 4
lstringa<20> e;_cv 3.40 % 3.40 % 4
lstringa<40> e;_mean 2.51 ns 2.51 ns 4
lstringa<40> e;_median 2.51 ns 2.51 ns 4
lstringa<40> e;_stddev 0.020 ns 0.020 ns 4
lstringa<40> e;_cv 0.78 % 0.78 % 4
----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "Test text";_mean 2.32 ns 2.32 ns 4
std::string e = "Test text";_median 2.28 ns 2.28 ns 4
std::string e = "Test text";_stddev 0.090 ns 0.090 ns 4
std::string e = "Test text";_cv 3.87 % 3.87 % 4
std::string_view e = "Test text";_mean 1.23 ns 1.23 ns 4
std::string_view e = "Test text";_median 1.24 ns 1.24 ns 4
std::string_view e = "Test text";_stddev 0.011 ns 0.011 ns 4
std::string_view e = "Test text";_cv 0.89 % 0.89 % 4
ssa e = "Test text";_mean 0.982 ns 0.982 ns 4
ssa e = "Test text";_median 0.975 ns 0.975 ns 4
ssa e = "Test text";_stddev 0.028 ns 0.028 ns 4
ssa e = "Test text";_cv 2.84 % 2.84 % 4
stringa e = "Test text";_mean 2.25 ns 2.25 ns 4
stringa e = "Test text";_median 2.26 ns 2.26 ns 4
stringa e = "Test text";_stddev 0.135 ns 0.135 ns 4
stringa e = "Test text";_cv 5.98 % 5.98 % 4
lstringa<20> e = "Test text";_mean 2.73 ns 2.73 ns 4
lstringa<20> e = "Test text";_median 2.71 ns 2.71 ns 4
lstringa<20> e = "Test text";_stddev 0.108 ns 0.108 ns 4
lstringa<20> e = "Test text";_cv 3.95 % 3.95 % 4
lstringa<40> e = "Test text";_mean 2.65 ns 2.65 ns 4
lstringa<40> e = "Test text";_median 2.65 ns 2.65 ns 4
lstringa<40> e = "Test text";_stddev 0.007 ns 0.007 ns 4
lstringa<40> e = "Test text";_cv 0.26 % 0.26 % 4
----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890";_mean 15.9 ns 15.9 ns 4
std::string e = "123456789012345678901234567890";_median 15.9 ns 15.9 ns 4
std::string e = "123456789012345678901234567890";_stddev 0.414 ns 0.414 ns 4
std::string e = "123456789012345678901234567890";_cv 2.61 % 2.61 % 4
std::string_view e = "123456789012345678901234567890";_mean 1.26 ns 1.26 ns 4
std::string_view e = "123456789012345678901234567890";_median 1.26 ns 1.26 ns 4
std::string_view e = "123456789012345678901234567890";_stddev 0.054 ns 0.054 ns 4
std::string_view e = "123456789012345678901234567890";_cv 4.29 % 4.29 % 4
ssa e = "123456789012345678901234567890";_mean 0.971 ns 0.971 ns 4
ssa e = "123456789012345678901234567890";_median 0.972 ns 0.972 ns 4
ssa e = "123456789012345678901234567890";_stddev 0.015 ns 0.015 ns 4
ssa e = "123456789012345678901234567890";_cv 1.51 % 1.51 % 4
stringa e = "123456789012345678901234567890";_mean 2.23 ns 2.23 ns 4
stringa e = "123456789012345678901234567890";_median 2.22 ns 2.22 ns 4
stringa e = "123456789012345678901234567890";_stddev 0.062 ns 0.062 ns 4
stringa e = "123456789012345678901234567890";_cv 2.80 % 2.80 % 4
lstringa<20> e = "123456789012345678901234567890";_mean 16.5 ns 16.5 ns 4
lstringa<20> e = "123456789012345678901234567890";_median 16.6 ns 16.6 ns 4
lstringa<20> e = "123456789012345678901234567890";_stddev 0.463 ns 0.463 ns 4
lstringa<20> e = "123456789012345678901234567890";_cv 2.80 % 2.80 % 4
lstringa<40> e = "123456789012345678901234567890";_mean 3.16 ns 3.16 ns 4
lstringa<40> e = "123456789012345678901234567890";_median 3.11 ns 3.11 ns 4
lstringa<40> e = "123456789012345678901234567890";_stddev 0.289 ns 0.289 ns 4
lstringa<40> e = "123456789012345678901234567890";_cv 9.16 % 9.16 % 4
----- 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.24 ns 2.24 ns 4
std::string e = "Test text"; auto c{e};_median 2.24 ns 2.24 ns 4
std::string e = "Test text"; auto c{e};_stddev 0.055 ns 0.055 ns 4
std::string e = "Test text"; auto c{e};_cv 2.45 % 2.45 % 4
std::string_view e = "Test text"; auto c{e};_mean 1.24 ns 1.24 ns 4
std::string_view e = "Test text"; auto c{e};_median 1.24 ns 1.24 ns 4
std::string_view e = "Test text"; auto c{e};_stddev 0.014 ns 0.014 ns 4
std::string_view e = "Test text"; auto c{e};_cv 1.13 % 1.13 % 4
ssa e = "Test text"; auto c{e};_mean 1.23 ns 1.23 ns 4
ssa e = "Test text"; auto c{e};_median 1.24 ns 1.24 ns 4
ssa e = "Test text"; auto c{e};_stddev 0.034 ns 0.034 ns 4
ssa e = "Test text"; auto c{e};_cv 2.78 % 2.78 % 4
stringa e = "Test text"; auto c{e};_mean 2.61 ns 2.61 ns 4
stringa e = "Test text"; auto c{e};_median 2.61 ns 2.61 ns 4
stringa e = "Test text"; auto c{e};_stddev 0.058 ns 0.058 ns 4
stringa e = "Test text"; auto c{e};_cv 2.21 % 2.21 % 4
lstringa<20> e = "Test text"; auto c{e};_mean 16.2 ns 16.2 ns 4
lstringa<20> e = "Test text"; auto c{e};_median 16.1 ns 16.1 ns 4
lstringa<20> e = "Test text"; auto c{e};_stddev 1.26 ns 1.26 ns 4
lstringa<20> e = "Test text"; auto c{e};_cv 7.76 % 7.76 % 4
lstringa<40> e = "Test text"; auto c{e};_mean 14.7 ns 14.7 ns 4
lstringa<40> e = "Test text"; auto c{e};_median 14.7 ns 14.7 ns 4
lstringa<40> e = "Test text"; auto c{e};_stddev 0.936 ns 0.936 ns 4
lstringa<40> e = "Test text"; auto c{e};_cv 6.38 % 6.38 % 4
----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890"; auto c{e};_mean 37.7 ns 37.7 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_median 38.0 ns 38.0 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_stddev 1.53 ns 1.53 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_cv 4.06 % 4.06 % 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 1.23 ns 1.23 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_median 1.22 ns 1.22 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.022 ns 0.022 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.83 % 1.83 % 4
ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.989 ns 0.989 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_median 0.986 ns 0.986 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.025 ns 0.025 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_cv 2.55 % 2.55 % 4
stringa e = "123456789012345678901234567890"; auto c{e};_mean 2.19 ns 2.19 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_median 2.18 ns 2.18 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.016 ns 0.016 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_cv 0.74 % 0.74 % 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 16.2 ns 16.2 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 16.1 ns 16.1 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.579 ns 0.579 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 3.58 % 3.58 % 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 13.7 ns 13.7 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 13.7 ns 13.7 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.534 ns 0.534 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 3.88 % 3.88 % 4
----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string::find;_mean 45.9 ns 45.9 ns 4
std::string::find;_median 45.8 ns 45.8 ns 4
std::string::find;_stddev 0.967 ns 0.967 ns 4
std::string::find;_cv 2.11 % 2.11 % 4
std::string_view::find;_mean 51.0 ns 51.0 ns 4
std::string_view::find;_median 51.2 ns 51.2 ns 4
std::string_view::find;_stddev 1.35 ns 1.35 ns 4
std::string_view::find;_cv 2.65 % 2.65 % 4
ssa::find;_mean 48.9 ns 48.9 ns 4
ssa::find;_median 48.9 ns 48.9 ns 4
ssa::find;_stddev 0.252 ns 0.252 ns 4
ssa::find;_cv 0.52 % 0.52 % 4
stringa::find;_mean 51.8 ns 51.8 ns 4
stringa::find;_median 52.0 ns 52.0 ns 4
stringa::find;_stddev 2.78 ns 2.78 ns 4
stringa::find;_cv 5.36 % 5.36 % 4
lstringa<20>::find;_mean 44.6 ns 44.6 ns 4
lstringa<20>::find;_median 44.8 ns 44.8 ns 4
lstringa<20>::find;_stddev 1.35 ns 1.35 ns 4
lstringa<20>::find;_cv 3.02 % 3.02 % 4
lstringa<40>::find;_mean 43.8 ns 43.8 ns 4
lstringa<40>::find;_median 43.5 ns 43.5 ns 4
lstringa<40>::find;_stddev 1.45 ns 1.45 ns 4
lstringa<40>::find;_cv 3.31 % 3.31 % 4
------- 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 38.2 ns 38.2 ns 4
std::string copy{str_with_len_N};/15_median 38.0 ns 38.0 ns 4
std::string copy{str_with_len_N};/15_stddev 1.61 ns 1.61 ns 4
std::string copy{str_with_len_N};/15_cv 4.23 % 4.23 % 4
std::string copy{str_with_len_N};/16_mean 36.1 ns 36.1 ns 4
std::string copy{str_with_len_N};/16_median 36.0 ns 36.0 ns 4
std::string copy{str_with_len_N};/16_stddev 0.461 ns 0.461 ns 4
std::string copy{str_with_len_N};/16_cv 1.28 % 1.28 % 4
std::string copy{str_with_len_N};/23_mean 36.6 ns 36.6 ns 4
std::string copy{str_with_len_N};/23_median 36.1 ns 36.1 ns 4
std::string copy{str_with_len_N};/23_stddev 1.53 ns 1.53 ns 4
std::string copy{str_with_len_N};/23_cv 4.18 % 4.18 % 4
std::string copy{str_with_len_N};/24_mean 37.7 ns 37.7 ns 4
std::string copy{str_with_len_N};/24_median 36.9 ns 36.9 ns 4
std::string copy{str_with_len_N};/24_stddev 2.37 ns 2.37 ns 4
std::string copy{str_with_len_N};/24_cv 6.27 % 6.27 % 4
std::string copy{str_with_len_N};/32_mean 45.9 ns 45.9 ns 4
std::string copy{str_with_len_N};/32_median 39.2 ns 39.2 ns 4
std::string copy{str_with_len_N};/32_stddev 14.4 ns 14.4 ns 4
std::string copy{str_with_len_N};/32_cv 31.41 % 31.41 % 4
std::string copy{str_with_len_N};/64_mean 44.9 ns 44.9 ns 4
std::string copy{str_with_len_N};/64_median 41.3 ns 41.3 ns 4
std::string copy{str_with_len_N};/64_stddev 8.96 ns 8.96 ns 4
std::string copy{str_with_len_N};/64_cv 19.94 % 19.94 % 4
std::string copy{str_with_len_N};/128_mean 44.1 ns 44.1 ns 4
std::string copy{str_with_len_N};/128_median 41.2 ns 41.2 ns 4
std::string copy{str_with_len_N};/128_stddev 7.30 ns 7.30 ns 4
std::string copy{str_with_len_N};/128_cv 16.54 % 16.54 % 4
std::string copy{str_with_len_N};/256_mean 54.8 ns 54.8 ns 4
std::string copy{str_with_len_N};/256_median 52.8 ns 52.8 ns 4
std::string copy{str_with_len_N};/256_stddev 11.7 ns 11.7 ns 4
std::string copy{str_with_len_N};/256_cv 21.36 % 21.36 % 4
std::string copy{str_with_len_N};/512_mean 53.5 ns 53.5 ns 4
std::string copy{str_with_len_N};/512_median 49.5 ns 49.5 ns 4
std::string copy{str_with_len_N};/512_stddev 10.2 ns 10.2 ns 4
std::string copy{str_with_len_N};/512_cv 18.99 % 18.99 % 4
std::string copy{str_with_len_N};/1024_mean 62.2 ns 62.2 ns 4
std::string copy{str_with_len_N};/1024_median 59.3 ns 59.3 ns 4
std::string copy{str_with_len_N};/1024_stddev 7.42 ns 7.42 ns 4
std::string copy{str_with_len_N};/1024_cv 11.94 % 11.94 % 4
std::string copy{str_with_len_N};/2048_mean 88.4 ns 88.4 ns 4
std::string copy{str_with_len_N};/2048_median 87.3 ns 87.3 ns 4
std::string copy{str_with_len_N};/2048_stddev 5.17 ns 5.17 ns 4
std::string copy{str_with_len_N};/2048_cv 5.85 % 5.85 % 4
std::string copy{str_with_len_N};/4096_mean 154 ns 154 ns 4
std::string copy{str_with_len_N};/4096_median 152 ns 152 ns 4
std::string copy{str_with_len_N};/4096_stddev 13.5 ns 13.5 ns 4
std::string copy{str_with_len_N};/4096_cv 8.80 % 8.80 % 4
stringa copy{str_with_len_N};/15_mean 2.70 ns 2.70 ns 4
stringa copy{str_with_len_N};/15_median 2.72 ns 2.72 ns 4
stringa copy{str_with_len_N};/15_stddev 0.110 ns 0.110 ns 4
stringa copy{str_with_len_N};/15_cv 4.07 % 4.07 % 4
stringa copy{str_with_len_N};/16_mean 5.04 ns 5.04 ns 4
stringa copy{str_with_len_N};/16_median 5.04 ns 5.04 ns 4
stringa copy{str_with_len_N};/16_stddev 0.234 ns 0.234 ns 4
stringa copy{str_with_len_N};/16_cv 4.64 % 4.64 % 4
stringa copy{str_with_len_N};/23_mean 4.81 ns 4.81 ns 4
stringa copy{str_with_len_N};/23_median 4.80 ns 4.80 ns 4
stringa copy{str_with_len_N};/23_stddev 0.084 ns 0.084 ns 4
stringa copy{str_with_len_N};/23_cv 1.74 % 1.74 % 4
stringa copy{str_with_len_N};/24_mean 4.82 ns 4.82 ns 4
stringa copy{str_with_len_N};/24_median 4.79 ns 4.79 ns 4
stringa copy{str_with_len_N};/24_stddev 0.102 ns 0.102 ns 4
stringa copy{str_with_len_N};/24_cv 2.12 % 2.12 % 4
stringa copy{str_with_len_N};/32_mean 4.76 ns 4.76 ns 4
stringa copy{str_with_len_N};/32_median 4.76 ns 4.76 ns 4
stringa copy{str_with_len_N};/32_stddev 0.037 ns 0.037 ns 4
stringa copy{str_with_len_N};/32_cv 0.78 % 0.78 % 4
stringa copy{str_with_len_N};/64_mean 4.79 ns 4.79 ns 4
stringa copy{str_with_len_N};/64_median 4.81 ns 4.81 ns 4
stringa copy{str_with_len_N};/64_stddev 0.076 ns 0.076 ns 4
stringa copy{str_with_len_N};/64_cv 1.58 % 1.58 % 4
stringa copy{str_with_len_N};/128_mean 4.98 ns 4.98 ns 4
stringa copy{str_with_len_N};/128_median 4.88 ns 4.88 ns 4
stringa copy{str_with_len_N};/128_stddev 0.352 ns 0.352 ns 4
stringa copy{str_with_len_N};/128_cv 7.07 % 7.07 % 4
stringa copy{str_with_len_N};/256_mean 4.87 ns 4.87 ns 4
stringa copy{str_with_len_N};/256_median 4.88 ns 4.88 ns 4
stringa copy{str_with_len_N};/256_stddev 0.145 ns 0.145 ns 4
stringa copy{str_with_len_N};/256_cv 2.99 % 2.99 % 4
stringa copy{str_with_len_N};/512_mean 4.79 ns 4.79 ns 4
stringa copy{str_with_len_N};/512_median 4.79 ns 4.79 ns 4
stringa copy{str_with_len_N};/512_stddev 0.077 ns 0.077 ns 4
stringa copy{str_with_len_N};/512_cv 1.61 % 1.61 % 4
stringa copy{str_with_len_N};/1024_mean 4.81 ns 4.81 ns 4
stringa copy{str_with_len_N};/1024_median 4.80 ns 4.80 ns 4
stringa copy{str_with_len_N};/1024_stddev 0.071 ns 0.071 ns 4
stringa copy{str_with_len_N};/1024_cv 1.48 % 1.48 % 4
stringa copy{str_with_len_N};/2048_mean 4.84 ns 4.84 ns 4
stringa copy{str_with_len_N};/2048_median 4.80 ns 4.80 ns 4
stringa copy{str_with_len_N};/2048_stddev 0.086 ns 0.086 ns 4
stringa copy{str_with_len_N};/2048_cv 1.79 % 1.79 % 4
stringa copy{str_with_len_N};/4096_mean 4.86 ns 4.86 ns 4
stringa copy{str_with_len_N};/4096_median 4.84 ns 4.84 ns 4
stringa copy{str_with_len_N};/4096_stddev 0.121 ns 0.121 ns 4
stringa copy{str_with_len_N};/4096_cv 2.49 % 2.49 % 4
lstringa<16> copy{str_with_len_N};/15_mean 14.4 ns 14.4 ns 4
lstringa<16> copy{str_with_len_N};/15_median 14.5 ns 14.5 ns 4
lstringa<16> copy{str_with_len_N};/15_stddev 0.478 ns 0.478 ns 4
lstringa<16> copy{str_with_len_N};/15_cv 3.33 % 3.33 % 4
lstringa<16> copy{str_with_len_N};/16_mean 14.5 ns 14.5 ns 4
lstringa<16> copy{str_with_len_N};/16_median 14.6 ns 14.6 ns 4
lstringa<16> copy{str_with_len_N};/16_stddev 0.844 ns 0.844 ns 4
lstringa<16> copy{str_with_len_N};/16_cv 5.80 % 5.80 % 4
lstringa<16> copy{str_with_len_N};/23_mean 29.6 ns 29.6 ns 4
lstringa<16> copy{str_with_len_N};/23_median 29.6 ns 29.6 ns 4
lstringa<16> copy{str_with_len_N};/23_stddev 0.999 ns 0.999 ns 4
lstringa<16> copy{str_with_len_N};/23_cv 3.38 % 3.38 % 4
lstringa<16> copy{str_with_len_N};/24_mean 32.4 ns 32.4 ns 4
lstringa<16> copy{str_with_len_N};/24_median 31.7 ns 31.7 ns 4
lstringa<16> copy{str_with_len_N};/24_stddev 3.40 ns 3.40 ns 4
lstringa<16> copy{str_with_len_N};/24_cv 10.52 % 10.52 % 4
lstringa<16> copy{str_with_len_N};/32_mean 42.4 ns 42.4 ns 4
lstringa<16> copy{str_with_len_N};/32_median 34.0 ns 34.0 ns 4
lstringa<16> copy{str_with_len_N};/32_stddev 17.1 ns 17.1 ns 4
lstringa<16> copy{str_with_len_N};/32_cv 40.39 % 40.39 % 4
lstringa<16> copy{str_with_len_N};/64_mean 37.6 ns 37.6 ns 4
lstringa<16> copy{str_with_len_N};/64_median 32.7 ns 32.7 ns 4
lstringa<16> copy{str_with_len_N};/64_stddev 11.4 ns 11.4 ns 4
lstringa<16> copy{str_with_len_N};/64_cv 30.43 % 30.43 % 4
lstringa<16> copy{str_with_len_N};/128_mean 38.7 ns 38.7 ns 4
lstringa<16> copy{str_with_len_N};/128_median 34.0 ns 34.0 ns 4
lstringa<16> copy{str_with_len_N};/128_stddev 10.3 ns 10.3 ns 4
lstringa<16> copy{str_with_len_N};/128_cv 26.74 % 26.74 % 4
lstringa<16> copy{str_with_len_N};/256_mean 51.0 ns 51.0 ns 4
lstringa<16> copy{str_with_len_N};/256_median 50.1 ns 50.1 ns 4
lstringa<16> copy{str_with_len_N};/256_stddev 8.31 ns 8.31 ns 4
lstringa<16> copy{str_with_len_N};/256_cv 16.29 % 16.29 % 4
lstringa<16> copy{str_with_len_N};/512_mean 47.3 ns 47.3 ns 4
lstringa<16> copy{str_with_len_N};/512_median 46.7 ns 46.7 ns 4
lstringa<16> copy{str_with_len_N};/512_stddev 1.54 ns 1.54 ns 4
lstringa<16> copy{str_with_len_N};/512_cv 3.26 % 3.26 % 4
lstringa<16> copy{str_with_len_N};/1024_mean 56.8 ns 56.8 ns 4
lstringa<16> copy{str_with_len_N};/1024_median 56.7 ns 56.7 ns 4
lstringa<16> copy{str_with_len_N};/1024_stddev 3.84 ns 3.84 ns 4
lstringa<16> copy{str_with_len_N};/1024_cv 6.77 % 6.77 % 4
lstringa<16> copy{str_with_len_N};/2048_mean 83.2 ns 83.2 ns 4
lstringa<16> copy{str_with_len_N};/2048_median 84.9 ns 84.9 ns 4
lstringa<16> copy{str_with_len_N};/2048_stddev 5.93 ns 5.93 ns 4
lstringa<16> copy{str_with_len_N};/2048_cv 7.12 % 7.12 % 4
lstringa<16> copy{str_with_len_N};/4096_mean 141 ns 141 ns 4
lstringa<16> copy{str_with_len_N};/4096_median 139 ns 139 ns 4
lstringa<16> copy{str_with_len_N};/4096_stddev 11.7 ns 11.7 ns 4
lstringa<16> copy{str_with_len_N};/4096_cv 8.33 % 8.33 % 4
lstringa<512> copy{str_with_len_N};/15_mean 14.5 ns 14.5 ns 4
lstringa<512> copy{str_with_len_N};/15_median 14.4 ns 14.4 ns 4
lstringa<512> copy{str_with_len_N};/15_stddev 0.745 ns 0.745 ns 4
lstringa<512> copy{str_with_len_N};/15_cv 5.13 % 5.13 % 4
lstringa<512> copy{str_with_len_N};/16_mean 15.1 ns 15.1 ns 4
lstringa<512> copy{str_with_len_N};/16_median 15.0 ns 15.0 ns 4
lstringa<512> copy{str_with_len_N};/16_stddev 0.805 ns 0.805 ns 4
lstringa<512> copy{str_with_len_N};/16_cv 5.34 % 5.34 % 4
lstringa<512> copy{str_with_len_N};/23_mean 14.7 ns 14.7 ns 4
lstringa<512> copy{str_with_len_N};/23_median 14.9 ns 14.9 ns 4
lstringa<512> copy{str_with_len_N};/23_stddev 0.706 ns 0.706 ns 4
lstringa<512> copy{str_with_len_N};/23_cv 4.80 % 4.80 % 4
lstringa<512> copy{str_with_len_N};/24_mean 14.9 ns 14.9 ns 4
lstringa<512> copy{str_with_len_N};/24_median 14.6 ns 14.6 ns 4
lstringa<512> copy{str_with_len_N};/24_stddev 0.713 ns 0.713 ns 4
lstringa<512> copy{str_with_len_N};/24_cv 4.78 % 4.78 % 4
lstringa<512> copy{str_with_len_N};/32_mean 17.9 ns 17.9 ns 4
lstringa<512> copy{str_with_len_N};/32_median 17.8 ns 17.8 ns 4
lstringa<512> copy{str_with_len_N};/32_stddev 0.517 ns 0.517 ns 4
lstringa<512> copy{str_with_len_N};/32_cv 2.89 % 2.89 % 4
lstringa<512> copy{str_with_len_N};/64_mean 17.4 ns 17.4 ns 4
lstringa<512> copy{str_with_len_N};/64_median 17.5 ns 17.5 ns 4
lstringa<512> copy{str_with_len_N};/64_stddev 0.443 ns 0.443 ns 4
lstringa<512> copy{str_with_len_N};/64_cv 2.55 % 2.55 % 4
lstringa<512> copy{str_with_len_N};/128_mean 17.9 ns 17.9 ns 4
lstringa<512> copy{str_with_len_N};/128_median 17.9 ns 17.9 ns 4
lstringa<512> copy{str_with_len_N};/128_stddev 0.604 ns 0.604 ns 4
lstringa<512> copy{str_with_len_N};/128_cv 3.38 % 3.38 % 4
lstringa<512> copy{str_with_len_N};/256_mean 19.7 ns 19.7 ns 4
lstringa<512> copy{str_with_len_N};/256_median 19.6 ns 19.6 ns 4
lstringa<512> copy{str_with_len_N};/256_stddev 0.937 ns 0.937 ns 4
lstringa<512> copy{str_with_len_N};/256_cv 4.75 % 4.75 % 4
lstringa<512> copy{str_with_len_N};/512_mean 22.2 ns 22.2 ns 4
lstringa<512> copy{str_with_len_N};/512_median 22.2 ns 22.2 ns 4
lstringa<512> copy{str_with_len_N};/512_stddev 1.02 ns 1.02 ns 4
lstringa<512> copy{str_with_len_N};/512_cv 4.57 % 4.57 % 4
lstringa<512> copy{str_with_len_N};/1024_mean 55.1 ns 55.1 ns 4
lstringa<512> copy{str_with_len_N};/1024_median 55.6 ns 55.6 ns 4
lstringa<512> copy{str_with_len_N};/1024_stddev 2.95 ns 2.95 ns 4
lstringa<512> copy{str_with_len_N};/1024_cv 5.37 % 5.37 % 4
lstringa<512> copy{str_with_len_N};/2048_mean 80.3 ns 80.3 ns 4
lstringa<512> copy{str_with_len_N};/2048_median 82.0 ns 82.0 ns 4
lstringa<512> copy{str_with_len_N};/2048_stddev 6.81 ns 6.81 ns 4
lstringa<512> copy{str_with_len_N};/2048_cv 8.48 % 8.48 % 4
lstringa<512> copy{str_with_len_N};/4096_mean 149 ns 149 ns 4
lstringa<512> copy{str_with_len_N};/4096_median 145 ns 145 ns 4
lstringa<512> copy{str_with_len_N};/4096_stddev 9.43 ns 9.43 ns 4
lstringa<512> copy{str_with_len_N};/4096_cv 6.31 % 6.31 % 4
----- 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.7 ns 73.7 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 72.6 ns 72.6 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 4.60 ns 4.60 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 6.24 % 6.24 % 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 27.8 ns 27.8 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 27.8 ns 27.8 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.753 ns 0.753 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 2.71 % 2.71 % 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 19.1 ns 19.1 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 19.1 ns 19.1 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.501 ns 0.501 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 2.62 % 2.62 % 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 17.1 ns 17.1 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 17.0 ns 17.0 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.341 ns 0.341 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 2.00 % 2.00 % 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 17.3 ns 17.3 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_median 17.2 ns 17.2 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.983 ns 0.983 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 5.67 % 5.67 % 4
----- 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 55.0 ns 55.0 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 54.7 ns 54.7 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.926 ns 0.926 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 1.68 % 1.68 % 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 28.2 ns 28.2 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 28.4 ns 28.4 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.328 ns 0.328 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 1.16 % 1.16 % 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 17.4 ns 17.4 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 17.5 ns 17.5 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.384 ns 0.384 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 2.21 % 2.21 % 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 16.3 ns 16.3 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 16.2 ns 16.2 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.273 ns 0.273 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.67 % 1.67 % 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 16.5 ns 16.5 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 16.5 ns 16.5 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.239 ns 0.239 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.45 % 1.45 % 4
----- 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 78.2 ns 78.2 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 78.6 ns 78.6 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 0.938 ns 0.938 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 1.20 % 1.20 % 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_mean 23.2 ns 23.2 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_median 23.4 ns 23.4 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_stddev 0.320 ns 0.320 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_cv 1.38 % 1.38 % 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_mean 23.4 ns 23.4 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_median 23.1 ns 23.1 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_stddev 1.53 ns 1.53 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_cv 6.55 % 6.55 % 4
----- 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 210 ns 210 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 207 ns 207 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 22.0 ns 22.0 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 10.50 % 10.50 % 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 113 ns 113 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 113 ns 113 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 1.64 ns 1.64 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 1.45 % 1.45 % 4
ssa s = "1234.567e10"; double res = *s.to_double()_mean 43.5 ns 43.5 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_median 43.8 ns 43.8 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.685 ns 0.685 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_cv 1.57 % 1.57 % 4
-- 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 4444 ns 4444 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_median 4419 ns 4419 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 191 ns 191 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_cv 4.29 % 4.29 % 4
std::string str; ... str += "abbaabbaabbaabba";_mean 625 ns 625 ns 4
std::string str; ... str += "abbaabbaabbaabba";_median 620 ns 620 ns 4
std::string str; ... str += "abbaabbaabbaabba";_stddev 19.6 ns 19.6 ns 4
std::string str; ... str += "abbaabbaabbaabba";_cv 3.14 % 3.14 % 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 758 ns 758 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_median 756 ns 756 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 23.6 ns 23.6 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 3.12 % 3.12 % 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 584 ns 584 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_median 573 ns 573 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 25.3 ns 25.3 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 4.34 % 4.34 % 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 458 ns 458 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_median 457 ns 457 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 5.21 ns 5.21 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 1.14 % 1.14 % 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 416 ns 416 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 415 ns 415 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 4.32 ns 4.32 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.04 % 1.04 % 4
-- 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 4444 ns 4444 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 4428 ns 4428 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 187 ns 187 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 4.21 % 4.21 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 2032 ns 2032 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_median 1972 ns 1972 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 141 ns 141 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 6.92 % 6.92 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 874 ns 874 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 852 ns 852 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 53.5 ns 53.5 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 6.12 % 6.12 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 729 ns 729 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 724 ns 724 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 28.1 ns 28.3 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.86 % 3.88 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 588 ns 588 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 585 ns 585 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 37.9 ns 37.9 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 6.45 % 6.45 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 580 ns 580 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 588 ns 588 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 21.2 ns 21.2 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.65 % 3.65 % 4
-- 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 223603 ns 223603 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 224782 ns 224782 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 8148 ns 8148 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 3.64 % 3.64 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 116339 ns 116339 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 114468 ns 114468 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 8652 ns 8652 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 7.44 % 7.44 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 44372 ns 44372 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 43357 ns 43357 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 3541 ns 3541 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 7.98 % 7.98 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 40049 ns 40049 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 38346 ns 38346 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 4007 ns 4007 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 10.00 % 10.00 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 37513 ns 37513 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 37253 ns 37253 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 546 ns 546 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.46 % 1.46 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 38281 ns 38281 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 38390 ns 38390 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 1330 ns 1330 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 3.47 % 3.47 % 4
-- 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 4573 ns 4573 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_median 4561 ns 4561 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_stddev 108 ns 108 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_cv 2.36 % 2.36 % 4
std::string str; ... str += str_var1 + str_var2;_mean 2452 ns 2452 ns 4
std::string str; ... str += str_var1 + str_var2;_median 2436 ns 2436 ns 4
std::string str; ... str += str_var1 + str_var2;_stddev 44.7 ns 44.7 ns 4
std::string str; ... str += str_var1 + str_var2;_cv 1.82 % 1.82 % 4
lstringa<16> str; ... str += str_var1 + str_var2;_mean 1196 ns 1196 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_median 1183 ns 1183 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_stddev 61.7 ns 61.7 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_cv 5.15 % 5.15 % 4
lstringa<128> str; ... str += str_var1 + str_var2;_mean 1120 ns 1120 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_median 1103 ns 1103 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_stddev 63.3 ns 63.3 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_cv 5.65 % 5.65 % 4
lstringa<512> str; ... str += str_var1 + str_var2;_mean 973 ns 973 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_median 963 ns 963 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_stddev 50.7 ns 50.7 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_cv 5.22 % 5.22 % 4
lstringa<1024> str; ... str += str_var1 + str_var2;_mean 874 ns 874 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_median 881 ns 881 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 41.1 ns 41.0 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_cv 4.70 % 4.68 % 4
-- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::stringstream str; str << "test = " << k << " times";_mean 6730 ns 6730 ns 4
std::stringstream str; str << "test = " << k << " times";_median 6645 ns 6645 ns 4
std::stringstream str; str << "test = " << k << " times";_stddev 206 ns 206 ns 4
std::stringstream str; str << "test = " << k << " times";_cv 3.06 % 3.06 % 4
std::string str = "test = " + std::to_string(k) + " times";_mean 1657 ns 1657 ns 4
std::string str = "test = " + std::to_string(k) + " times";_median 1642 ns 1642 ns 4
std::string str = "test = " + std::to_string(k) + " times";_stddev 70.2 ns 70.2 ns 4
std::string str = "test = " + std::to_string(k) + " times";_cv 4.24 % 4.24 % 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 2931 ns 2931 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 2898 ns 2898 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 99.0 ns 99.0 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 3.38 % 3.38 % 4
std::string str = std::format("test = {} times", k);_mean 2192 ns 2192 ns 4
std::string str = std::format("test = {} times", k);_median 2189 ns 2189 ns 4
std::string str = std::format("test = {} times", k);_stddev 167 ns 167 ns 4
std::string str = std::format("test = {} times", k);_cv 7.63 % 7.63 % 4
lstringa<8> str; str.format("test = {} times", k);_mean 3127 ns 3127 ns 4
lstringa<8> str; str.format("test = {} times", k);_median 3175 ns 3175 ns 4
lstringa<8> str; str.format("test = {} times", k);_stddev 135 ns 135 ns 4
lstringa<8> str; str.format("test = {} times", k);_cv 4.33 % 4.33 % 4
lstringa<32> str; str.format("test = {} times", k);_mean 2459 ns 2459 ns 4
lstringa<32> str; str.format("test = {} times", k);_median 2454 ns 2454 ns 4
lstringa<32> str; str.format("test = {} times", k);_stddev 20.9 ns 20.9 ns 4
lstringa<32> str; str.format("test = {} times", k);_cv 0.85 % 0.85 % 4
lstringa<8> str = "test = " + k + " times";_mean 593 ns 593 ns 4
lstringa<8> str = "test = " + k + " times";_median 596 ns 596 ns 4
lstringa<8> str = "test = " + k + " times";_stddev 18.6 ns 18.6 ns 4
lstringa<8> str = "test = " + k + " times";_cv 3.14 % 3.14 % 4
lstringa<32> str = "test = " + k + " times";_mean 379 ns 379 ns 4
lstringa<32> str = "test = " + k + " times";_median 388 ns 388 ns 4
lstringa<32> str = "test = " + k + " times";_stddev 35.6 ns 35.6 ns 4
lstringa<32> str = "test = " + k + " times";_cv 9.39 % 9.39 % 4
stringa str = "test = " + k + " times";_mean 564 ns 564 ns 4
stringa str = "test = " + k + " times";_median 564 ns 565 ns 4
stringa str = "test = " + k + " times";_stddev 32.8 ns 32.6 ns 4
stringa str = "test = " + k + " times";_cv 5.82 % 5.79 % 4
-- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string::find + substr + std::strtol_mean 614 ns 614 ns 4
std::string::find + substr + std::strtol_median 608 ns 608 ns 4
std::string::find + substr + std::strtol_stddev 19.5 ns 19.5 ns 4
std::string::find + substr + std::strtol_cv 3.19 % 3.19 % 4
ssa::splitter + ssa::as_int_mean 274 ns 274 ns 4
ssa::splitter + ssa::as_int_median 273 ns 273 ns 4
ssa::splitter + ssa::as_int_stddev 5.42 ns 5.42 ns 4
ssa::splitter + ssa::as_int_cv 1.98 % 1.98 % 4
ssa::splitf + functor_mean 321 ns 321 ns 4
ssa::splitf + functor_median 321 ns 321 ns 4
ssa::splitf + functor_stddev 3.28 ns 3.28 ns 4
ssa::splitf + functor_cv 1.02 % 1.02 % 4
-- 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 3397 ns 3397 ns 4
Naive (and wrong) replace symbols with std::string find + replace_median 3406 ns 3406 ns 4
Naive (and wrong) replace symbols with std::string find + replace_stddev 78.7 ns 78.7 ns 4
Naive (and wrong) replace symbols with std::string find + replace_cv 2.32 % 2.32 % 4
replace symbols with std::string find_first_of + replace_mean 4970 ns 4970 ns 4
replace symbols with std::string find_first_of + replace_median 4871 ns 4871 ns 4
replace symbols with std::string find_first_of + replace_stddev 275 ns 275 ns 4
replace symbols with std::string find_first_of + replace_cv 5.53 % 5.53 % 4
replace symbols with std::string_view find_first_of + copy_mean 3462 ns 3462 ns 4
replace symbols with std::string_view find_first_of + copy_median 3433 ns 3433 ns 4
replace symbols with std::string_view find_first_of + copy_stddev 147 ns 147 ns 4
replace symbols with std::string_view find_first_of + copy_cv 4.26 % 4.26 % 4
replace runtime symbols with string expressions and without remembering all search results_mean 3591 ns 3591 ns 4
replace runtime symbols with string expressions and without remembering all search results_median 3582 ns 3582 ns 4
replace runtime symbols with string expressions and without remembering all search results_stddev 54.1 ns 54.1 ns 4
replace runtime symbols with string expressions and without remembering all search results_cv 1.51 % 1.51 % 4
replace runtime symbols with simstr and memorization of all search results_mean 3097 ns 3097 ns 4
replace runtime symbols with simstr and memorization of all search results_median 3136 ns 3136 ns 4
replace runtime symbols with simstr and memorization of all search results_stddev 120 ns 120 ns 4
replace runtime symbols with simstr and memorization of all search results_cv 3.87 % 3.87 % 4
replace const symbols with string expressions and without remembering all search results_mean 2949 ns 2949 ns 4
replace const symbols with string expressions and without remembering all search results_median 2944 ns 2944 ns 4
replace const symbols with string expressions and without remembering all search results_stddev 71.2 ns 71.2 ns 4
replace const symbols with string expressions and without remembering all search results_cv 2.41 % 2.41 % 4
replace const symbols with string expressions and memorization of all search results_mean 2889 ns 2889 ns 4
replace const symbols with string expressions and memorization of all search results_median 2892 ns 2892 ns 4
replace const symbols with string expressions and memorization of all search results_stddev 82.5 ns 82.5 ns 4
replace const symbols with string expressions and memorization of all search results_cv 2.85 % 2.85 % 4
-- 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 431 ns 431 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_median 430 ns 430 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_stddev 11.1 ns 11.1 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_cv 2.58 % 2.58 % 4
Short replace symbols with std::string find_first_of + replace_mean 499 ns 499 ns 4
Short replace symbols with std::string find_first_of + replace_median 489 ns 489 ns 4
Short replace symbols with std::string find_first_of + replace_stddev 34.7 ns 34.7 ns 4
Short replace symbols with std::string find_first_of + replace_cv 6.94 % 6.94 % 4
Short replace symbols with std::string_view find_first_of + copy_mean 410 ns 410 ns 4
Short replace symbols with std::string_view find_first_of + copy_median 407 ns 407 ns 4
Short replace symbols with std::string_view find_first_of + copy_stddev 14.3 ns 14.3 ns 4
Short replace symbols with std::string_view find_first_of + copy_cv 3.50 % 3.50 % 4
Short replace runtime symbols with string expressions and without remembering all search results_mean 371 ns 371 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_median 370 ns 370 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_stddev 24.3 ns 24.3 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_cv 6.54 % 6.54 % 4
Short replace runtime symbols with simstr and memorization of all search results_mean 416 ns 416 ns 4
Short replace runtime symbols with simstr and memorization of all search results_median 415 ns 415 ns 4
Short replace runtime symbols with simstr and memorization of all search results_stddev 19.3 ns 19.3 ns 4
Short replace runtime symbols with simstr and memorization of all search results_cv 4.65 % 4.65 % 4
Short replace const symbols with string expressions and without remembering all search results_mean 253 ns 253 ns 4
Short replace const symbols with string expressions and without remembering all search results_median 252 ns 252 ns 4
Short replace const symbols with string expressions and without remembering all search results_stddev 8.08 ns 8.08 ns 4
Short replace const symbols with string expressions and without remembering all search results_cv 3.19 % 3.19 % 4
Short replace const symbols with string expressions and memorization of all search results_mean 313 ns 313 ns 4
Short replace const symbols with string expressions and memorization of all search results_median 315 ns 315 ns 4
Short replace const symbols with string expressions and memorization of all search results_stddev 3.46 ns 3.46 ns 4
Short replace const symbols with string expressions and memorization of all search results_cv 1.10 % 1.10 % 4
----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to ---- in std::string|64_mean 378 ns 378 ns 4
replace bb to ---- in std::string|64_median 372 ns 372 ns 4
replace bb to ---- in std::string|64_stddev 19.9 ns 19.9 ns 4
replace bb to ---- in std::string|64_cv 5.28 % 5.28 % 4
replace bb to ---- in std::string|256_mean 1351 ns 1351 ns 4
replace bb to ---- in std::string|256_median 1367 ns 1367 ns 4
replace bb to ---- in std::string|256_stddev 54.5 ns 54.5 ns 4
replace bb to ---- in std::string|256_cv 4.04 % 4.04 % 4
replace bb to ---- in std::string|512_mean 2782 ns 2782 ns 4
replace bb to ---- in std::string|512_median 2754 ns 2754 ns 4
replace bb to ---- in std::string|512_stddev 84.9 ns 84.9 ns 4
replace bb to ---- in std::string|512_cv 3.05 % 3.05 % 4
replace bb to ---- in std::string|1024_mean 5546 ns 5546 ns 4
replace bb to ---- in std::string|1024_median 5554 ns 5554 ns 4
replace bb to ---- in std::string|1024_stddev 167 ns 167 ns 4
replace bb to ---- in std::string|1024_cv 3.01 % 3.01 % 4
replace bb to ---- in std::string|2048_mean 12567 ns 12567 ns 4
replace bb to ---- in std::string|2048_median 12541 ns 12541 ns 4
replace bb to ---- in std::string|2048_stddev 251 ns 251 ns 4
replace bb to ---- in std::string|2048_cv 2.00 % 2.00 % 4
replace bb to ---- in lstringa<8>|64_mean 304 ns 304 ns 4
replace bb to ---- in lstringa<8>|64_median 301 ns 301 ns 4
replace bb to ---- in lstringa<8>|64_stddev 11.2 ns 11.2 ns 4
replace bb to ---- in lstringa<8>|64_cv 3.67 % 3.67 % 4
replace bb to ---- in lstringa<8>|256_mean 1149 ns 1149 ns 4
replace bb to ---- in lstringa<8>|256_median 1145 ns 1145 ns 4
replace bb to ---- in lstringa<8>|256_stddev 55.2 ns 55.2 ns 4
replace bb to ---- in lstringa<8>|256_cv 4.80 % 4.80 % 4
replace bb to ---- in lstringa<8>|512_mean 2114 ns 2114 ns 4
replace bb to ---- in lstringa<8>|512_median 2094 ns 2094 ns 4
replace bb to ---- in lstringa<8>|512_stddev 81.2 ns 81.2 ns 4
replace bb to ---- in lstringa<8>|512_cv 3.84 % 3.84 % 4
replace bb to ---- in lstringa<8>|1024_mean 4209 ns 4209 ns 4
replace bb to ---- in lstringa<8>|1024_median 4173 ns 4173 ns 4
replace bb to ---- in lstringa<8>|1024_stddev 161 ns 161 ns 4
replace bb to ---- in lstringa<8>|1024_cv 3.82 % 3.82 % 4
replace bb to ---- in lstringa<8>|2048_mean 7794 ns 7794 ns 4
replace bb to ---- in lstringa<8>|2048_median 7791 ns 7791 ns 4
replace bb to ---- in lstringa<8>|2048_stddev 364 ns 364 ns 4
replace bb to ---- in lstringa<8>|2048_cv 4.67 % 4.67 % 4
replace bb to ---- by init stringa|64_mean 216 ns 216 ns 4
replace bb to ---- by init stringa|64_median 212 ns 212 ns 4
replace bb to ---- by init stringa|64_stddev 14.6 ns 14.6 ns 4
replace bb to ---- by init stringa|64_cv 6.75 % 6.75 % 4
replace bb to ---- by init stringa|256_mean 741 ns 741 ns 4
replace bb to ---- by init stringa|256_median 738 ns 738 ns 4
replace bb to ---- by init stringa|256_stddev 12.5 ns 12.5 ns 4
replace bb to ---- by init stringa|256_cv 1.68 % 1.68 % 4
replace bb to ---- by init stringa|512_mean 1659 ns 1659 ns 4
replace bb to ---- by init stringa|512_median 1663 ns 1663 ns 4
replace bb to ---- by init stringa|512_stddev 24.8 ns 24.8 ns 4
replace bb to ---- by init stringa|512_cv 1.49 % 1.49 % 4
replace bb to ---- by init stringa|1024_mean 3573 ns 3573 ns 4
replace bb to ---- by init stringa|1024_median 3570 ns 3570 ns 4
replace bb to ---- by init stringa|1024_stddev 75.8 ns 75.8 ns 4
replace bb to ---- by init stringa|1024_cv 2.12 % 2.12 % 4
replace bb to ---- by init stringa|2048_mean 7063 ns 7063 ns 4
replace bb to ---- by init stringa|2048_median 7002 ns 7002 ns 4
replace bb to ---- by init stringa|2048_stddev 142 ns 142 ns 4
replace bb to ---- by init stringa|2048_cv 2.01 % 2.01 % 4
----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to -- in std::string|64_mean 283 ns 283 ns 4
replace bb to -- in std::string|64_median 282 ns 282 ns 4
replace bb to -- in std::string|64_stddev 4.26 ns 4.26 ns 4
replace bb to -- in std::string|64_cv 1.51 % 1.51 % 4
replace bb to -- in std::string|256_mean 995 ns 995 ns 4
replace bb to -- in std::string|256_median 1018 ns 1018 ns 4
replace bb to -- in std::string|256_stddev 70.0 ns 70.0 ns 4
replace bb to -- in std::string|256_cv 7.04 % 7.04 % 4
replace bb to -- in std::string|512_mean 1844 ns 1844 ns 4
replace bb to -- in std::string|512_median 1820 ns 1820 ns 4
replace bb to -- in std::string|512_stddev 78.5 ns 78.5 ns 4
replace bb to -- in std::string|512_cv 4.26 % 4.26 % 4
replace bb to -- in std::string|1024_mean 3877 ns 3878 ns 4
replace bb to -- in std::string|1024_median 3882 ns 3882 ns 4
replace bb to -- in std::string|1024_stddev 278 ns 276 ns 4
replace bb to -- in std::string|1024_cv 7.16 % 7.11 % 4
replace bb to -- in std::string|2048_mean 7023 ns 7023 ns 4
replace bb to -- in std::string|2048_median 6986 ns 6986 ns 4
replace bb to -- in std::string|2048_stddev 131 ns 131 ns 4
replace bb to -- in std::string|2048_cv 1.87 % 1.87 % 4
replace bb to -- in lstringa<8>|64_mean 228 ns 228 ns 4
replace bb to -- in lstringa<8>|64_median 226 ns 226 ns 4
replace bb to -- in lstringa<8>|64_stddev 14.6 ns 14.6 ns 4
replace bb to -- in lstringa<8>|64_cv 6.42 % 6.42 % 4
replace bb to -- in lstringa<8>|256_mean 785 ns 785 ns 4
replace bb to -- in lstringa<8>|256_median 786 ns 786 ns 4
replace bb to -- in lstringa<8>|256_stddev 26.5 ns 26.5 ns 4
replace bb to -- in lstringa<8>|256_cv 3.38 % 3.38 % 4
replace bb to -- in lstringa<8>|512_mean 1545 ns 1545 ns 4
replace bb to -- in lstringa<8>|512_median 1521 ns 1521 ns 4
replace bb to -- in lstringa<8>|512_stddev 84.7 ns 84.7 ns 4
replace bb to -- in lstringa<8>|512_cv 5.48 % 5.48 % 4
replace bb to -- in lstringa<8>|1024_mean 2838 ns 2838 ns 4
replace bb to -- in lstringa<8>|1024_median 2848 ns 2848 ns 4
replace bb to -- in lstringa<8>|1024_stddev 37.8 ns 37.8 ns 4
replace bb to -- in lstringa<8>|1024_cv 1.33 % 1.33 % 4
replace bb to -- in lstringa<8>|2048_mean 5602 ns 5602 ns 4
replace bb to -- in lstringa<8>|2048_median 5586 ns 5586 ns 4
replace bb to -- in lstringa<8>|2048_stddev 337 ns 337 ns 4
replace bb to -- in lstringa<8>|2048_cv 6.02 % 6.02 % 4
replace bb to -- by init stringa|64_mean 175 ns 175 ns 4
replace bb to -- by init stringa|64_median 174 ns 174 ns 4
replace bb to -- by init stringa|64_stddev 4.71 ns 4.71 ns 4
replace bb to -- by init stringa|64_cv 2.70 % 2.70 % 4
replace bb to -- by init stringa|256_mean 621 ns 621 ns 4
replace bb to -- by init stringa|256_median 607 ns 607 ns 4
replace bb to -- by init stringa|256_stddev 43.9 ns 43.9 ns 4
replace bb to -- by init stringa|256_cv 7.07 % 7.07 % 4
replace bb to -- by init stringa|512_mean 1186 ns 1186 ns 4
replace bb to -- by init stringa|512_median 1185 ns 1185 ns 4
replace bb to -- by init stringa|512_stddev 21.7 ns 21.7 ns 4
replace bb to -- by init stringa|512_cv 1.83 % 1.83 % 4
replace bb to -- by init stringa|1024_mean 2237 ns 2237 ns 4
replace bb to -- by init stringa|1024_median 2236 ns 2236 ns 4
replace bb to -- by init stringa|1024_stddev 49.2 ns 49.2 ns 4
replace bb to -- by init stringa|1024_cv 2.20 % 2.20 % 4
replace bb to -- by init stringa|2048_mean 4470 ns 4470 ns 4
replace bb to -- by init stringa|2048_median 4441 ns 4441 ns 4
replace bb to -- by init stringa|2048_stddev 162 ns 162 ns 4
replace bb to -- by init stringa|2048_cv 3.63 % 3.63 % 4
----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
hashStrMapA<size_t> emplace & find stringa;_mean 3104626 ns 3104626 ns 4
hashStrMapA<size_t> emplace & find stringa;_median 3085903 ns 3085903 ns 4
hashStrMapA<size_t> emplace & find stringa;_stddev 54831 ns 54831 ns 4
hashStrMapA<size_t> emplace & find stringa;_cv 1.77 % 1.77 % 4
std::unordered_map<std::string, size_t> emplace & find std::string;_mean 3379032 ns 3379032 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_median 3387097 ns 3387097 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_stddev 39887 ns 39887 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_cv 1.18 % 1.18 % 4
hashStrMapA<size_t> emplace & find ssa;_mean 3111588 ns 3111588 ns 4
hashStrMapA<size_t> emplace & find ssa;_median 3109442 ns 3109442 ns 4
hashStrMapA<size_t> emplace & find ssa;_stddev 33794 ns 33794 ns 4
hashStrMapA<size_t> emplace & find ssa;_cv 1.09 % 1.09 % 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_mean 3799479 ns 3799479 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_median 3768229 ns 3768229 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_stddev 130555 ns 130555 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_cv 3.44 % 3.44 % 4
----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Build func full name std::string;_mean 2855 ns 2855 ns 4
Build func full name std::string;_median 2899 ns 2899 ns 4
Build func full name std::string;_stddev 160 ns 160 ns 4
Build func full name std::string;_cv 5.62 % 5.62 % 4
Build func full name std::string 1;_mean 3137 ns 3137 ns 4
Build func full name std::string 1;_median 3056 ns 3056 ns 4
Build func full name std::string 1;_stddev 278 ns 278 ns 4
Build func full name std::string 1;_cv 8.85 % 8.85 % 4
Build func full name std::stream;_mean 7119 ns 7119 ns 4
Build func full name std::stream;_median 7185 ns 7185 ns 4
Build func full name std::stream;_stddev 211 ns 211 ns 4
Build func full name std::stream;_cv 2.96 % 2.96 % 4
Build func full name stringa;_mean 1353 ns 1353 ns 4
Build func full name stringa;_median 1347 ns 1347 ns 4
Build func full name stringa;_stddev 59.5 ns 59.5 ns 4
Build func full name stringa;_cv 4.40 % 4.40 % 4
Build func full name stringa 1;_mean 1610 ns 1610 ns 4
Build func full name stringa 1;_median 1613 ns 1613 ns 4
Build func full name stringa 1;_stddev 73.9 ns 73.9 ns 4
Build func full name stringa 1;_cv 4.59 % 4.59 % 4

View File

@ -0,0 +1,981 @@
Benchmarks of simstr, version 1.8.1
Sources: https://github.com/orefkov/simstr
Results: https://orefkov.github.io/simstr/results.html
Compiler Clang 22.0.0, use libc++
Run on (32 X 2513.96 MHz CPU s)
Chrome/143.0.0.0 webasm
--------------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------------------------------------------------------------------------------------------------
----- Concatenate email ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat email std::format_mean 483 ns 483 ns 4
Concat email std::format_median 481 ns 481 ns 4
Concat email std::format_stddev 5.61 ns 5.61 ns 4
Concat email std::format_cv 1.16 % 1.16 % 4
Concat email std::stringstream_mean 1090 ns 1090 ns 4
Concat email std::stringstream_median 1095 ns 1095 ns 4
Concat email std::stringstream_stddev 16.5 ns 16.5 ns 4
Concat email std::stringstream_cv 1.51 % 1.51 % 4
Concat email stringzilla append_mean 230 ns 230 ns 4
Concat email stringzilla append_median 230 ns 230 ns 4
Concat email stringzilla append_stddev 1.55 ns 1.55 ns 4
Concat email stringzilla append_cv 0.68 % 0.67 % 4
Concat email stringzilla concat_mean 92.5 ns 92.5 ns 4
Concat email stringzilla concat_median 92.8 ns 92.8 ns 4
Concat email stringzilla concat_stddev 2.17 ns 2.17 ns 4
Concat email stringzilla concat_cv 2.35 % 2.35 % 4
Concat email std::string append_mean 289 ns 289 ns 4
Concat email std::string append_median 290 ns 290 ns 4
Concat email std::string append_stddev 8.94 ns 8.94 ns 4
Concat email std::string append_cv 3.10 % 3.10 % 4
Concat email std::string by strexpr_mean 88.2 ns 88.2 ns 4
Concat email std::string by strexpr_median 86.7 ns 86.7 ns 4
Concat email std::string by strexpr_stddev 5.21 ns 5.21 ns 4
Concat email std::string by strexpr_cv 5.91 % 5.91 % 4
Concat email stringa_mean 67.4 ns 67.4 ns 4
Concat email stringa_median 67.3 ns 67.3 ns 4
Concat email stringa_stddev 2.25 ns 2.25 ns 4
Concat email stringa_cv 3.34 % 3.34 % 4
----- Concatenate string + Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and number by std to std::string_mean 1042 ns 1042 ns 4
Concat std::string and number by std to std::string_median 1048 ns 1048 ns 4
Concat std::string and number by std to std::string_stddev 25.0 ns 25.0 ns 4
Concat std::string and number by std to std::string_cv 2.40 % 2.40 % 4
Concat std::string and number by StrExpr to std::string_mean 486 ns 486 ns 4
Concat std::string and number by StrExpr to std::string_median 484 ns 484 ns 4
Concat std::string and number by StrExpr to std::string_stddev 13.4 ns 13.4 ns 4
Concat std::string and number by StrExpr to std::string_cv 2.77 % 2.77 % 4
Concat stringa and number by StrExpr to simstr::stringa_mean 217 ns 217 ns 4
Concat stringa and number by StrExpr to simstr::stringa_median 214 ns 214 ns 4
Concat stringa and number by StrExpr to simstr::stringa_stddev 8.29 ns 8.29 ns 4
Concat stringa and number by StrExpr to simstr::stringa_cv 3.82 % 3.82 % 4
Concat stringa and number by e_concat to simstr::stringa_mean 218 ns 218 ns 4
Concat stringa and number by e_concat to simstr::stringa_median 217 ns 217 ns 4
Concat stringa and number by e_concat to simstr::stringa_stddev 4.31 ns 4.31 ns 4
Concat stringa and number by e_concat to simstr::stringa_cv 1.98 % 1.98 % 4
----- Concatenate string + Hex Number + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string and format hex number and literal to std::string_mean 2057 ns 2057 ns 4
Concat std::string and format hex number and literal to std::string_median 2054 ns 2054 ns 4
Concat std::string and format hex number and literal to std::string_stddev 53.5 ns 53.5 ns 4
Concat std::string and format hex number and literal to std::string_cv 2.60 % 2.60 % 4
std::format std::string and hex number by literal to std::string_mean 2629 ns 2629 ns 4
std::format std::string and hex number by literal to std::string_median 2624 ns 2624 ns 4
std::format std::string and hex number by literal to std::string_stddev 16.4 ns 16.4 ns 4
std::format std::string and hex number by literal to std::string_cv 0.63 % 0.63 % 4
Concat std::string and std::to_chars and string to std::string_mean 676 ns 676 ns 4
Concat std::string and std::to_chars and string to std::string_median 678 ns 678 ns 4
Concat std::string and std::to_chars and string to std::string_stddev 9.67 ns 9.67 ns 4
Concat std::string and std::to_chars and string to std::string_cv 1.43 % 1.43 % 4
Concat std::string and hex number and literal by StrExpr to std::string_mean 526 ns 526 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_median 525 ns 525 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_stddev 37.8 ns 37.8 ns 4
Concat std::string and hex number and literal by StrExpr to std::string_cv 7.20 % 7.20 % 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_mean 189 ns 189 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_median 187 ns 187 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_stddev 10.4 ns 10.4 ns 4
Concat stringa and hex number and literal by StrExpr to simstr::stringa_cv 5.52 % 5.52 % 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_mean 198 ns 198 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_median 199 ns 199 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_stddev 3.52 ns 3.52 ns 4
Concat stringa and hex number and literal by e_concat to simstr::stringa_cv 1.77 % 1.77 % 4
Subst stringa and hex number by e_subst literal to simstr::stringa_mean 355 ns 355 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_median 355 ns 355 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_stddev 12.1 ns 12.1 ns 4
Subst stringa and hex number by e_subst literal to simstr::stringa_cv 3.42 % 3.42 % 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_mean 843 ns 843 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_median 846 ns 846 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_stddev 29.0 ns 29.0 ns 4
Subst stringa and hex number by e_vsubst stra to simstr::stringa_cv 3.44 % 3.44 % 4
---- format/vformat and subst/vsubst octal number to 32 symbols result ----/repeats:1 0.000 ns 0.000 ns 1000000000000
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_mean 414 ns 414 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_median 413 ns 413 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_stddev 13.6 ns 13.6 ns 4
"abcdefghihklmopqr "_ss + i / 0x8a010_fmt + " end"_cv 3.27 % 3.28 % 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_mean 621 ns 621 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_median 618 ns 618 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_stddev 17.1 ns 17.1 ns 4
e_subst("abcdefghihklmopqr {} end", i / 0x8a010_fmt)_cv 2.76 % 2.76 % 4
e_vsubst(pattern, i / 0x8a010_fmt)_mean 1426 ns 1426 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_median 1430 ns 1430 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_stddev 22.1 ns 22.1 ns 4
e_vsubst(pattern, i / 0x8a010_fmt)_cv 1.55 % 1.55 % 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_mean 2149 ns 2149 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_median 2134 ns 2134 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_stddev 53.2 ns 53.2 ns 4
fmt::format(FMT_COMPILE("abcdefghihklmopqr {:#010o} end"), i)_cv 2.48 % 2.48 % 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_mean 2879 ns 2879 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_median 2903 ns 2903 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_stddev 57.1 ns 57.1 ns 4
fmt::format("abcdefghihklmopqr {:#010o} end", i)_cv 1.98 % 1.98 % 4
std::format("abcdefghihklmopqr {:#010o} end", i)_mean 2940 ns 2940 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_median 2935 ns 2935 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_stddev 62.6 ns 62.6 ns 4
std::format("abcdefghihklmopqr {:#010o} end", i)_cv 2.13 % 2.13 % 4
std::vformat(pattern, std::make_format_args(i))_mean 2985 ns 2985 ns 4
std::vformat(pattern, std::make_format_args(i))_median 2971 ns 2971 ns 4
std::vformat(pattern, std::make_format_args(i))_stddev 58.0 ns 58.0 ns 4
std::vformat(pattern, std::make_format_args(i))_cv 1.94 % 1.94 % 4
std::format with std::formatted_size_mean 5263 ns 5263 ns 4
std::format with std::formatted_size_median 5234 ns 5234 ns 4
std::format with std::formatted_size_stddev 98.0 ns 98.0 ns 4
std::format with std::formatted_size_cv 1.86 % 1.86 % 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_mean 8433 ns 8433 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_median 8423 ns 8423 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_stddev 118 ns 118 ns 4
strm << "abcdefghihklmopqr 0" << std::oct << std::setw(9) << std::setfill('0') << i << " end"_cv 1.40 % 1.40 % 4
----- Concatenate string + "Literal" ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat std::string by std to std::string_mean 109 ns 109 ns 4
Concat std::string by std to std::string_median 109 ns 109 ns 4
Concat std::string by std to std::string_stddev 1.82 ns 1.82 ns 4
Concat std::string by std to std::string_cv 1.68 % 1.68 % 4
Concat std::string by StrExpr to std::string_mean 120 ns 120 ns 4
Concat std::string by StrExpr to std::string_median 120 ns 120 ns 4
Concat std::string by StrExpr to std::string_stddev 1.50 ns 1.50 ns 4
Concat std::string by StrExpr to std::string_cv 1.24 % 1.24 % 4
Concat stringa by StrExpr to stringa_mean 95.4 ns 95.4 ns 4
Concat stringa by StrExpr to stringa_median 95.0 ns 95.0 ns 4
Concat stringa by StrExpr to stringa_stddev 3.65 ns 3.65 ns 4
Concat stringa by StrExpr to stringa_cv 3.82 % 3.83 % 4
----- Find three concatenated string in string_view -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Find concat three std::string_mean 214 ns 214 ns 4
Find concat three std::string_median 210 ns 210 ns 4
Find concat three std::string_stddev 13.1 ns 13.1 ns 4
Find concat three std::string_cv 6.13 % 6.13 % 4
Find concat three strexpr_mean 100.0 ns 100.0 ns 4
Find concat three strexpr_median 100.0 ns 100.0 ns 4
Find concat three strexpr_stddev 1.10 ns 1.10 ns 4
Find concat three strexpr_cv 1.10 % 1.10 % 4
Find concat three simstr_mean 58.2 ns 58.2 ns 4
Find concat three simstr_median 58.1 ns 58.1 ns 4
Find concat three simstr_stddev 0.634 ns 0.635 ns 4
Find concat three simstr_cv 1.09 % 1.09 % 4
Find concat three stringzilla string_mean 268 ns 268 ns 4
Find concat three stringzilla string_median 268 ns 268 ns 4
Find concat three stringzilla string_stddev 1.90 ns 1.90 ns 4
Find concat three stringzilla string_cv 0.71 % 0.71 % 4
----- Build Type Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
BuildTypeNameStr 0/0_mean 20.9 ns 20.9 ns 4
BuildTypeNameStr 0/0_median 21.0 ns 21.0 ns 4
BuildTypeNameStr 0/0_stddev 0.189 ns 0.189 ns 4
BuildTypeNameStr 0/0_cv 0.90 % 0.90 % 4
BuildTypeNameExp 0/0_mean 23.1 ns 23.1 ns 4
BuildTypeNameExp 0/0_median 23.2 ns 23.2 ns 4
BuildTypeNameExp 0/0_stddev 0.711 ns 0.711 ns 4
BuildTypeNameExp 0/0_cv 3.09 % 3.09 % 4
BuildTypeNameSim 0/0_mean 20.4 ns 20.4 ns 4
BuildTypeNameSim 0/0_median 20.2 ns 20.2 ns 4
BuildTypeNameSim 0/0_stddev 0.751 ns 0.751 ns 4
BuildTypeNameSim 0/0_cv 3.67 % 3.67 % 4
BuildTypeNameStr 10/10_mean 365 ns 365 ns 4
BuildTypeNameStr 10/10_median 370 ns 370 ns 4
BuildTypeNameStr 10/10_stddev 13.3 ns 13.3 ns 4
BuildTypeNameStr 10/10_cv 3.65 % 3.65 % 4
BuildTypeNameExp 10/10_mean 116 ns 116 ns 4
BuildTypeNameExp 10/10_median 116 ns 116 ns 4
BuildTypeNameExp 10/10_stddev 7.06 ns 7.06 ns 4
BuildTypeNameExp 10/10_cv 6.10 % 6.10 % 4
BuildTypeNameSim 10/10_mean 69.0 ns 69.0 ns 4
BuildTypeNameSim 10/10_median 69.1 ns 69.2 ns 4
BuildTypeNameSim 10/10_stddev 1.79 ns 1.79 ns 4
BuildTypeNameSim 10/10_cv 2.59 % 2.59 % 4
----- Replace string by copy -----/repeats:1 0.000 ns 0.000 ns 1000000000000
Concat with replace str_mean 500 ns 500 ns 4
Concat with replace str_median 498 ns 498 ns 4
Concat with replace str_stddev 13.7 ns 13.7 ns 4
Concat with replace str_cv 2.74 % 2.74 % 4
Concat with replace exp_mean 235 ns 235 ns 4
Concat with replace exp_median 234 ns 234 ns 4
Concat with replace exp_stddev 2.95 ns 2.95 ns 4
Concat with replace exp_cv 1.25 % 1.26 % 4
----- Create Empty Str ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e;_mean 2.15 ns 2.15 ns 4
std::string e;_median 2.15 ns 2.15 ns 4
std::string e;_stddev 0.011 ns 0.011 ns 4
std::string e;_cv 0.49 % 0.49 % 4
std::string_view e;_mean 0.740 ns 0.740 ns 4
std::string_view e;_median 0.736 ns 0.736 ns 4
std::string_view e;_stddev 0.010 ns 0.010 ns 4
std::string_view e;_cv 1.30 % 1.30 % 4
ssa e;_mean 0.378 ns 0.378 ns 4
ssa e;_median 0.376 ns 0.376 ns 4
ssa e;_stddev 0.010 ns 0.010 ns 4
ssa e;_cv 2.62 % 2.62 % 4
stringa e;_mean 2.15 ns 2.15 ns 4
stringa e;_median 2.16 ns 2.16 ns 4
stringa e;_stddev 0.021 ns 0.021 ns 4
stringa e;_cv 0.99 % 0.99 % 4
lstringa<20> e;_mean 2.20 ns 2.20 ns 4
lstringa<20> e;_median 2.20 ns 2.20 ns 4
lstringa<20> e;_stddev 0.028 ns 0.028 ns 4
lstringa<20> e;_cv 1.27 % 1.27 % 4
lstringa<40> e;_mean 2.20 ns 2.20 ns 4
lstringa<40> e;_median 2.21 ns 2.21 ns 4
lstringa<40> e;_stddev 0.027 ns 0.027 ns 4
lstringa<40> e;_cv 1.21 % 1.21 % 4
----- Create Str from short literal (9 symbols) --------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "Test text";_mean 2.47 ns 2.47 ns 4
std::string e = "Test text";_median 2.47 ns 2.47 ns 4
std::string e = "Test text";_stddev 0.048 ns 0.048 ns 4
std::string e = "Test text";_cv 1.96 % 1.96 % 4
std::string_view e = "Test text";_mean 1.12 ns 1.12 ns 4
std::string_view e = "Test text";_median 1.12 ns 1.12 ns 4
std::string_view e = "Test text";_stddev 0.023 ns 0.023 ns 4
std::string_view e = "Test text";_cv 2.03 % 2.03 % 4
ssa e = "Test text";_mean 0.744 ns 0.744 ns 4
ssa e = "Test text";_median 0.732 ns 0.732 ns 4
ssa e = "Test text";_stddev 0.026 ns 0.026 ns 4
ssa e = "Test text";_cv 3.53 % 3.53 % 4
stringa e = "Test text";_mean 2.19 ns 2.19 ns 4
stringa e = "Test text";_median 2.19 ns 2.19 ns 4
stringa e = "Test text";_stddev 0.014 ns 0.014 ns 4
stringa e = "Test text";_cv 0.66 % 0.66 % 4
lstringa<20> e = "Test text";_mean 2.63 ns 2.63 ns 4
lstringa<20> e = "Test text";_median 2.64 ns 2.64 ns 4
lstringa<20> e = "Test text";_stddev 0.019 ns 0.019 ns 4
lstringa<20> e = "Test text";_cv 0.71 % 0.71 % 4
lstringa<40> e = "Test text";_mean 2.61 ns 2.61 ns 4
lstringa<40> e = "Test text";_median 2.61 ns 2.61 ns 4
lstringa<40> e = "Test text";_stddev 0.027 ns 0.027 ns 4
lstringa<40> e = "Test text";_cv 1.05 % 1.05 % 4
----- Create Str from long literal (30 symbols) ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890";_mean 21.8 ns 21.8 ns 4
std::string e = "123456789012345678901234567890";_median 21.9 ns 21.9 ns 4
std::string e = "123456789012345678901234567890";_stddev 0.330 ns 0.329 ns 4
std::string e = "123456789012345678901234567890";_cv 1.51 % 1.51 % 4
std::string_view e = "123456789012345678901234567890";_mean 1.10 ns 1.10 ns 4
std::string_view e = "123456789012345678901234567890";_median 1.10 ns 1.10 ns 4
std::string_view e = "123456789012345678901234567890";_stddev 0.010 ns 0.010 ns 4
std::string_view e = "123456789012345678901234567890";_cv 0.93 % 0.93 % 4
ssa e = "123456789012345678901234567890";_mean 0.741 ns 0.741 ns 4
ssa e = "123456789012345678901234567890";_median 0.739 ns 0.739 ns 4
ssa e = "123456789012345678901234567890";_stddev 0.007 ns 0.007 ns 4
ssa e = "123456789012345678901234567890";_cv 0.93 % 0.93 % 4
stringa e = "123456789012345678901234567890";_mean 2.22 ns 2.22 ns 4
stringa e = "123456789012345678901234567890";_median 2.21 ns 2.21 ns 4
stringa e = "123456789012345678901234567890";_stddev 0.039 ns 0.039 ns 4
stringa e = "123456789012345678901234567890";_cv 1.76 % 1.76 % 4
lstringa<20> e = "123456789012345678901234567890";_mean 22.0 ns 22.0 ns 4
lstringa<20> e = "123456789012345678901234567890";_median 21.9 ns 21.9 ns 4
lstringa<20> e = "123456789012345678901234567890";_stddev 0.303 ns 0.303 ns 4
lstringa<20> e = "123456789012345678901234567890";_cv 1.38 % 1.38 % 4
lstringa<40> e = "123456789012345678901234567890";_mean 2.98 ns 2.98 ns 4
lstringa<40> e = "123456789012345678901234567890";_median 2.97 ns 2.97 ns 4
lstringa<40> e = "123456789012345678901234567890";_stddev 0.042 ns 0.042 ns 4
lstringa<40> e = "123456789012345678901234567890";_cv 1.40 % 1.40 % 4
----- 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 3.72 ns 3.72 ns 4
std::string e = "Test text"; auto c{e};_median 3.70 ns 3.70 ns 4
std::string e = "Test text"; auto c{e};_stddev 0.073 ns 0.073 ns 4
std::string e = "Test text"; auto c{e};_cv 1.97 % 1.97 % 4
std::string_view e = "Test text"; auto c{e};_mean 1.10 ns 1.10 ns 4
std::string_view e = "Test text"; auto c{e};_median 1.10 ns 1.10 ns 4
std::string_view e = "Test text"; auto c{e};_stddev 0.016 ns 0.016 ns 4
std::string_view e = "Test text"; auto c{e};_cv 1.43 % 1.43 % 4
ssa e = "Test text"; auto c{e};_mean 1.11 ns 1.11 ns 4
ssa e = "Test text"; auto c{e};_median 1.11 ns 1.11 ns 4
ssa e = "Test text"; auto c{e};_stddev 0.016 ns 0.016 ns 4
ssa e = "Test text"; auto c{e};_cv 1.44 % 1.43 % 4
stringa e = "Test text"; auto c{e};_mean 2.53 ns 2.53 ns 4
stringa e = "Test text"; auto c{e};_median 2.53 ns 2.53 ns 4
stringa e = "Test text"; auto c{e};_stddev 0.004 ns 0.004 ns 4
stringa e = "Test text"; auto c{e};_cv 0.15 % 0.15 % 4
lstringa<20> e = "Test text"; auto c{e};_mean 4.17 ns 4.17 ns 4
lstringa<20> e = "Test text"; auto c{e};_median 4.17 ns 4.17 ns 4
lstringa<20> e = "Test text"; auto c{e};_stddev 0.031 ns 0.031 ns 4
lstringa<20> e = "Test text"; auto c{e};_cv 0.75 % 0.75 % 4
lstringa<40> e = "Test text"; auto c{e};_mean 4.49 ns 4.49 ns 4
lstringa<40> e = "Test text"; auto c{e};_median 4.49 ns 4.49 ns 4
lstringa<40> e = "Test text"; auto c{e};_stddev 0.079 ns 0.079 ns 4
lstringa<40> e = "Test text"; auto c{e};_cv 1.77 % 1.77 % 4
----- Create copy of Str with 30 symbols ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string e = "123456789012345678901234567890"; auto c{e};_mean 46.5 ns 46.5 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_median 45.8 ns 45.8 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_stddev 1.47 ns 1.47 ns 4
std::string e = "123456789012345678901234567890"; auto c{e};_cv 3.17 % 3.17 % 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_mean 1.11 ns 1.12 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_median 1.12 ns 1.12 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_stddev 0.019 ns 0.019 ns 4
std::string_view e = "123456789012345678901234567890"; auto c{e};_cv 1.69 % 1.69 % 4
ssa e = "123456789012345678901234567890"; auto c{e};_mean 0.750 ns 0.750 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_median 0.750 ns 0.750 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_stddev 0.009 ns 0.009 ns 4
ssa e = "123456789012345678901234567890"; auto c{e};_cv 1.22 % 1.22 % 4
stringa e = "123456789012345678901234567890"; auto c{e};_mean 2.21 ns 2.21 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_median 2.20 ns 2.20 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_stddev 0.033 ns 0.033 ns 4
stringa e = "123456789012345678901234567890"; auto c{e};_cv 1.48 % 1.48 % 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_mean 21.2 ns 21.2 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_median 21.2 ns 21.2 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_stddev 0.522 ns 0.522 ns 4
lstringa<20> e = "123456789012345678901234567890"; auto c{e};_cv 2.46 % 2.46 % 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_mean 15.8 ns 15.8 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_median 15.7 ns 15.7 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_stddev 0.213 ns 0.213 ns 4
lstringa<40> e = "123456789012345678901234567890"; auto c{e};_cv 1.35 % 1.35 % 4
----- Find 9 symbols text in end of 99 symbols text ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
sz::string::find;_mean 125 ns 125 ns 4
sz::string::find;_median 125 ns 125 ns 4
sz::string::find;_stddev 0.709 ns 0.709 ns 4
sz::string::find;_cv 0.57 % 0.57 % 4
std::string::find;_mean 40.8 ns 40.8 ns 4
std::string::find;_median 40.7 ns 40.7 ns 4
std::string::find;_stddev 0.562 ns 0.562 ns 4
std::string::find;_cv 1.38 % 1.38 % 4
std::string_view::find;_mean 41.2 ns 41.2 ns 4
std::string_view::find;_median 40.6 ns 40.6 ns 4
std::string_view::find;_stddev 1.36 ns 1.36 ns 4
std::string_view::find;_cv 3.31 % 3.31 % 4
ssa::find;_mean 40.6 ns 40.6 ns 4
ssa::find;_median 40.5 ns 40.5 ns 4
ssa::find;_stddev 0.597 ns 0.597 ns 4
ssa::find;_cv 1.47 % 1.47 % 4
stringa::find;_mean 41.2 ns 41.2 ns 4
stringa::find;_median 41.1 ns 41.1 ns 4
stringa::find;_stddev 0.538 ns 0.537 ns 4
stringa::find;_cv 1.30 % 1.30 % 4
lstringa<20>::find;_mean 39.8 ns 39.8 ns 4
lstringa<20>::find;_median 40.0 ns 40.0 ns 4
lstringa<20>::find;_stddev 0.572 ns 0.572 ns 4
lstringa<20>::find;_cv 1.44 % 1.44 % 4
lstringa<40>::find;_mean 39.7 ns 39.7 ns 4
lstringa<40>::find;_median 39.5 ns 39.5 ns 4
lstringa<40>::find;_stddev 0.736 ns 0.737 ns 4
lstringa<40>::find;_cv 1.86 % 1.86 % 4
------- 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 52.3 ns 52.3 ns 4
std::string copy{str_with_len_N};/15_median 52.7 ns 52.7 ns 4
std::string copy{str_with_len_N};/15_stddev 1.46 ns 1.46 ns 4
std::string copy{str_with_len_N};/15_cv 2.79 % 2.80 % 4
std::string copy{str_with_len_N};/16_mean 53.0 ns 53.0 ns 4
std::string copy{str_with_len_N};/16_median 52.9 ns 52.9 ns 4
std::string copy{str_with_len_N};/16_stddev 1.28 ns 1.28 ns 4
std::string copy{str_with_len_N};/16_cv 2.42 % 2.42 % 4
std::string copy{str_with_len_N};/23_mean 52.5 ns 52.5 ns 4
std::string copy{str_with_len_N};/23_median 53.0 ns 53.0 ns 4
std::string copy{str_with_len_N};/23_stddev 1.61 ns 1.61 ns 4
std::string copy{str_with_len_N};/23_cv 3.07 % 3.07 % 4
std::string copy{str_with_len_N};/24_mean 51.6 ns 51.6 ns 4
std::string copy{str_with_len_N};/24_median 51.8 ns 51.8 ns 4
std::string copy{str_with_len_N};/24_stddev 0.532 ns 0.531 ns 4
std::string copy{str_with_len_N};/24_cv 1.03 % 1.03 % 4
std::string copy{str_with_len_N};/32_mean 53.9 ns 53.9 ns 4
std::string copy{str_with_len_N};/32_median 54.1 ns 54.1 ns 4
std::string copy{str_with_len_N};/32_stddev 0.490 ns 0.490 ns 4
std::string copy{str_with_len_N};/32_cv 0.91 % 0.91 % 4
std::string copy{str_with_len_N};/64_mean 54.4 ns 54.4 ns 4
std::string copy{str_with_len_N};/64_median 54.4 ns 54.4 ns 4
std::string copy{str_with_len_N};/64_stddev 0.482 ns 0.482 ns 4
std::string copy{str_with_len_N};/64_cv 0.89 % 0.89 % 4
std::string copy{str_with_len_N};/128_mean 59.7 ns 59.7 ns 4
std::string copy{str_with_len_N};/128_median 56.7 ns 56.7 ns 4
std::string copy{str_with_len_N};/128_stddev 6.91 ns 6.91 ns 4
std::string copy{str_with_len_N};/128_cv 11.58 % 11.58 % 4
std::string copy{str_with_len_N};/256_mean 73.8 ns 73.8 ns 4
std::string copy{str_with_len_N};/256_median 74.3 ns 74.3 ns 4
std::string copy{str_with_len_N};/256_stddev 8.94 ns 8.94 ns 4
std::string copy{str_with_len_N};/256_cv 12.12 % 12.12 % 4
std::string copy{str_with_len_N};/512_mean 81.2 ns 81.2 ns 4
std::string copy{str_with_len_N};/512_median 82.6 ns 82.6 ns 4
std::string copy{str_with_len_N};/512_stddev 9.69 ns 9.69 ns 4
std::string copy{str_with_len_N};/512_cv 11.94 % 11.94 % 4
std::string copy{str_with_len_N};/1024_mean 93.3 ns 93.3 ns 4
std::string copy{str_with_len_N};/1024_median 93.4 ns 93.4 ns 4
std::string copy{str_with_len_N};/1024_stddev 1.97 ns 1.97 ns 4
std::string copy{str_with_len_N};/1024_cv 2.11 % 2.11 % 4
std::string copy{str_with_len_N};/2048_mean 109 ns 109 ns 4
std::string copy{str_with_len_N};/2048_median 110 ns 110 ns 4
std::string copy{str_with_len_N};/2048_stddev 2.09 ns 2.09 ns 4
std::string copy{str_with_len_N};/2048_cv 1.92 % 1.92 % 4
std::string copy{str_with_len_N};/4096_mean 165 ns 165 ns 4
std::string copy{str_with_len_N};/4096_median 165 ns 165 ns 4
std::string copy{str_with_len_N};/4096_stddev 2.73 ns 2.73 ns 4
std::string copy{str_with_len_N};/4096_cv 1.65 % 1.65 % 4
stringa copy{str_with_len_N};/15_mean 2.46 ns 2.46 ns 4
stringa copy{str_with_len_N};/15_median 2.45 ns 2.45 ns 4
stringa copy{str_with_len_N};/15_stddev 0.085 ns 0.085 ns 4
stringa copy{str_with_len_N};/15_cv 3.46 % 3.46 % 4
stringa copy{str_with_len_N};/16_mean 4.57 ns 4.57 ns 4
stringa copy{str_with_len_N};/16_median 4.57 ns 4.57 ns 4
stringa copy{str_with_len_N};/16_stddev 0.050 ns 0.050 ns 4
stringa copy{str_with_len_N};/16_cv 1.09 % 1.09 % 4
stringa copy{str_with_len_N};/23_mean 4.54 ns 4.54 ns 4
stringa copy{str_with_len_N};/23_median 4.55 ns 4.55 ns 4
stringa copy{str_with_len_N};/23_stddev 0.024 ns 0.024 ns 4
stringa copy{str_with_len_N};/23_cv 0.54 % 0.54 % 4
stringa copy{str_with_len_N};/24_mean 4.55 ns 4.55 ns 4
stringa copy{str_with_len_N};/24_median 4.55 ns 4.55 ns 4
stringa copy{str_with_len_N};/24_stddev 0.034 ns 0.034 ns 4
stringa copy{str_with_len_N};/24_cv 0.75 % 0.75 % 4
stringa copy{str_with_len_N};/32_mean 4.57 ns 4.57 ns 4
stringa copy{str_with_len_N};/32_median 4.57 ns 4.57 ns 4
stringa copy{str_with_len_N};/32_stddev 0.064 ns 0.064 ns 4
stringa copy{str_with_len_N};/32_cv 1.41 % 1.41 % 4
stringa copy{str_with_len_N};/64_mean 4.56 ns 4.56 ns 4
stringa copy{str_with_len_N};/64_median 4.55 ns 4.55 ns 4
stringa copy{str_with_len_N};/64_stddev 0.059 ns 0.059 ns 4
stringa copy{str_with_len_N};/64_cv 1.29 % 1.29 % 4
stringa copy{str_with_len_N};/128_mean 4.55 ns 4.55 ns 4
stringa copy{str_with_len_N};/128_median 4.55 ns 4.55 ns 4
stringa copy{str_with_len_N};/128_stddev 0.060 ns 0.060 ns 4
stringa copy{str_with_len_N};/128_cv 1.32 % 1.32 % 4
stringa copy{str_with_len_N};/256_mean 4.57 ns 4.57 ns 4
stringa copy{str_with_len_N};/256_median 4.56 ns 4.56 ns 4
stringa copy{str_with_len_N};/256_stddev 0.043 ns 0.043 ns 4
stringa copy{str_with_len_N};/256_cv 0.95 % 0.95 % 4
stringa copy{str_with_len_N};/512_mean 4.60 ns 4.60 ns 4
stringa copy{str_with_len_N};/512_median 4.58 ns 4.58 ns 4
stringa copy{str_with_len_N};/512_stddev 0.051 ns 0.051 ns 4
stringa copy{str_with_len_N};/512_cv 1.10 % 1.10 % 4
stringa copy{str_with_len_N};/1024_mean 4.57 ns 4.57 ns 4
stringa copy{str_with_len_N};/1024_median 4.56 ns 4.56 ns 4
stringa copy{str_with_len_N};/1024_stddev 0.052 ns 0.052 ns 4
stringa copy{str_with_len_N};/1024_cv 1.14 % 1.14 % 4
stringa copy{str_with_len_N};/2048_mean 4.56 ns 4.56 ns 4
stringa copy{str_with_len_N};/2048_median 4.57 ns 4.57 ns 4
stringa copy{str_with_len_N};/2048_stddev 0.045 ns 0.045 ns 4
stringa copy{str_with_len_N};/2048_cv 0.98 % 0.98 % 4
stringa copy{str_with_len_N};/4096_mean 4.57 ns 4.57 ns 4
stringa copy{str_with_len_N};/4096_median 4.59 ns 4.59 ns 4
stringa copy{str_with_len_N};/4096_stddev 0.055 ns 0.055 ns 4
stringa copy{str_with_len_N};/4096_cv 1.20 % 1.20 % 4
lstringa<16> copy{str_with_len_N};/15_mean 4.14 ns 4.14 ns 4
lstringa<16> copy{str_with_len_N};/15_median 4.12 ns 4.12 ns 4
lstringa<16> copy{str_with_len_N};/15_stddev 0.074 ns 0.074 ns 4
lstringa<16> copy{str_with_len_N};/15_cv 1.78 % 1.78 % 4
lstringa<16> copy{str_with_len_N};/16_mean 16.9 ns 16.9 ns 4
lstringa<16> copy{str_with_len_N};/16_median 16.5 ns 16.5 ns 4
lstringa<16> copy{str_with_len_N};/16_stddev 0.839 ns 0.839 ns 4
lstringa<16> copy{str_with_len_N};/16_cv 4.97 % 4.97 % 4
lstringa<16> copy{str_with_len_N};/23_mean 36.0 ns 36.0 ns 4
lstringa<16> copy{str_with_len_N};/23_median 36.0 ns 36.0 ns 4
lstringa<16> copy{str_with_len_N};/23_stddev 0.556 ns 0.556 ns 4
lstringa<16> copy{str_with_len_N};/23_cv 1.55 % 1.55 % 4
lstringa<16> copy{str_with_len_N};/24_mean 37.0 ns 37.0 ns 4
lstringa<16> copy{str_with_len_N};/24_median 37.0 ns 37.0 ns 4
lstringa<16> copy{str_with_len_N};/24_stddev 0.240 ns 0.240 ns 4
lstringa<16> copy{str_with_len_N};/24_cv 0.65 % 0.65 % 4
lstringa<16> copy{str_with_len_N};/32_mean 38.0 ns 38.0 ns 4
lstringa<16> copy{str_with_len_N};/32_median 37.8 ns 37.8 ns 4
lstringa<16> copy{str_with_len_N};/32_stddev 0.985 ns 0.985 ns 4
lstringa<16> copy{str_with_len_N};/32_cv 2.60 % 2.60 % 4
lstringa<16> copy{str_with_len_N};/64_mean 38.3 ns 38.3 ns 4
lstringa<16> copy{str_with_len_N};/64_median 38.3 ns 38.3 ns 4
lstringa<16> copy{str_with_len_N};/64_stddev 0.332 ns 0.332 ns 4
lstringa<16> copy{str_with_len_N};/64_cv 0.87 % 0.87 % 4
lstringa<16> copy{str_with_len_N};/128_mean 38.8 ns 38.8 ns 4
lstringa<16> copy{str_with_len_N};/128_median 38.4 ns 38.4 ns 4
lstringa<16> copy{str_with_len_N};/128_stddev 0.889 ns 0.889 ns 4
lstringa<16> copy{str_with_len_N};/128_cv 2.29 % 2.29 % 4
lstringa<16> copy{str_with_len_N};/256_mean 62.4 ns 62.4 ns 4
lstringa<16> copy{str_with_len_N};/256_median 66.7 ns 66.7 ns 4
lstringa<16> copy{str_with_len_N};/256_stddev 10.1 ns 10.1 ns 4
lstringa<16> copy{str_with_len_N};/256_cv 16.21 % 16.21 % 4
lstringa<16> copy{str_with_len_N};/512_mean 66.7 ns 66.7 ns 4
lstringa<16> copy{str_with_len_N};/512_median 69.9 ns 69.9 ns 4
lstringa<16> copy{str_with_len_N};/512_stddev 11.9 ns 11.9 ns 4
lstringa<16> copy{str_with_len_N};/512_cv 17.82 % 17.82 % 4
lstringa<16> copy{str_with_len_N};/1024_mean 78.8 ns 78.8 ns 4
lstringa<16> copy{str_with_len_N};/1024_median 78.5 ns 78.5 ns 4
lstringa<16> copy{str_with_len_N};/1024_stddev 3.36 ns 3.36 ns 4
lstringa<16> copy{str_with_len_N};/1024_cv 4.27 % 4.27 % 4
lstringa<16> copy{str_with_len_N};/2048_mean 94.8 ns 94.8 ns 4
lstringa<16> copy{str_with_len_N};/2048_median 94.8 ns 94.8 ns 4
lstringa<16> copy{str_with_len_N};/2048_stddev 0.570 ns 0.570 ns 4
lstringa<16> copy{str_with_len_N};/2048_cv 0.60 % 0.60 % 4
lstringa<16> copy{str_with_len_N};/4096_mean 146 ns 146 ns 4
lstringa<16> copy{str_with_len_N};/4096_median 146 ns 146 ns 4
lstringa<16> copy{str_with_len_N};/4096_stddev 2.30 ns 2.30 ns 4
lstringa<16> copy{str_with_len_N};/4096_cv 1.57 % 1.57 % 4
lstringa<512> copy{str_with_len_N};/15_mean 4.06 ns 4.06 ns 4
lstringa<512> copy{str_with_len_N};/15_median 4.06 ns 4.06 ns 4
lstringa<512> copy{str_with_len_N};/15_stddev 0.038 ns 0.038 ns 4
lstringa<512> copy{str_with_len_N};/15_cv 0.94 % 0.94 % 4
lstringa<512> copy{str_with_len_N};/16_mean 15.1 ns 15.1 ns 4
lstringa<512> copy{str_with_len_N};/16_median 15.1 ns 15.1 ns 4
lstringa<512> copy{str_with_len_N};/16_stddev 0.210 ns 0.210 ns 4
lstringa<512> copy{str_with_len_N};/16_cv 1.40 % 1.40 % 4
lstringa<512> copy{str_with_len_N};/23_mean 15.1 ns 15.1 ns 4
lstringa<512> copy{str_with_len_N};/23_median 15.2 ns 15.2 ns 4
lstringa<512> copy{str_with_len_N};/23_stddev 0.322 ns 0.322 ns 4
lstringa<512> copy{str_with_len_N};/23_cv 2.13 % 2.13 % 4
lstringa<512> copy{str_with_len_N};/24_mean 15.2 ns 15.2 ns 4
lstringa<512> copy{str_with_len_N};/24_median 15.2 ns 15.2 ns 4
lstringa<512> copy{str_with_len_N};/24_stddev 0.357 ns 0.357 ns 4
lstringa<512> copy{str_with_len_N};/24_cv 2.34 % 2.34 % 4
lstringa<512> copy{str_with_len_N};/32_mean 16.9 ns 16.9 ns 4
lstringa<512> copy{str_with_len_N};/32_median 17.0 ns 17.0 ns 4
lstringa<512> copy{str_with_len_N};/32_stddev 0.320 ns 0.320 ns 4
lstringa<512> copy{str_with_len_N};/32_cv 1.90 % 1.90 % 4
lstringa<512> copy{str_with_len_N};/64_mean 17.9 ns 17.9 ns 4
lstringa<512> copy{str_with_len_N};/64_median 18.1 ns 18.1 ns 4
lstringa<512> copy{str_with_len_N};/64_stddev 0.618 ns 0.618 ns 4
lstringa<512> copy{str_with_len_N};/64_cv 3.46 % 3.46 % 4
lstringa<512> copy{str_with_len_N};/128_mean 18.2 ns 18.2 ns 4
lstringa<512> copy{str_with_len_N};/128_median 18.2 ns 18.2 ns 4
lstringa<512> copy{str_with_len_N};/128_stddev 0.466 ns 0.466 ns 4
lstringa<512> copy{str_with_len_N};/128_cv 2.56 % 2.56 % 4
lstringa<512> copy{str_with_len_N};/256_mean 20.8 ns 20.8 ns 4
lstringa<512> copy{str_with_len_N};/256_median 21.0 ns 21.0 ns 4
lstringa<512> copy{str_with_len_N};/256_stddev 0.540 ns 0.540 ns 4
lstringa<512> copy{str_with_len_N};/256_cv 2.59 % 2.59 % 4
lstringa<512> copy{str_with_len_N};/512_mean 24.0 ns 24.0 ns 4
lstringa<512> copy{str_with_len_N};/512_median 24.0 ns 24.0 ns 4
lstringa<512> copy{str_with_len_N};/512_stddev 0.374 ns 0.374 ns 4
lstringa<512> copy{str_with_len_N};/512_cv 1.56 % 1.56 % 4
lstringa<512> copy{str_with_len_N};/1024_mean 78.6 ns 78.6 ns 4
lstringa<512> copy{str_with_len_N};/1024_median 77.5 ns 77.5 ns 4
lstringa<512> copy{str_with_len_N};/1024_stddev 2.75 ns 2.75 ns 4
lstringa<512> copy{str_with_len_N};/1024_cv 3.49 % 3.49 % 4
lstringa<512> copy{str_with_len_N};/2048_mean 95.8 ns 95.8 ns 4
lstringa<512> copy{str_with_len_N};/2048_median 95.7 ns 95.7 ns 4
lstringa<512> copy{str_with_len_N};/2048_stddev 2.32 ns 2.32 ns 4
lstringa<512> copy{str_with_len_N};/2048_cv 2.42 % 2.42 % 4
lstringa<512> copy{str_with_len_N};/4096_mean 146 ns 146 ns 4
lstringa<512> copy{str_with_len_N};/4096_median 146 ns 146 ns 4
lstringa<512> copy{str_with_len_N};/4096_stddev 1.96 ns 1.96 ns 4
lstringa<512> copy{str_with_len_N};/4096_cv 1.34 % 1.34 % 4
----- 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 91.7 ns 91.7 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_median 91.5 ns 91.5 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_stddev 1.23 ns 1.23 ns 4
std::string s = "123456789"; int res = std::strtol(s.c_str(), 0, 10);_cv 1.34 % 1.34 % 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_mean 0.739 ns 0.739 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_median 0.740 ns 0.740 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_stddev 0.006 ns 0.006 ns 4
std::string_view s = "123456789"; std::from_chars(s.data(), s.data() + s.size(), res, 10);_cv 0.86 % 0.86 % 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 20.4 ns 20.4 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 20.4 ns 20.4 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.133 ns 0.133 ns 4
stringa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 0.65 % 0.65 % 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 16.2 ns 16.2 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_median 16.2 ns 16.2 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.183 ns 0.183 ns 4
ssa s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 1.13 % 1.13 % 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_mean 16.1 ns 16.1 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_median 16.1 ns 16.1 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_stddev 0.297 ns 0.297 ns 4
lstringa<20> s = "123456789"; int res = s.to_int<int, true, 10, false>_cv 1.84 % 1.84 % 4
----- 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 67.2 ns 67.2 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_median 67.2 ns 67.2 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_stddev 0.233 ns 0.233 ns 4
std::string s = "abcDef"; int res = std::strtol(s.c_str(), 0, 16);_cv 0.35 % 0.35 % 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_mean 18.3 ns 18.3 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_median 18.3 ns 18.3 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_stddev 0.264 ns 0.263 ns 4
std::string_view s = "abcDef"; std::from_chars(s.data(), s.data() + s.size(), res, 16);_cv 1.44 % 1.44 % 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 17.2 ns 17.2 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 17.3 ns 17.3 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.309 ns 0.309 ns 4
stringa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.79 % 1.79 % 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 16.7 ns 16.7 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 16.6 ns 16.6 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.184 ns 0.184 ns 4
ssa s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 1.10 % 1.10 % 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_mean 16.1 ns 16.1 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_median 16.0 ns 16.0 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_stddev 0.330 ns 0.330 ns 4
lstringa<20> s = "abcDef"; int res = s.to_int<int, true, 16, false>_cv 2.04 % 2.04 % 4
----- 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 97.3 ns 97.3 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_median 97.6 ns 97.6 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_stddev 1.28 ns 1.28 ns 4
std::string s = " 123456789"; int res = std::strtol(s.c_str(), 0, 0);_cv 1.32 % 1.32 % 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_mean 13.7 ns 13.7 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_median 13.7 ns 13.7 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_stddev 0.061 ns 0.061 ns 4
stringa s = " 123456789"; int res = s.to_int<int>; // Check overflow_cv 0.44 % 0.44 % 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_mean 15.0 ns 15.0 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_median 15.0 ns 15.0 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_stddev 0.408 ns 0.407 ns 4
ssa s = " 123456789"; int res = s.to_int<int, false>; // No check overflow_cv 2.71 % 2.71 % 4
----- 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 298 ns 298 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_median 297 ns 297 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_stddev 4.44 ns 4.45 ns 4
std::string s = "1234.567e10"; double res = std::strtod(s.c_str(), nullptr);_cv 1.49 % 1.49 % 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_mean 108 ns 108 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_median 108 ns 108 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_stddev 1.57 ns 1.57 ns 4
std::string_view s = "1234.567e10"; std::from_chars(s.data(), s.data() + s.size(), res);_cv 1.45 % 1.45 % 4
ssa s = "1234.567e10"; double res = *s.to_double()_mean 42.2 ns 42.2 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_median 42.3 ns 42.3 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_stddev 0.399 ns 0.399 ns 4
ssa s = "1234.567e10"; double res = *s.to_double()_cv 0.95 % 0.95 % 4
-- 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 6499 ns 6499 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_median 6469 ns 6469 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_stddev 189 ns 189 ns 4
std::stringstream str; ... str << "abbaabbaabbaabba";_cv 2.90 % 2.90 % 4
std::string str; ... str += "abbaabbaabbaabba";_mean 815 ns 815 ns 4
std::string str; ... str += "abbaabbaabbaabba";_median 820 ns 820 ns 4
std::string str; ... str += "abbaabbaabbaabba";_stddev 20.2 ns 20.2 ns 4
std::string str; ... str += "abbaabbaabbaabba";_cv 2.48 % 2.48 % 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_mean 794 ns 794 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_median 793 ns 793 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_stddev 94.1 ns 94.1 ns 4
lstringa<8> str; ... str += "abbaabbaabbaabba";_cv 11.84 % 11.84 % 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_mean 620 ns 620 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_median 615 ns 615 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_stddev 22.6 ns 22.6 ns 4
lstringa<128> str; ... str += "abbaabbaabbaabba";_cv 3.65 % 3.65 % 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_mean 401 ns 401 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_median 405 ns 405 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_stddev 14.1 ns 14.1 ns 4
lstringa<512> str; ... str += "abbaabbaabbaabba";_cv 3.52 % 3.52 % 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_mean 335 ns 335 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_median 335 ns 335 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_stddev 4.51 ns 4.52 ns 4
lstringa<1024> str; ... str += "abbaabbaabbaabba";_cv 1.35 % 1.35 % 4
-- 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 7163 ns 7163 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_median 7211 ns 7211 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_stddev 153 ns 153 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba";_cv 2.14 % 2.14 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_mean 2186 ns 2186 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_median 2185 ns 2185 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_stddev 40.6 ns 40.6 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba";_cv 1.86 % 1.86 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_mean 890 ns 890 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_median 892 ns 892 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_stddev 31.5 ns 31.5 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba";_cv 3.54 % 3.54 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_mean 864 ns 864 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_median 843 ns 843 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_stddev 72.7 ns 72.7 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba";_cv 8.42 % 8.42 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_mean 722 ns 722 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_median 723 ns 723 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_stddev 6.78 ns 6.79 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba";_cv 0.94 % 0.94 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_mean 639 ns 639 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_median 637 ns 637 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_stddev 18.2 ns 18.3 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba";_cv 2.85 % 2.86 % 4
-- 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 348509 ns 348511 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_median 346178 ns 346180 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_stddev 6563 ns 6565 ns 4
std::stringstream str; ... str << str_var << "abbaabbaabbaabba"; 2048 times_cv 1.88 % 1.88 % 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 120123 ns 120124 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 119443 ns 119443 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 2307 ns 2307 ns 4
std::string str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.92 % 1.92 % 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 44146 ns 44146 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 44022 ns 44023 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 746 ns 746 ns 4
lstringa<8> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.69 % 1.69 % 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 44572 ns 44572 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 44629 ns 44629 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 793 ns 793 ns 4
lstringa<128> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.78 % 1.78 % 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 44298 ns 44298 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 44441 ns 44441 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 777 ns 777 ns 4
lstringa<512> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.75 % 1.75 % 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_mean 44327 ns 44327 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_median 44235 ns 44235 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_stddev 660 ns 660 ns 4
lstringa<1024> str; ... str += str_var + "abbaabbaabbaabba"; 2048 times_cv 1.49 % 1.49 % 4
-- 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 7317 ns 7317 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_median 7276 ns 7276 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_stddev 187 ns 187 ns 4
std::stringstream str; ... str << str_var1 << str_var2;_cv 2.55 % 2.55 % 4
std::string str; ... str += str_var1 + str_var2;_mean 2607 ns 2607 ns 4
std::string str; ... str += str_var1 + str_var2;_median 2588 ns 2588 ns 4
std::string str; ... str += str_var1 + str_var2;_stddev 76.9 ns 77.0 ns 4
std::string str; ... str += str_var1 + str_var2;_cv 2.95 % 2.95 % 4
lstringa<16> str; ... str += str_var1 + str_var2;_mean 1132 ns 1132 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_median 1125 ns 1125 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_stddev 24.3 ns 24.3 ns 4
lstringa<16> str; ... str += str_var1 + str_var2;_cv 2.15 % 2.15 % 4
lstringa<128> str; ... str += str_var1 + str_var2;_mean 1062 ns 1062 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_median 1062 ns 1062 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_stddev 10.9 ns 10.9 ns 4
lstringa<128> str; ... str += str_var1 + str_var2;_cv 1.03 % 1.03 % 4
lstringa<512> str; ... str += str_var1 + str_var2;_mean 914 ns 914 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_median 917 ns 917 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_stddev 16.5 ns 16.5 ns 4
lstringa<512> str; ... str += str_var1 + str_var2;_cv 1.81 % 1.81 % 4
lstringa<1024> str; ... str += str_var1 + str_var2;_mean 829 ns 829 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_median 829 ns 829 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_stddev 14.6 ns 14.6 ns 4
lstringa<1024> str; ... str += str_var1 + str_var2;_cv 1.76 % 1.76 % 4
-- Append text, number, text --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::stringstream str; str << "test = " << k << " times";_mean 11412 ns 11412 ns 4
std::stringstream str; str << "test = " << k << " times";_median 11465 ns 11465 ns 4
std::stringstream str; str << "test = " << k << " times";_stddev 153 ns 153 ns 4
std::stringstream str; str << "test = " << k << " times";_cv 1.34 % 1.34 % 4
std::string str = "test = " + std::to_string(k) + " times";_mean 1772 ns 1772 ns 4
std::string str = "test = " + std::to_string(k) + " times";_median 1755 ns 1755 ns 4
std::string str = "test = " + std::to_string(k) + " times";_stddev 99.1 ns 99.1 ns 4
std::string str = "test = " + std::to_string(k) + " times";_cv 5.59 % 5.59 % 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_mean 5285 ns 5285 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_median 5294 ns 5294 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_stddev 36.6 ns 36.6 ns 4
char buf[100]; sprintf(buf, "test = %u times", k); std::string str = buf;_cv 0.69 % 0.69 % 4
std::string str = std::format("test = {} times", k);_mean 2834 ns 2834 ns 4
std::string str = std::format("test = {} times", k);_median 2832 ns 2832 ns 4
std::string str = std::format("test = {} times", k);_stddev 37.0 ns 37.0 ns 4
std::string str = std::format("test = {} times", k);_cv 1.30 % 1.30 % 4
lstringa<8> str; str.format("test = {} times", k);_mean 4681 ns 4681 ns 4
lstringa<8> str; str.format("test = {} times", k);_median 4678 ns 4678 ns 4
lstringa<8> str; str.format("test = {} times", k);_stddev 65.6 ns 65.6 ns 4
lstringa<8> str; str.format("test = {} times", k);_cv 1.40 % 1.40 % 4
lstringa<32> str; str.format("test = {} times", k);_mean 4054 ns 4054 ns 4
lstringa<32> str; str.format("test = {} times", k);_median 4047 ns 4047 ns 4
lstringa<32> str; str.format("test = {} times", k);_stddev 105 ns 105 ns 4
lstringa<32> str; str.format("test = {} times", k);_cv 2.59 % 2.59 % 4
lstringa<8> str = "test = " + k + " times";_mean 555 ns 555 ns 4
lstringa<8> str = "test = " + k + " times";_median 546 ns 546 ns 4
lstringa<8> str = "test = " + k + " times";_stddev 29.0 ns 29.0 ns 4
lstringa<8> str = "test = " + k + " times";_cv 5.22 % 5.22 % 4
lstringa<32> str = "test = " + k + " times";_mean 339 ns 339 ns 4
lstringa<32> str = "test = " + k + " times";_median 341 ns 341 ns 4
lstringa<32> str = "test = " + k + " times";_stddev 10.3 ns 10.3 ns 4
lstringa<32> str = "test = " + k + " times";_cv 3.03 % 3.03 % 4
stringa str = "test = " + k + " times";_mean 511 ns 511 ns 4
stringa str = "test = " + k + " times";_median 512 ns 512 ns 4
stringa str = "test = " + k + " times";_stddev 30.8 ns 30.8 ns 4
stringa str = "test = " + k + " times";_cv 6.01 % 6.01 % 4
-- Split text and convert to int --/repeats:1 0.000 ns 0.000 ns 1000000000000
std::string::find + substr + std::strtol_mean 660 ns 660 ns 4
std::string::find + substr + std::strtol_median 660 ns 660 ns 4
std::string::find + substr + std::strtol_stddev 10.3 ns 10.3 ns 4
std::string::find + substr + std::strtol_cv 1.56 % 1.56 % 4
ssa::splitter + ssa::as_int_mean 245 ns 245 ns 4
ssa::splitter + ssa::as_int_median 244 ns 244 ns 4
ssa::splitter + ssa::as_int_stddev 3.30 ns 3.30 ns 4
ssa::splitter + ssa::as_int_cv 1.35 % 1.35 % 4
ssa::splitf + functor_mean 271 ns 271 ns 4
ssa::splitf + functor_median 268 ns 268 ns 4
ssa::splitf + functor_stddev 7.54 ns 7.54 ns 4
ssa::splitf + functor_cv 2.78 % 2.78 % 4
-- 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 2872 ns 2872 ns 4
Naive (and wrong) replace symbols with std::string find + replace_median 2855 ns 2855 ns 4
Naive (and wrong) replace symbols with std::string find + replace_stddev 93.5 ns 93.5 ns 4
Naive (and wrong) replace symbols with std::string find + replace_cv 3.25 % 3.26 % 4
replace symbols with std::string find_first_of + replace_mean 5223 ns 5223 ns 4
replace symbols with std::string find_first_of + replace_median 5241 ns 5241 ns 4
replace symbols with std::string find_first_of + replace_stddev 157 ns 157 ns 4
replace symbols with std::string find_first_of + replace_cv 3.01 % 3.01 % 4
replace symbols with std::string_view find_first_of + copy_mean 2704 ns 2704 ns 4
replace symbols with std::string_view find_first_of + copy_median 2721 ns 2721 ns 4
replace symbols with std::string_view find_first_of + copy_stddev 96.7 ns 96.7 ns 4
replace symbols with std::string_view find_first_of + copy_cv 3.58 % 3.57 % 4
replace runtime symbols with string expressions and without remembering all search results_mean 2675 ns 2675 ns 4
replace runtime symbols with string expressions and without remembering all search results_median 2681 ns 2681 ns 4
replace runtime symbols with string expressions and without remembering all search results_stddev 59.7 ns 59.7 ns 4
replace runtime symbols with string expressions and without remembering all search results_cv 2.23 % 2.23 % 4
replace runtime symbols with simstr and memorization of all search results_mean 2107 ns 2107 ns 4
replace runtime symbols with simstr and memorization of all search results_median 2118 ns 2118 ns 4
replace runtime symbols with simstr and memorization of all search results_stddev 57.8 ns 57.8 ns 4
replace runtime symbols with simstr and memorization of all search results_cv 2.74 % 2.74 % 4
replace const symbols with string expressions and without remembering all search results_mean 2227 ns 2227 ns 4
replace const symbols with string expressions and without remembering all search results_median 2210 ns 2210 ns 4
replace const symbols with string expressions and without remembering all search results_stddev 56.1 ns 56.1 ns 4
replace const symbols with string expressions and without remembering all search results_cv 2.52 % 2.52 % 4
replace const symbols with string expressions and memorization of all search results_mean 1872 ns 1872 ns 4
replace const symbols with string expressions and memorization of all search results_median 1874 ns 1874 ns 4
replace const symbols with string expressions and memorization of all search results_stddev 23.9 ns 23.9 ns 4
replace const symbols with string expressions and memorization of all search results_cv 1.27 % 1.27 % 4
-- 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 472 ns 472 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_median 472 ns 472 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_stddev 8.01 ns 8.00 ns 4
Short Naive (and wrong) replace symbols with std::string find + replace_cv 1.70 % 1.70 % 4
Short replace symbols with std::string find_first_of + replace_mean 718 ns 718 ns 4
Short replace symbols with std::string find_first_of + replace_median 717 ns 717 ns 4
Short replace symbols with std::string find_first_of + replace_stddev 18.4 ns 18.4 ns 4
Short replace symbols with std::string find_first_of + replace_cv 2.57 % 2.57 % 4
Short replace symbols with std::string_view find_first_of + copy_mean 433 ns 433 ns 4
Short replace symbols with std::string_view find_first_of + copy_median 438 ns 438 ns 4
Short replace symbols with std::string_view find_first_of + copy_stddev 15.1 ns 15.1 ns 4
Short replace symbols with std::string_view find_first_of + copy_cv 3.49 % 3.49 % 4
Short replace runtime symbols with string expressions and without remembering all search results_mean 378 ns 378 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_median 374 ns 374 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_stddev 11.6 ns 11.6 ns 4
Short replace runtime symbols with string expressions and without remembering all search results_cv 3.07 % 3.07 % 4
Short replace runtime symbols with simstr and memorization of all search results_mean 391 ns 391 ns 4
Short replace runtime symbols with simstr and memorization of all search results_median 389 ns 389 ns 4
Short replace runtime symbols with simstr and memorization of all search results_stddev 8.66 ns 8.66 ns 4
Short replace runtime symbols with simstr and memorization of all search results_cv 2.22 % 2.22 % 4
Short replace const symbols with string expressions and without remembering all search results_mean 271 ns 271 ns 4
Short replace const symbols with string expressions and without remembering all search results_median 274 ns 274 ns 4
Short replace const symbols with string expressions and without remembering all search results_stddev 10.6 ns 10.6 ns 4
Short replace const symbols with string expressions and without remembering all search results_cv 3.91 % 3.91 % 4
Short replace const symbols with string expressions and memorization of all search results_mean 294 ns 294 ns 4
Short replace const symbols with string expressions and memorization of all search results_median 296 ns 296 ns 4
Short replace const symbols with string expressions and memorization of all search results_stddev 6.16 ns 6.16 ns 4
Short replace const symbols with string expressions and memorization of all search results_cv 2.09 % 2.09 % 4
----- Replace All Str To Longer Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to ---- in std::string|64_mean 363 ns 363 ns 4
replace bb to ---- in std::string|64_median 363 ns 363 ns 4
replace bb to ---- in std::string|64_stddev 17.7 ns 17.7 ns 4
replace bb to ---- in std::string|64_cv 4.89 % 4.89 % 4
replace bb to ---- in std::string|256_mean 1189 ns 1189 ns 4
replace bb to ---- in std::string|256_median 1176 ns 1176 ns 4
replace bb to ---- in std::string|256_stddev 42.3 ns 42.3 ns 4
replace bb to ---- in std::string|256_cv 3.56 % 3.56 % 4
replace bb to ---- in std::string|512_mean 2210 ns 2210 ns 4
replace bb to ---- in std::string|512_median 2215 ns 2215 ns 4
replace bb to ---- in std::string|512_stddev 90.9 ns 90.9 ns 4
replace bb to ---- in std::string|512_cv 4.12 % 4.12 % 4
replace bb to ---- in std::string|1024_mean 4756 ns 4756 ns 4
replace bb to ---- in std::string|1024_median 4774 ns 4774 ns 4
replace bb to ---- in std::string|1024_stddev 235 ns 235 ns 4
replace bb to ---- in std::string|1024_cv 4.94 % 4.94 % 4
replace bb to ---- in std::string|2048_mean 11109 ns 11109 ns 4
replace bb to ---- in std::string|2048_median 11132 ns 11132 ns 4
replace bb to ---- in std::string|2048_stddev 260 ns 260 ns 4
replace bb to ---- in std::string|2048_cv 2.34 % 2.34 % 4
replace bb to ---- in lstringa<8>|64_mean 292 ns 292 ns 4
replace bb to ---- in lstringa<8>|64_median 292 ns 292 ns 4
replace bb to ---- in lstringa<8>|64_stddev 13.1 ns 13.1 ns 4
replace bb to ---- in lstringa<8>|64_cv 4.49 % 4.49 % 4
replace bb to ---- in lstringa<8>|256_mean 913 ns 913 ns 4
replace bb to ---- in lstringa<8>|256_median 918 ns 918 ns 4
replace bb to ---- in lstringa<8>|256_stddev 27.9 ns 27.9 ns 4
replace bb to ---- in lstringa<8>|256_cv 3.06 % 3.06 % 4
replace bb to ---- in lstringa<8>|512_mean 1685 ns 1685 ns 4
replace bb to ---- in lstringa<8>|512_median 1682 ns 1682 ns 4
replace bb to ---- in lstringa<8>|512_stddev 31.6 ns 31.6 ns 4
replace bb to ---- in lstringa<8>|512_cv 1.88 % 1.88 % 4
replace bb to ---- in lstringa<8>|1024_mean 3100 ns 3100 ns 4
replace bb to ---- in lstringa<8>|1024_median 3052 ns 3052 ns 4
replace bb to ---- in lstringa<8>|1024_stddev 117 ns 117 ns 4
replace bb to ---- in lstringa<8>|1024_cv 3.77 % 3.77 % 4
replace bb to ---- in lstringa<8>|2048_mean 6119 ns 6119 ns 4
replace bb to ---- in lstringa<8>|2048_median 6220 ns 6220 ns 4
replace bb to ---- in lstringa<8>|2048_stddev 316 ns 316 ns 4
replace bb to ---- in lstringa<8>|2048_cv 5.16 % 5.16 % 4
replace bb to ---- by init stringa|64_mean 187 ns 187 ns 4
replace bb to ---- by init stringa|64_median 184 ns 184 ns 4
replace bb to ---- by init stringa|64_stddev 13.2 ns 13.2 ns 4
replace bb to ---- by init stringa|64_cv 7.05 % 7.05 % 4
replace bb to ---- by init stringa|256_mean 580 ns 580 ns 4
replace bb to ---- by init stringa|256_median 591 ns 591 ns 4
replace bb to ---- by init stringa|256_stddev 28.6 ns 28.6 ns 4
replace bb to ---- by init stringa|256_cv 4.94 % 4.94 % 4
replace bb to ---- by init stringa|512_mean 1341 ns 1341 ns 4
replace bb to ---- by init stringa|512_median 1340 ns 1340 ns 4
replace bb to ---- by init stringa|512_stddev 12.1 ns 12.1 ns 4
replace bb to ---- by init stringa|512_cv 0.90 % 0.90 % 4
replace bb to ---- by init stringa|1024_mean 2813 ns 2813 ns 4
replace bb to ---- by init stringa|1024_median 2828 ns 2828 ns 4
replace bb to ---- by init stringa|1024_stddev 55.7 ns 55.7 ns 4
replace bb to ---- by init stringa|1024_cv 1.98 % 1.98 % 4
replace bb to ---- by init stringa|2048_mean 5550 ns 5550 ns 4
replace bb to ---- by init stringa|2048_median 5503 ns 5503 ns 4
replace bb to ---- by init stringa|2048_stddev 133 ns 133 ns 4
replace bb to ---- by init stringa|2048_cv 2.39 % 2.39 % 4
----- Replace All Str To Same Size ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
replace bb to -- in std::string|64_mean 243 ns 243 ns 4
replace bb to -- in std::string|64_median 242 ns 242 ns 4
replace bb to -- in std::string|64_stddev 4.47 ns 4.47 ns 4
replace bb to -- in std::string|64_cv 1.84 % 1.84 % 4
replace bb to -- in std::string|256_mean 814 ns 814 ns 4
replace bb to -- in std::string|256_median 817 ns 817 ns 4
replace bb to -- in std::string|256_stddev 30.9 ns 30.9 ns 4
replace bb to -- in std::string|256_cv 3.79 % 3.79 % 4
replace bb to -- in std::string|512_mean 1542 ns 1542 ns 4
replace bb to -- in std::string|512_median 1548 ns 1548 ns 4
replace bb to -- in std::string|512_stddev 58.0 ns 58.0 ns 4
replace bb to -- in std::string|512_cv 3.76 % 3.76 % 4
replace bb to -- in std::string|1024_mean 2825 ns 2825 ns 4
replace bb to -- in std::string|1024_median 2823 ns 2823 ns 4
replace bb to -- in std::string|1024_stddev 73.7 ns 73.7 ns 4
replace bb to -- in std::string|1024_cv 2.61 % 2.61 % 4
replace bb to -- in std::string|2048_mean 5545 ns 5545 ns 4
replace bb to -- in std::string|2048_median 5553 ns 5553 ns 4
replace bb to -- in std::string|2048_stddev 80.6 ns 80.6 ns 4
replace bb to -- in std::string|2048_cv 1.45 % 1.45 % 4
replace bb to -- in lstringa<8>|64_mean 192 ns 192 ns 4
replace bb to -- in lstringa<8>|64_median 192 ns 192 ns 4
replace bb to -- in lstringa<8>|64_stddev 2.88 ns 2.88 ns 4
replace bb to -- in lstringa<8>|64_cv 1.50 % 1.50 % 4
replace bb to -- in lstringa<8>|256_mean 636 ns 636 ns 4
replace bb to -- in lstringa<8>|256_median 636 ns 636 ns 4
replace bb to -- in lstringa<8>|256_stddev 5.38 ns 5.37 ns 4
replace bb to -- in lstringa<8>|256_cv 0.85 % 0.84 % 4
replace bb to -- in lstringa<8>|512_mean 1150 ns 1150 ns 4
replace bb to -- in lstringa<8>|512_median 1131 ns 1131 ns 4
replace bb to -- in lstringa<8>|512_stddev 42.8 ns 42.8 ns 4
replace bb to -- in lstringa<8>|512_cv 3.72 % 3.72 % 4
replace bb to -- in lstringa<8>|1024_mean 2296 ns 2296 ns 4
replace bb to -- in lstringa<8>|1024_median 2292 ns 2292 ns 4
replace bb to -- in lstringa<8>|1024_stddev 64.2 ns 64.2 ns 4
replace bb to -- in lstringa<8>|1024_cv 2.80 % 2.80 % 4
replace bb to -- in lstringa<8>|2048_mean 4237 ns 4237 ns 4
replace bb to -- in lstringa<8>|2048_median 4236 ns 4236 ns 4
replace bb to -- in lstringa<8>|2048_stddev 67.5 ns 67.4 ns 4
replace bb to -- in lstringa<8>|2048_cv 1.59 % 1.59 % 4
replace bb to -- by init stringa|64_mean 136 ns 136 ns 4
replace bb to -- by init stringa|64_median 137 ns 137 ns 4
replace bb to -- by init stringa|64_stddev 3.83 ns 3.84 ns 4
replace bb to -- by init stringa|64_cv 2.81 % 2.81 % 4
replace bb to -- by init stringa|256_mean 464 ns 464 ns 4
replace bb to -- by init stringa|256_median 468 ns 468 ns 4
replace bb to -- by init stringa|256_stddev 10.2 ns 10.2 ns 4
replace bb to -- by init stringa|256_cv 2.20 % 2.20 % 4
replace bb to -- by init stringa|512_mean 838 ns 838 ns 4
replace bb to -- by init stringa|512_median 843 ns 843 ns 4
replace bb to -- by init stringa|512_stddev 11.5 ns 11.5 ns 4
replace bb to -- by init stringa|512_cv 1.37 % 1.37 % 4
replace bb to -- by init stringa|1024_mean 1620 ns 1620 ns 4
replace bb to -- by init stringa|1024_median 1616 ns 1616 ns 4
replace bb to -- by init stringa|1024_stddev 45.0 ns 45.0 ns 4
replace bb to -- by init stringa|1024_cv 2.78 % 2.78 % 4
replace bb to -- by init stringa|2048_mean 2774 ns 2774 ns 4
replace bb to -- by init stringa|2048_median 2790 ns 2790 ns 4
replace bb to -- by init stringa|2048_stddev 87.5 ns 87.5 ns 4
replace bb to -- by init stringa|2048_cv 3.16 % 3.15 % 4
----- Hash Map insert and find ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
hashStrMapA<size_t> emplace & find stringa;_mean 3271665 ns 3271682 ns 4
hashStrMapA<size_t> emplace & find stringa;_median 3273789 ns 3273823 ns 4
hashStrMapA<size_t> emplace & find stringa;_stddev 31230 ns 31230 ns 4
hashStrMapA<size_t> emplace & find stringa;_cv 0.95 % 0.95 % 4
std::unordered_map<std::string, size_t> emplace & find std::string;_mean 3592775 ns 3592795 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_median 3597592 ns 3597618 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_stddev 44741 ns 44725 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string;_cv 1.25 % 1.24 % 4
hashStrMapA<size_t> emplace & find ssa;_mean 3244867 ns 3244884 ns 4
hashStrMapA<size_t> emplace & find ssa;_median 3239181 ns 3239192 ns 4
hashStrMapA<size_t> emplace & find ssa;_stddev 17436 ns 17437 ns 4
hashStrMapA<size_t> emplace & find ssa;_cv 0.54 % 0.54 % 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_mean 4041903 ns 4041917 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_median 4036025 ns 4036025 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_stddev 24855 ns 24882 ns 4
std::unordered_map<std::string, size_t> emplace & find std::string_view;_cv 0.61 % 0.62 % 4
----- Build Full Func Name ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
Build func full name std::string;_mean 3162 ns 3162 ns 4
Build func full name std::string;_median 3147 ns 3147 ns 4
Build func full name std::string;_stddev 52.6 ns 52.5 ns 4
Build func full name std::string;_cv 1.66 % 1.66 % 4
Build func full name std::string 1;_mean 3363 ns 3363 ns 4
Build func full name std::string 1;_median 3372 ns 3372 ns 4
Build func full name std::string 1;_stddev 87.9 ns 87.9 ns 4
Build func full name std::string 1;_cv 2.61 % 2.61 % 4
Build func full name std::stream;_mean 11876 ns 11876 ns 4
Build func full name std::stream;_median 11928 ns 11928 ns 4
Build func full name std::stream;_stddev 311 ns 311 ns 4
Build func full name std::stream;_cv 2.62 % 2.62 % 4
Build func full name stringa;_mean 1461 ns 1461 ns 4
Build func full name stringa;_median 1472 ns 1472 ns 4
Build func full name stringa;_stddev 42.0 ns 42.0 ns 4
Build func full name stringa;_cv 2.87 % 2.87 % 4
Build func full name stringa 1;_mean 1910 ns 1910 ns 4
Build func full name stringa 1;_median 1889 ns 1889 ns 4
Build func full name stringa 1;_stddev 57.7 ns 57.7 ns 4
Build func full name stringa 1;_cv 3.02 % 3.02 % 4
----- Make Upper ---------/repeats:1 0.000 ns 0.000 ns 1000000000000
To upper case std::wstring_mean 204 ns 204 ns 4
To upper case std::wstring_median 204 ns 204 ns 4
To upper case std::wstring_stddev 1.85 ns 1.85 ns 4
To upper case std::wstring_cv 0.91 % 0.91 % 4
To upper case lstringw<15>_mean 63.1 ns 63.1 ns 4
To upper case lstringw<15>_median 62.9 ns 62.9 ns 4
To upper case lstringw<15>_stddev 0.872 ns 0.872 ns 4
To upper case lstringw<15>_cv 1.38 % 1.38 % 4

View File

@ -48,7 +48,7 @@ PROJECT_NAME = "simstr"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 1.6.4 PROJECT_NUMBER = 1.9.1
# Using the PROJECT_BRIEF tag one can provide an optional one line description # 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 # for a project that appears at the top of each page and should give viewers a
@ -2928,7 +2928,7 @@ MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This # files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support # makes dot run faster, but since only newer versions of dot (>1.8.20) support
# this, this feature is disabled by default. # this, this feature is disabled by default.
# The default value is: NO. # The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES. # This tag requires that the tag HAVE_DOT is set to YES.

View File

@ -48,7 +48,7 @@ PROJECT_NAME = "simstr"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 1.6.4 PROJECT_NUMBER = 1.9.1
# Using the PROJECT_BRIEF tag one can provide an optional one line description # 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 # for a project that appears at the top of each page and should give viewers a
@ -2928,7 +2928,7 @@ MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This # files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support # makes dot run faster, but since only newer versions of dot (>1.8.20) support
# this, this feature is disabled by default. # this, this feature is disabled by default.
# The default value is: NO. # The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES. # This tag requires that the tag HAVE_DOT is set to YES.

View File

@ -1,6 +1,6 @@
/* /*
* (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com
* ver. 1.6.4 * ver. 1.9.1
*/ */
#pragma once #pragma once

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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) [![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.4. Version 1.9.1
<h2>Speed up your work with strings by 2-10 times!</h2> <h2>Speed up your work with strings by 2-10 times!</h2>
@ -26,13 +26,14 @@ use in my work, trying to do it in the most efficient way, and I modestly hope t
and will be useful to other people, either directly or as a source of ideas. and will be useful to other people, either directly or as a source of ideas.
The library contains two parts: The library contains two parts:
- Implementation of [*"String Expressions"*](https://orefkov.github.io/simstr/docs_ru/overview.html#autotoc_md27) and algorithms for working - Implementation of [*"String Expressions"*](https://orefkov.github.io/simstr/articles/fast_concat.html) and algorithms for working
with constant strings.\ with constant strings.\
To use this part, just take the file `"include/simstr/strexpr.h"` and write in your code To use this part, just take the file `"include/simstr/strexpr.h"` and write in your code
```cpp ```cpp
#include "path/to file/strexpr.h" #include "path/to file/strexpr.h"
``` ```
This will allow you to use powerful and fast *"string expressions"* for concatenation and string construction for standard string types (`std::basic_string`, `std::basic_string_view`), as well as simplified versions of the `simple_str` and This will allow you to use powerful and fast *"string expressions"* for concatenation and string construction for standard string types
(`std::basic_string`, `std::basic_string_view`), as well as simplified versions of the `simple_str` and
`simple_str_nt` classes, which implement all those string algorithms of the library that do not require storing or modifying strings. `simple_str_nt` classes, which implement all those string algorithms of the library that do not require storing or modifying strings.
Since this is a header-only part, it does not include working with UTF encodings and simplified Unicode. Since this is a header-only part, it does not include working with UTF encodings and simplified Unicode.
- The full version, requiring the connection of the entire library (`"include/simstr/sstring.h"`), adds its string types with - The full version, requiring the connection of the entire library (`"include/simstr/sstring.h"`), adds its string types with
@ -74,13 +75,15 @@ When using only `#include "simstr/strexpr.h"`:
for example `str::append(text, "count = "_ss + count)`. for example `str::append(text, "count = "_ss + count)`.
- str::replace - replaces occurrences of the search substring with a replacement string or string expression. - str::replace - replaces occurrences of the search substring with a replacement string or string expression.
If the substring is not found, the string expression is not even evaluated. If the substring is not found, the string expression is not even evaluated.
- Parsing integers with the possibility of "fine" tuning at compile time - you can set options for checking overflow, - str::make_ascii_upper, str::make_ascii_lower - change the case of ASCII characters.
skipping whitespace characters, a specific radix or auto-selection by prefixes `0x`, `0`, `0b`, `0o`, - Parsing of integers from a "piece of string" (does not require null termination) with the possibility of "fine" tuning during compilation -
the admissibility of the `+` sign. Parsing is implemented for all types of strings and characters. you can set options for checking for overflow, skipping whitespace characters, a specific radix, or auto-select by
- Parsing double for `char` and `wchar_t`, as well as character types compatible with them in size. prefixes `0x`, `0`, `0b`, `0o`, the `+` sign is allowed. Parsing is implemented for all types of strings and characters.
- Parsing double from a "piece of string" for `char` and `char8_t`.
When using the full version of the library: When using the full version of the library:
- Everything that is listed above, plus - Everything that is listed above, plus
- Parsing double from a "piece of string" for all types of characters.
- Additional efficient string objects - `sstring` (shared string), `lstring` (local string). - Additional efficient string objects - `sstring` (shared string), `lstring` (local string).
- `lstring` - supports many mutable operations with strings - various replacements, insertions, deletions, etc. - `lstring` - supports many mutable operations with strings - various replacements, insertions, deletions, etc.
Allows you to set the size for the internal character buffer, which can turn *Small String Optimization* into *Big String Optimization* :). Allows you to set the size for the internal character buffer, which can turn *Small String Optimization* into *Big String Optimization* :).
@ -108,8 +111,6 @@ the sizes of SSO buffers in objects are smaller.
On the [release page](https://github.com/orefkov/simstr/releases) you can download binary builds of benchmarks and run them on your equipment. On the [release page](https://github.com/orefkov/simstr/releases) you can download binary builds of benchmarks and run them on your equipment.
You can also run the [Emscripten build of benchmarks](https://orefkov.github.io/simstr/bench/benchStr.html) directly in the browser. You can also run the [Emscripten build of benchmarks](https://orefkov.github.io/simstr/bench/benchStr.html) directly in the browser.
(Before following the link, it is better to open "Developer Tools" (usually **F12**) in advance to see the console
Javascript, since the page will not be updated until the benchmarks are completed, and all output will be visible in the console).
- [Benchmark source code](bench/bench_str.cpp) - [Benchmark source code](bench/bench_str.cpp)
- [Benchmark results](https://orefkov.github.io/simstr/results.html) - [Benchmark results](https://orefkov.github.io/simstr/results.html)
@ -299,6 +300,7 @@ When connecting only `strexpr.h` - the types `simple_str<K>` and `simple_str_nt<
## Articles ## Articles
- [Overview and introduction](docs/overview.md) - [Overview and introduction](docs/overview.md)
- [So how do you quickly concatenate strings?](https://orefkov.github.io/simstr/articles/fast_concat.html)
- [Overview article on Habr](https://habr.com/ru/articles/935590) (on Russian) - [Overview article on Habr](https://habr.com/ru/articles/935590) (on Russian)
- [Description of the applied technique "Expression Templates"](https://habr.com/ru/articles/936468/)(on Russian) - [Description of the applied technique "Expression Templates"](https://habr.com/ru/articles/936468/)(on Russian)
@ -323,8 +325,8 @@ function(add_simstr)
simstr simstr
GIT_REPOSITORY https://github.com/orefkov/simstr.git GIT_REPOSITORY https://github.com/orefkov/simstr.git
GIT_SHALLOW TRUE GIT_SHALLOW TRUE
GIT_TAG tags/rel1.6.4 # Specify the desired release GIT_TAG tags/rel1.9.1# Specify the desired release
FIND_PACKAGE_ARGS NAMES simstr 1.6.4 FIND_PACKAGE_ARGS NAMES simstr 1.9.1
) )
FetchContent_MakeAvailable(simstr) FetchContent_MakeAvailable(simstr)
endfunction() endfunction()

View File

@ -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) [![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.4. Версия 1.9.1
<h2>Ускорь работу со строками в 2-10 раз!</h2> <h2>Ускорь работу со строками в 2-10 раз!</h2>
@ -26,7 +26,7 @@
и пригодится другим людям, либо напрямую, либо как источник идей. и пригодится другим людям, либо напрямую, либо как источник идей.
Библиотека содержит две части: Библиотека содержит две части:
- Реализация [*"Строковых выражений"*](https://orefkov.github.io/simstr/docs_ru/overview.html#autotoc_md27) и алгоритмов работы - Реализация [*"Строковых выражений"*](https://orefkov.github.io/simstr/articles/fast_concat_ru.html) и алгоритмов работы
с константными строками.\ с константными строками.\
Для использования этой части достаточно просто взять файл `"include/simstr/strexpr.h"` и написать в своём коде Для использования этой части достаточно просто взять файл `"include/simstr/strexpr.h"` и написать в своём коде
```cpp ```cpp
@ -70,18 +70,21 @@
- Слияние (join) контейнеров строк в единую строку, с заданием разделителей и опций - "пропускать пустые", "разделитель после последней". - Слияние (join) контейнеров строк в единую строку, с заданием разделителей и опций - "пропускать пустые", "разделитель после последней".
- Разбиение (split) строк на части по заданному разделителю. Разбиение возможно сразу в контейнер со строками, либо вызовом функтора для - Разбиение (split) строк на части по заданному разделителю. Разбиение возможно сразу в контейнер со строками, либо вызовом функтора для
каждой подстроки, либо путем итерации с помощью итератора `Splitter`. каждой подстроки, либо путем итерации с помощью итератора `Splitter`.
- Создании копии со сменой регистра ASCII символов.
- Функции модификации стандартных строк строковыми выражениями: - Функции модификации стандартных строк строковыми выражениями:
- str::append, str::prepend, str::insert, str::change - меняют str::string строковыми выражениями, - str::append, str::prepend, str::insert, str::change - меняют str::string строковыми выражениями,
например `str::append(text, "count = "_ss + count)`. например `str::append(text, "count = "_ss + count)`.
- str::replace - заменяет вхождения искомой подстроки на строку замены или строковое выражение. - str::replace - заменяет вхождения искомой подстроки на строку замены или строковое выражение.
Если подстрока не найдена, строковое выражение даже не вычисляется. Если подстрока не найдена, строковое выражение даже не вычисляется.
- Парсинг целых чисел с возможностью "тонкой" настройки при компиляции - можно задавать опции проверки переполнения, - str::make_ascii_upper, str::make_ascii_lower - смена регистра ASCII символов.
пропуск пробельных символов, конкретное основание счисления либо автовыбор по префиксам `0x`, `0`, `0b`, `0o`, - Парсинг целых чисел из "куска строки" (не требует нуль-терминированности) с возможностью "тонкой" настройки при компиляции -
допустимость знака `+`. Парсинг реализован для всех видов строк и символов. можно задавать опции проверки переполнения, пропуск пробельных символов, конкретное основание счисления либо автовыбор по
- Парсинг double для `char` и `wchar_t`, а также совместимых с ними по размеру типов символов. префиксам `0x`, `0`, `0b`, `0o`, допустимость знака `+`. Парсинг реализован для всех видов строк и символов.
- Парсинг double из "куска строки" для `char` и `char8_t`.
При использовании полной версии библиотеки: При использовании полной версии библиотеки:
- Всё то же, что и перечислено выше, плюс - Всё то же, что и перечислено выше, плюс
- Парсинг double из "куска строки" для всех типов символов.
- Дополнительные эффективные строковые объекты - `sstring` (shared string), `lstring` (local string). - Дополнительные эффективные строковые объекты - `sstring` (shared string), `lstring` (local string).
- `lstring` - поддерживает множество мутабельных операций со строками - различные замены, вставки, удаления и т.п. - `lstring` - поддерживает множество мутабельных операций со строками - различные замены, вставки, удаления и т.п.
Позволяет задавать размер для внутреннего буфера символов, что может превращать *Small String Optimization* в *Big String Optimization* :). Позволяет задавать размер для внутреннего буфера символов, что может превращать *Small String Optimization* в *Big String Optimization* :).
@ -109,8 +112,6 @@ Windows и Linux (в WSL), с использованием компилятор
На [странице релизов](https://github.com/orefkov/simstr/releases) вы можете скачать бинарные сборки бенчмарков и запустить их на своём оборудовании. На [странице релизов](https://github.com/orefkov/simstr/releases) вы можете скачать бинарные сборки бенчмарков и запустить их на своём оборудовании.
Также вы можете запустить [Emscripten сборку бенчмарков](https://orefkov.github.io/simstr/bench/benchStr.html) прямо в браузере. Также вы можете запустить [Emscripten сборку бенчмарков](https://orefkov.github.io/simstr/bench/benchStr.html) прямо в браузере.
(Перед переходом по ссылке лучше предварительно откройте "Инструменты разработчика" (обычно **F12**), чтобы видеть консоль
Javascript, так как до окончания бенчмарков страница не будет обновляться, а весь вывод будет виден в консоли).
- [Исходный код бенчмарков](bench/bench_str.cpp) - [Исходный код бенчмарков](bench/bench_str.cpp)
- [Результаты бенчмарков](https://orefkov.github.io/simstr/results.html) - [Результаты бенчмарков](https://orefkov.github.io/simstr/results.html)
@ -300,6 +301,7 @@ int split_and_calc_total_sim(ssa numbers, ssa delimiter) {
## Статьи ## Статьи
- [Обзор и введение](docs/overview_ru.md) - [Обзор и введение](docs/overview_ru.md)
- [Так как же всё-таки быстро конкатенировать строки?](https://orefkov.github.io/simstr/articles/fast_concat_ru.html)
- [Обзорная статья на Хабре](https://habr.com/ru/articles/935590) - [Обзорная статья на Хабре](https://habr.com/ru/articles/935590)
- [Описание применяемой техники "Expression Templates"](https://habr.com/ru/articles/936468/) - [Описание применяемой техники "Expression Templates"](https://habr.com/ru/articles/936468/)
@ -324,8 +326,8 @@ function(add_simstr)
simstr simstr
GIT_REPOSITORY https://github.com/orefkov/simstr.git GIT_REPOSITORY https://github.com/orefkov/simstr.git
GIT_SHALLOW TRUE GIT_SHALLOW TRUE
GIT_TAG tags/rel1.6.4 # Укажите нужный релиз GIT_TAG tags/rel1.9.1# Укажите нужный релиз
FIND_PACKAGE_ARGS NAMES simstr 1.6.4 FIND_PACKAGE_ARGS NAMES simstr 1.9.1
) )
FetchContent_MakeAvailable(simstr) FetchContent_MakeAvailable(simstr)
endfunction() endfunction()

View File

@ -1,5 +1,5 @@
/* /*
* ver. 1.6.4 * ver. 1.9.1
* (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com
* Реализация строковых функций * Реализация строковых функций
* (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com
@ -187,6 +187,8 @@ inline u32s makeFoldU(u32s s) {
/* /*
* Поиск utf-8 symbols, которые меняют свою длину при upper/lower преобразовании * Поиск utf-8 symbols, которые меняют свою длину при upper/lower преобразовании
* вот они нашлись * вот они нашлись
* Search for utf-8 codepoints that change their code units length during upper/lower conversion
* here they are found
* "İiıIſSȺⱥȾⱦɐⱯɑⱭɫⱢɱⱮɽⱤẞßΙΩωkÅåⱢɫⱤɽⱥȺⱦȾⱭɑⱮɱⱯɐ" * "İiıIſSȺⱥȾⱦɐⱯɑⱭɫⱢɱⱮɽⱤẞßΙΩωkÅåⱢɫⱤɽⱥȺⱦȾⱭɑⱮɱⱯɐ"
l2u ıI ſS ɐ ɑ ɫ ɱ ɽ Ι Ⱥ Ⱦ l2u ıI ſS ɐ ɑ ɫ ɱ ɽ Ι Ⱥ Ⱦ
u2l İi Ⱥ Ⱦ ß ω k å ɫ ɽ ɑ ɱ ɐ u2l İi Ⱥ Ⱦ ß ω k å ɫ ɽ ɑ ɱ ɐ
@ -248,7 +250,7 @@ size_t utf8_case_change(const u8s*& src, size_t len, u8s*& dest, size_t lenBuffe
// то есть если символ считан, и длина записываемого символа не больше считанного, то он поместится в буфер записи // то есть если символ считан, и длина записываемого символа не больше считанного, то он поместится в буфер записи
// и не перетрет символы, которые еще не прочитали // и не перетрет символы, которые еще не прочитали
// По другому работать откажемся // По другому работать откажемся
if (lenBuffer < len || (dest > src && dest < src + len)) if (dest > src && dest < src + len)
return len; return len;
const uu8s *beginReadPos = reinterpret_cast<const uu8s*>(src), *readPos = beginReadPos, *endReadPos = beginReadPos + len, const uu8s *beginReadPos = reinterpret_cast<const uu8s*>(src), *readPos = beginReadPos, *endReadPos = beginReadPos + len,
*readFromPos = readPos; *readFromPos = readPos;
@ -386,6 +388,32 @@ SIMSTR_API size_t unicode_traits<u8s>::lower(const u8s*& src, size_t len, u8s*&
return utf8_case_change<makeLowerU>(src, len, dest, lenBuffer); return utf8_case_change<makeLowerU>(src, len, dest, lenBuffer);
} }
SIMSTR_API size_t unicode_traits<u8s>::upper_len(const u8s* src, size_t len) {
size_t l = 0;
for (const uu8s *ptr = (const uu8s*)src, *start = ptr, *end = ptr + len; ptr < end; start = ptr) {
u32s s = readUtf8Symbol(ptr, end), su = makeUpperU(s);
if (s == su) {
l += ptr - start;
} else {
l += utf8len(su);
}
}
return l;
}
SIMSTR_API size_t unicode_traits<u8s>::lower_len(const u8s* src, size_t len) {
size_t l = 0;
for (const uu8s *ptr = (const uu8s*)src, *start = ptr, *end = ptr + len; ptr < end; start = ptr) {
u32s s = readUtf8Symbol(ptr, end), su = makeLowerU(s);
if (s == su) {
l += ptr - start;
} else {
l += utf8len(su);
}
}
return l;
}
template<auto Op> template<auto Op>
void utf16_change_case(const u16s* src, size_t len, u16s* dest) { void utf16_change_case(const u16s* src, size_t len, u16s* dest) {
if (dest != src) { if (dest != src) {

View File

@ -1,5 +1,5 @@
/* /*
* ver. 1.6.4 * ver. 1.9.1
* (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com
* Тесты simstr * Тесты simstr
* (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com
@ -402,6 +402,72 @@ TEST(StrExpr, EInt) {
TEST(StrExpr, EIntFmt) { TEST(StrExpr, EIntFmt) {
std::string test = "'0x"_ss + 10 / 0x16E08_fmt + "' " + 10 / 0x11'8EF5f_fmt; std::string test = "'0x"_ss + 10 / 0x16E08_fmt + "' " + 10 / 0x11'8EF5f_fmt;
EXPECT_EQ(test, "'0x0000000A' _______A"); EXPECT_EQ(test, "'0x0000000A' _______A");
test = 100 / 0x2a010_fmt;
EXPECT_EQ(test, "0b01100100");
} }
TEST(StrExpr, ChangeCase) {
std::string res = e_ascii_upper("teSt");
EXPECT_EQ(res, "TEST");
res = "/" + e_ascii_lower(res) + "/";
EXPECT_EQ(res, "/test/");
EXPECT_EQ(str::make_ascii_upper(res), "/TEST/");
str::make_ascii_lower(res, 1, 3);
EXPECT_EQ(res, "/teST/");
std::wstring wres = e_ascii_lower(L"TeSt"_ss);
EXPECT_EQ(wres, L"test");
std::u16string ures = u"/test/";
EXPECT_EQ(str::make_ascii_upper(ures), u"/TEST/");
str::make_ascii_lower(ures, 1, 3);
EXPECT_EQ(ures, u"/teST/");
}
TEST(StrExpr, StripPrefixSuffix) {
const ssa from = "begin--end";
EXPECT_EQ(*from.strip_prefix("begin"), "--end");
EXPECT_FALSE(from.strip_prefix("sd").has_value());
EXPECT_EQ(*from.strip_suffix_ia("End"), "begin--");
EXPECT_FALSE(from.strip_suffix("sd").has_value());
}
TEST(StrExpr, TrimPrefixSuffix) {
const ssa from = "beginbegin--end";
EXPECT_EQ(from.trimmed_prefix("begin"), "--end");
EXPECT_EQ(from.trimmed_prefix("begin", 1), "begin--end");
EXPECT_EQ(from.trimmed_prefix("sd"), from);
EXPECT_EQ(from.trimmed_suffix_ia("End"), "beginbegin--");
EXPECT_EQ(from.trimmed_suffix("sd"), from);
}
TEST(StrExpr, StartWithAnd) {
EXPECT_TRUE("begin --end"_ss.starts_with_and_ws("begin"));
EXPECT_FALSE("beginn --end"_ss.starts_with_and_ws("begin"));
EXPECT_TRUE("BegiN\t--end"_ss.starts_with_ia_and_ws("begin"_ss));
EXPECT_TRUE("begin[ --end"_ss.starts_with_and_oneof("begin", "/*[]"));
EXPECT_TRUE("Begin[ --end"_ss.starts_with_ia_and_oneof("begin", "/*[]"_ss));
}
TEST(SimStr, Get) {
ssa testa{"test"};
EXPECT_EQ(testa.get(1, to_end), "est");
EXPECT_EQ(testa.get(1, 2), "es");
EXPECT_EQ(testa.get(1, from_end(1)), "es");
EXPECT_EQ(testa.get(1, from_end(10)), "");
EXPECT_EQ(testa.get(from_end(3), from_end(1)), "es");
ssu testu{u"test"};
EXPECT_EQ(testu.get(1, to_end), u"est");
EXPECT_EQ(testu.get(1, 2), u"es");
EXPECT_EQ(testu.get(from_end(3), from_end(1)), u"es");
ssw testw{L"test"};
EXPECT_EQ(testw.get(1, to_end), L"est");
EXPECT_EQ(testw.get(1, 2), L"es");
EXPECT_EQ(testw.get(from_end(3), from_end(1)), L"es");
}
} // namespace simstr::tests } // namespace simstr::tests

View File

@ -1,5 +1,5 @@
/* /*
* ver. 1.6.4 * ver. 1.9.1
* (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com
* Тесты simstr * Тесты simstr
* (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com
@ -24,6 +24,9 @@ public:
size_t sharedCount() const { size_t sharedCount() const {
return type_ == Shared ? SharedStringData<u8s>::from_str(sstr_)->ref_.load() : 0u; return type_ == Shared ? SharedStringData<u8s>::from_str(sstr_)->ref_.load() : 0u;
} }
size_t sharedCountForce() const {
return SharedStringData<u8s>::from_str(sstr_)->ref_.load();
}
}; };
TEST(SimStr, CreateSimpleEmpty) { TEST(SimStr, CreateSimpleEmpty) {
@ -271,6 +274,7 @@ TEST(SimStr, SimpleFind) {
EXPECT_EQ("abccccc"_ss.find_last("ab"), 0); EXPECT_EQ("abccccc"_ss.find_last("ab"), 0);
} }
#if 0
TEST(SimStr, SubPiece) { TEST(SimStr, SubPiece) {
ssa testa{"test"}; ssa testa{"test"};
EXPECT_EQ(testa(1), "est"); EXPECT_EQ(testa(1), "est");
@ -286,39 +290,83 @@ TEST(SimStr, SubPiece) {
EXPECT_EQ(testw(1), L"est"); EXPECT_EQ(testw(1), L"est");
EXPECT_EQ(testw(1, 2), L"es"); EXPECT_EQ(testw(1, 2), L"es");
} }
#endif
TEST(SimStr, Get) {
ssa testa{"test"};
EXPECT_EQ(testa.get(1, to_end), "est");
EXPECT_EQ(testa.get(1, 2), "es");
EXPECT_EQ(testa.get(1, from_end(1)), "es");
EXPECT_EQ(testa.get(1, from_end(10)), "");
ssu testu{u"test"};
EXPECT_EQ(testu.get(1, to_end), u"est");
EXPECT_EQ(testu.get(1, 2), u"es");
ssw testw{L"test"};
EXPECT_EQ(testw.get(1, to_end), L"est");
EXPECT_EQ(testw.get(1, 2), L"es");
}
TEST(SimStr, SimpleSubstr) { TEST(SimStr, SimpleSubstr) {
ssa testa = "test"; ssa testa = "test";
#if 0
EXPECT_EQ(testa.substr(1, 0), "est"); EXPECT_EQ(testa.substr(1, 0), "est");
EXPECT_EQ(testa.substr(1, 2), "es"); EXPECT_EQ(testa.substr(1, 2), "es");
EXPECT_EQ(testa.substr(0, -1), "tes"); EXPECT_EQ(testa.substr(0, -1), "tes");
EXPECT_EQ(testa.substr(-2), "st"); EXPECT_EQ(testa.substr(-2), "st");
EXPECT_EQ(testa.substr(-3, 2), "es"); EXPECT_EQ(testa.substr(-3, 2), "es");
EXPECT_EQ(testa.substr(-3, -1), "es"); EXPECT_EQ(testa.substr(-3, -1), "es");
#endif
EXPECT_EQ(testa.sub(1, to_end), "est");
EXPECT_EQ(testa.sub(1, 2), "es");
EXPECT_EQ(testa.sub(0, from_end(1)), "tes");
EXPECT_EQ(testa.sub(from_end(2), to_end), "st");
EXPECT_EQ(testa.sub(from_end(3), 2), "es");
EXPECT_EQ(testa.sub(from_end(3), from_end(1)), "es");
EXPECT_EQ(testa.str_mid(1), "est"); EXPECT_EQ(testa.str_mid(1), "est");
EXPECT_EQ(testa.str_mid(1, 0), ""); EXPECT_EQ(testa.str_mid(1, 0), "");
EXPECT_EQ(testa.str_mid(1, 2), "es"); EXPECT_EQ(testa.str_mid(1, 2), "es");
EXPECT_EQ(testa.str_mid(2, 2), "st"); EXPECT_EQ(testa.str_mid(2, 2), "st");
ssu testu = u"test"; ssu testu = u"test";
#if 0
EXPECT_EQ(testu.substr(1, 0), u"est"); EXPECT_EQ(testu.substr(1, 0), u"est");
EXPECT_EQ(testu.substr(1, 2), u"es"); EXPECT_EQ(testu.substr(1, 2), u"es");
EXPECT_EQ(testu.substr(0, -1), u"tes"); EXPECT_EQ(testu.substr(0, -1), u"tes");
EXPECT_EQ(testu.substr(-2), u"st"); EXPECT_EQ(testu.substr(-2), u"st");
EXPECT_EQ(testu.substr(-3, 2), u"es"); EXPECT_EQ(testu.substr(-3, 2), u"es");
EXPECT_EQ(testu.substr(-3, -1), u"es"); EXPECT_EQ(testu.substr(-3, -1), u"es");
#endif
EXPECT_EQ(testu.sub(1, to_end), u"est");
EXPECT_EQ(testu.sub(1, 2), u"es");
EXPECT_EQ(testu.sub(0, from_end(1)), u"tes");
EXPECT_EQ(testu.sub(from_end(2), to_end), u"st");
EXPECT_EQ(testu.sub(from_end(3), 2), u"es");
EXPECT_EQ(testu.sub(from_end(3), from_end(1)), u"es");
EXPECT_EQ(testu.str_mid(1), u"est"); EXPECT_EQ(testu.str_mid(1), u"est");
EXPECT_EQ(testu.str_mid(1, 0), u""); EXPECT_EQ(testu.str_mid(1, 0), u"");
EXPECT_EQ(testu.str_mid(1, 2), u"es"); EXPECT_EQ(testu.str_mid(1, 2), u"es");
EXPECT_EQ(testu.str_mid(2, 2), u"st"); EXPECT_EQ(testu.str_mid(2, 2), u"st");
ssw testw = L"test"; ssw testw = L"test";
#if 0
EXPECT_EQ(testw.substr(1, 0), L"est"); EXPECT_EQ(testw.substr(1, 0), L"est");
EXPECT_EQ(testw.substr(1, 2), L"es"); EXPECT_EQ(testw.substr(1, 2), L"es");
EXPECT_EQ(testw.substr(0, -1), L"tes"); EXPECT_EQ(testw.substr(0, -1), L"tes");
EXPECT_EQ(testw.substr(-2), L"st"); EXPECT_EQ(testw.substr(-2), L"st");
EXPECT_EQ(testw.substr(-3, 2), L"es"); EXPECT_EQ(testw.substr(-3, 2), L"es");
EXPECT_EQ(testw.substr(-3, -1), L"es"); EXPECT_EQ(testw.substr(-3, -1), L"es");
#endif
EXPECT_EQ(testw.sub(1, to_end), L"est");
EXPECT_EQ(testw.sub(1, 2), L"es");
EXPECT_EQ(testw.sub(0, from_end(1)), L"tes");
EXPECT_EQ(testw.sub(from_end(2), to_end), L"st");
EXPECT_EQ(testw.sub(from_end(3), 2), L"es");
EXPECT_EQ(testw.sub(from_end(3), from_end(1)), L"es");
EXPECT_EQ(testw.str_mid(1), L"est"); EXPECT_EQ(testw.str_mid(1), L"est");
EXPECT_EQ(testw.str_mid(1, 0), L""); EXPECT_EQ(testw.str_mid(1, 0), L"");
EXPECT_EQ(testw.str_mid(1, 2), L"es"); EXPECT_EQ(testw.str_mid(1, 2), L"es");
@ -327,7 +375,7 @@ TEST(SimStr, SimpleSubstr) {
TEST(SimStr, ToInt) { TEST(SimStr, ToInt) {
EXPECT_EQ(ssa{" 123"}.as_int<int>(), 123); EXPECT_EQ(ssa{" 123"}.as_int<int>(), 123);
EXPECT_EQ(ssa{" 123"}(0, -1).as_int<int>(), 12); EXPECT_EQ(ssa{" 123"}.get(0, from_end(1)).as_int<int>(), 12);
EXPECT_EQ(ssa{"+123"}.as_int<int>(), 123); EXPECT_EQ(ssa{"+123"}.as_int<int>(), 123);
EXPECT_EQ(ssa{" -123aa"}.as_int<int>(), -123); EXPECT_EQ(ssa{" -123aa"}.as_int<int>(), -123);
EXPECT_EQ(ssa{"123"}.as_int<size_t>(), 123u); EXPECT_EQ(ssa{"123"}.as_int<size_t>(), 123u);
@ -484,6 +532,8 @@ TEST(SimStr, ToInt) {
TEST(SimStr, to_double) { TEST(SimStr, to_double) {
EXPECT_EQ(ssa{" 123"}.to_double(), 123.0); EXPECT_EQ(ssa{" 123"}.to_double(), 123.0);
EXPECT_EQ(ssa{" 123.1"}.to_double(), 123.1); EXPECT_EQ(ssa{" 123.1"}.to_double(), 123.1);
EXPECT_EQ(ssb{u8" 123"}.to_double(), 123.0);
EXPECT_EQ(ssb{u8" 123.1"}.to_double(), 123.1);
EXPECT_EQ(ssu{u" 123.13434"}.to_double(), 123.13434); EXPECT_EQ(ssu{u" 123.13434"}.to_double(), 123.13434);
EXPECT_EQ(ssuu{U" 123.13434"}.to_double(), 123.13434); EXPECT_EQ(ssuu{U" 123.13434"}.to_double(), 123.13434);
EXPECT_EQ(ssw{L" 123.13434"}.to_double(), 123.13434); EXPECT_EQ(ssw{L" 123.13434"}.to_double(), 123.13434);
@ -808,7 +858,7 @@ TEST(SimStr, AssignSstring) {
EXPECT_EQ(test = ssa{"other"}, "other"); EXPECT_EQ(test = ssa{"other"}, "other");
EXPECT_EQ(test = stringa{"trtr"_ss + 10}, "trtr10"); EXPECT_EQ(test = stringa{"trtr"_ss + 10}, "trtr10");
EXPECT_EQ(test = "trtr"_ss + 20, "trtr20"); EXPECT_EQ(test = "trtr"_ss + 20, "trtr20");
EXPECT_EQ(test = test(2), "tr20"); EXPECT_EQ(test = test.get(2, to_end), "tr20");
EXPECT_EQ(test = lstringa<10>{"func"}, "func"); EXPECT_EQ(test = lstringa<10>{"func"}, "func");
EXPECT_EQ(test = lstringsa<10>{"func"}, "func"); EXPECT_EQ(test = lstringsa<10>{"func"}, "func");
lstringsa<10> sample{15, "1234"}; lstringsa<10> sample{15, "1234"};
@ -937,10 +987,10 @@ TEST(SimStr, LStringAssign) {
test = lstringa<1>{"next step"}; test = lstringa<1>{"next step"};
EXPECT_EQ(test, "next step"); EXPECT_EQ(test, "next step");
test = test(0); test = test.get(0, to_end);
EXPECT_EQ(test, "next step"); EXPECT_EQ(test, "next step");
test = test(1, 2); test = test.get(1, 2);
EXPECT_EQ(test, "ex"); EXPECT_EQ(test, "ex");
test = e_c(100, 'a'); test = e_c(100, 'a');
@ -958,13 +1008,23 @@ TEST(SimStr, LStringAssign) {
TEST(SimStr, UtfConvert) { TEST(SimStr, UtfConvert) {
EXPECT_EQ(stringa{ssu{u"testпройден"}}, "testпройден"); EXPECT_EQ(stringa{ssu{u"testпройден"}}, "testпройден");
EXPECT_EQ(stringa{ssb{u8"testпройден"}}, "testпройден");
EXPECT_EQ(stringa{ssw{L"testпройден"}}, "testпройден"); EXPECT_EQ(stringa{ssw{L"testпройден"}}, "testпройден");
EXPECT_EQ(stringa{stringu{u"testпройден"}}, "testпройден"); EXPECT_EQ(stringa{stringu{u"testпройден"}}, "testпройден");
EXPECT_EQ(stringa{stringw{L"testпройден"}}, "testпройден"); EXPECT_EQ(stringa{stringw{L"testпройден"}}, "testпройден");
EXPECT_EQ(stringa{lstringu<40>{u"testпройден"}}, "testпройден"); EXPECT_EQ(stringa{lstringu<40>{u"testпройден"}}, "testпройден");
EXPECT_EQ(stringa{lstringw<40>{L"testпройден"}}, "testпройден"); EXPECT_EQ(stringa{lstringw<40>{L"testпройден"}}, "testпройден");
EXPECT_EQ(stringb{ssu{u"testпройден"}}, u8"testпройден");
EXPECT_EQ(stringb{ssa{u8"testпройден"}}, u8"testпройден");
EXPECT_EQ(stringb{ssw{L"testпройден"}}, u8"testпройден");
EXPECT_EQ(stringb{stringu{u"testпройден"}}, u8"testпройден");
EXPECT_EQ(stringb{stringw{L"testпройден"}}, u8"testпройден");
EXPECT_EQ(stringb{lstringu<40>{u"testпройден"}}, u8"testпройден");
EXPECT_EQ(stringb{lstringw<40>{L"testпройден"}}, u8"testпройден");
EXPECT_EQ(stringu{ssa{"testпройден"}}, u"testпройден"); EXPECT_EQ(stringu{ssa{"testпройден"}}, u"testпройден");
EXPECT_EQ(stringu{ssb{u8"testпройден"}}, u"testпройден");
EXPECT_EQ(stringu{ssw{L"testпройден"}}, u"testпройден"); EXPECT_EQ(stringu{ssw{L"testпройден"}}, u"testпройден");
EXPECT_EQ(stringu{stringa{"testпройден"}}, u"testпройден"); EXPECT_EQ(stringu{stringa{"testпройден"}}, u"testпройден");
EXPECT_EQ(stringu{stringw{L"testпройден"}}, u"testпройден"); EXPECT_EQ(stringu{stringw{L"testпройден"}}, u"testпройден");
@ -1316,9 +1376,9 @@ TEST(SimStr, LStrFormat) {
} }
#else #else
{ {
// char32_t в Windows совместим по размеру с wchar_t, поэтому для его форматирования можно использовать // char32_t в Linux совместим по размеру с wchar_t, поэтому для его форматирования можно использовать
// L"format_string", и передавать char32_t строковые объекты // L"format_string", и передавать char32_t строковые объекты
// char32_t on Windows is compatible in size with wchar_t, so you can use L"format_string" to format it // char32_t on Linux is compatible in size with wchar_t, so you can use L"format_string" to format it
// and pass char32_t string objects // and pass char32_t string objects
lstringuu<2> text; lstringuu<2> text;
text.format(L"{}{}", 'a', 'b'); text.format(L"{}{}", 'a', 'b');
@ -1384,13 +1444,13 @@ TEST(SimStr, LStrJoinAndExpressions) {
int k = 10; int k = 10;
double d = 12.1; double d = 12.1;
lstringa<10> test = ">" + e_repl(buffer.to_str(), "<>", "-") + k + ", " + d; lstringa<10> test = ">" + e_repl(buffer, "<>", "-") + k + ", " + d;
EXPECT_EQ(test, ">asd-fgh-jkl10, 12.1"); EXPECT_EQ(test, ">asd-fgh-jkl10, 12.1");
buffer.prepend(e_choice(test.length() > 2, eea + 99, eea + 12.1 + "asd")); buffer.prepend(e_choice(test.length() > 2, eea + 99, eea + 12.1 + "asd"));
EXPECT_EQ(buffer, "99asd<>fgh<>jkl"); EXPECT_EQ(buffer, "99asd<>fgh<>jkl");
buffer.change(2, 4, test(0, 3) + "__" + 1 + ','); buffer.change(2, 4, test.get(0, 3) + "__" + 1 + ',');
EXPECT_EQ(buffer, "99>as__1,>fgh<>jkl"); EXPECT_EQ(buffer, "99>as__1,>fgh<>jkl");
} }
@ -1975,13 +2035,21 @@ TEST(SimStr, HexEpr) {
std::u32string textuu = +U"val = 0X"sv + e_hex<HexFlags::No0x | HexFlags::Short>(0x12Au); std::u32string textuu = +U"val = 0X"sv + e_hex<HexFlags::No0x | HexFlags::Short>(0x12Au);
EXPECT_EQ(textuu, U"val = 0X12A"); EXPECT_EQ(textuu, U"val = 0X12A");
if (sizeof(void*) == 8) {
text = +"ptr = "sv + (const void*)0xdeadbeefcafe01; text = +"ptr = "sv + (const void*)0xdeadbeefcafe01;
EXPECT_EQ(text, "ptr = 0x00DEADBEEFCAFE01"); EXPECT_EQ(text, "ptr = 0x00DEADBEEFCAFE01");
const char* ptr = (const char*)0xdeadbeefcafe01; const char* ptr = (const char*)0xdeadbeefcafe01;
std::u16string utext = ptr + +u" freed"sv; std::u16string utext = ptr + +u" freed"sv;
EXPECT_EQ(utext, u"0x00DEADBEEFCAFE01 freed"); EXPECT_EQ(utext, u"0x00DEADBEEFCAFE01 freed");
} else {
text = +"ptr = "sv + (const void*)0xdeadbeef;
EXPECT_EQ(text, "ptr = 0xDEADBEEF");
const char* ptr = (const char*)0xdeadbeef;
std::u16string utext = ptr + +u" freed"sv;
EXPECT_EQ(utext, u"0xDEADBEEF freed");
}
} }
TEST(SimStr, EFill) { TEST(SimStr, EFill) {
@ -1999,11 +2067,43 @@ TEST(SimStr, Subst) {
EXPECT_EQ(u16t, u"Test 1 from 100, success."); EXPECT_EQ(u16t, u"Test 1 from 100, success.");
} }
void check_equal(stra a, stra b) { TEST(SimStr, EIntFmt) {
EXPECT_EQ(a, b); stringa test = "'0x"_ss + 10 / 0x16E08_fmt + "' " + 10 / 0x11'8EF5f_fmt;
EXPECT_EQ(test, "'0x0000000A' _______A");
test = 100 / 0x2a010_fmt;
EXPECT_EQ(test, "0b01100100");
std::u16string textu = +u"val = 0X"sv + 0x12A / 123_f16;
EXPECT_EQ(textu, u"val = 0X12a");
textu = u"val = "_ss + 0x12A / 0_f16;
EXPECT_EQ(textu, u"val = 0x0000012A");
}
TEST(SimStr, EChangeCase) {
stringa test = e_upper("teSt");
EXPECT_EQ(test, "TEST");
test = e_lower(test);
EXPECT_EQ(test, "test");
test = e_upper("ɐ ɑ ı ſ");
EXPECT_EQ(test, "Ɐ Ɑ I S");
test = "-" + e_lower("İ Ⱥ Ⱦ ẞ") + "-";
EXPECT_EQ(test, "-i ⱥ ⱦ ß-");
stringu utest = e_upper(u"teSt");
EXPECT_EQ(utest, u"TEST");
utest = e_lower(utest);
EXPECT_EQ(utest, u"test");
utest = e_upper(u"ı ſ ɐ ɑ");
EXPECT_EQ(utest, u"I S Ɐ Ɑ");
utest = u"-" + e_lower(u"İ Ⱥ Ⱦ ẞ") + u"-";
EXPECT_EQ(utest, u"-i ⱥ ⱦ ß-");
} }
#ifndef _MSC_VER #ifndef _MSC_VER
void check_equal(stra a, stra b) {
EXPECT_EQ(a, b);
}
inline constexpr cestring<char, 100> ce_sample = "sample " + e_subst("test = {}", e_hex(10)) + ", done"; inline constexpr cestring<char, 100> ce_sample = "sample " + e_subst("test = {}", e_hex(10)) + ", done";
TEST(SimStr, ConstEval) { TEST(SimStr, ConstEval) {
@ -2057,7 +2157,64 @@ TEST(SimStr, ConstEval) {
} }
#endif #endif
struct sized_alloc {
inline static size_t allocated = 0, dealloced = 0;
inline static void* alloced = nullptr;
void* allocate(size_t bytes) {
allocated += bytes;
return alloced = ::operator new(bytes);
}
template<typename T>
void deallocate(T* address, size_t size) noexcept {
dealloced += size;
EXPECT_EQ(address, alloced);
if constexpr (requires{::operator delete(address, size);}) {
::operator delete(address, size);
} else {
::operator delete(address);
}
}
};
TEST(SimStr, SizedAlloc) {
sized_alloc::allocated = sized_alloc::dealloced = 0;
{
lstring<u8s, 0, true, sized_alloc> src{10, "test"};
sstring<u8s, sized_alloc> str{std::move(src)};
EXPECT_TRUE(src.is_empty());
EXPECT_EQ(((Tstringa*)&str)->sharedCount(), SharedStringData<u8s>::check | 1);
}
EXPECT_EQ(sized_alloc::allocated, sized_alloc::dealloced);
EXPECT_EQ(sized_alloc::allocated, 64);
{
sstring<u8s, sized_alloc> str{10, "test"};
EXPECT_EQ(((Tstringa*)&str)->sharedCount(), 1);
}
EXPECT_EQ(sized_alloc::allocated, sized_alloc::dealloced);
EXPECT_EQ(sized_alloc::allocated, 113);
}
TEST(SimStr, SizedAllocU) {
sized_alloc::allocated = sized_alloc::dealloced = 0;
{
lstring<u16s, 0, true, sized_alloc> src{10, u"test"};
sstring<u16s, sized_alloc> str{std::move(src)};
EXPECT_TRUE(src.is_empty());
EXPECT_EQ(((Tstringa*)&str)->sharedCountForce(), SharedStringData<u8s>::check | 1);
}
EXPECT_EQ(sized_alloc::allocated, sized_alloc::dealloced);
EXPECT_EQ(sized_alloc::allocated, 112);
{
sstring<u16s, sized_alloc> str{10, u"test"};
EXPECT_EQ(((Tstringa*)&str)->sharedCountForce(), 1);
}
EXPECT_EQ(sized_alloc::allocated, sized_alloc::dealloced);
EXPECT_EQ(sized_alloc::allocated, 202);
}
} // namespace simstr::tests } // namespace simstr::tests
TEST(SimStr, StrNoNamespace) { TEST(SimStr, StrNoNamespace) {
std::string str = "test"; std::string str = "test";
std::string test = +str + " = " + 10; std::string test = +str + " = " + 10;

View File

@ -1,5 +1,5 @@
/* /*
* ver. 1.6.4 * ver. 1.9.1
* (c) Проект "SimStr", Александр Орефков orefkov@gmail.com * (c) Проект "SimStr", Александр Орефков orefkov@gmail.com
* Тесты simstr * Тесты simstr
* (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com * (c) Project "SimStr", Aleksandr Orefkov orefkov@gmail.com