nfx-stringutils 1.2.0
Cross-platform C++ string utilities library with validation and manipulation functions
Loading...
Searching...
No Matches
benchmark Directory Reference

Detailed Description

Benchmarks


Test Environment

Hardware Configuration

Component Specification
CPU 12th Gen Intel Core i7-12800H (20 logical, 14 physical cores)
Base Clock 2.80 GHz
Turbo Clock 4.80 GHz
L1 Data Cache 48 KiB (×6 P-cores) + 32 KiB (×8 E-cores)
L1 Instruction Cache 32 KiB (×6 P-cores) + 64 KiB (×2 E-core clusters)
L2 Unified Cache 1.25 MiB (×6 P-cores) + 2 MiB (×2 E-core clusters)
L3 Unified Cache 24 MiB (×1 shared)
RAM DDR4-3200 (32GB)
GPU NVIDIA RTX A2000 4GB GDDR6

Software Configuration

Platform Benchmark Framework C++ Compiler nfx-stringutils Version
Linux Google Benchmark v1.9.4 GCC 14.2.0-x64 v1.0.0
Linux Google Benchmark v1.9.4 Clang 19.1.7-x64 v1.0.0
Windows Google Benchmark v1.9.4 MinGW GCC 14.2.0-x64 v1.0.0
Windows Google Benchmark v1.9.4 Clang-GNU-CLI 19.1.5-x64 v1.0.0
Windows Google Benchmark v1.9.4 Clang-MSVC-CLI 19.1.5-x64 v1.0.0
Windows Google Benchmark v1.9.4 MSVC 19.44.35217.0-x64 v1.0.0

Performance Results

String Splitter Operations

Operation Linux GCC Linux Clang Windows MinGW GCC Windows Clang-GNU-CLI Windows Clang-MSVC-CLI Windows MSVC
Manual CSV Splitting 24.0 ns 26.5 ns 47.0 ns 77.3 ns 65.6 ns 35.6 ns
Splitter CSV Splitting 26.7 ns 35.0 ns 48.8 ns 51.1 ns 54.0 ns 36.1 ns
SplitView CSV Splitting 26.8 ns 35.3 ns 49.3 ns 51.4 ns 51.4 ns 36.6 ns
Manual Path Splitting 19.8 ns 24.3 ns 42.2 ns 66.4 ns 57.2 ns 31.3 ns
Splitter Path Splitting 22.2 ns 29.6 ns 41.4 ns 49.6 ns 43.4 ns 35.7 ns
SplitView Path Splitting 22.0 ns 29.9 ns 40.6 ns 48.0 ns 42.1 ns 34.5 ns
Manual Config Splitting 17.5 ns 19.7 ns 46.2 ns 54.8 ns 51.1 ns 24.4 ns
Splitter Config Splitting 17.2 ns 22.4 ns 53.8 ns 40.6 ns 38.9 ns 27.9 ns
SplitView Config Splitting 17.3 ns 22.8 ns 54.9 ns 41.9 ns 37.0 ns 27.0 ns
Splitter Zero Allocation 26.6 ns 34.5 ns 45.7 ns 43.9 ns 46.2 ns 34.7 ns

String Utilities Operations

Operation Linux GCC Linux Clang Windows MinGW GCC Windows Clang-GNU-CLI Windows Clang-MSVC-CLI Windows MSVC
std::isspace 23.8 ns 22.7 ns 38.8 ns 30.8 ns 31.4 ns 39.6 ns
nfx::string::isWhitespace 7.92 ns 6.87 ns 11.5 ns 9.39 ns 10.1 ns 20.1 ns
std::isdigit 4.98 ns 6.30 ns 7.00 ns 7.60 ns 7.55 ns 34.0 ns
nfx::string::isDigit 5.09 ns 5.11 ns 7.21 ns 8.25 ns 7.80 ns 15.6 ns
std::isalpha 24.9 ns 26.1 ns 39.5 ns 38.2 ns 38.6 ns 37.7 ns
nfx::string::isAlpha 5.17 ns 6.80 ns 6.80 ns 7.05 ns 7.88 ns 27.2 ns
std::string_view::empty 5.24 ns 6.60 ns 6.60 ns 9.17 ns 9.23 ns 17.4 ns
nfx::string::isEmpty 4.66 ns 6.57 ns 6.57 ns 8.84 ns 9.04 ns 18.0 ns
Manual isNullOrWhiteSpace 53.1 ns 49.3 ns 71.2 ns 49.3 ns 50.2 ns 68.0 ns
nfx::string::isNullOrWhiteSpace 14.5 ns 17.4 ns 21.1 ns 29.1 ns 25.0 ns 38.8 ns
Manual isAllDigits 22.8 ns 22.1 ns 29.6 ns 33.3 ns 34.2 ns 85.5 ns
nfx::string::isAllDigits 24.7 ns 25.5 ns 32.5 ns 32.3 ns 34.3 ns 41.4 ns
std::starts_with 11.7 ns 10.4 ns 24.9 ns 14.9 ns 14.3 ns 30.2 ns
nfx::string::startsWith 11.7 ns 13.4 ns 18.3 ns 17.7 ns 15.2 ns 31.6 ns
std::ends_with 10.4 ns 10.3 ns 14.4 ns 16.8 ns 15.2 ns 37.2 ns
nfx::string::endsWith 10.4 ns 10.3 ns 18.1 ns 14.8 ns 14.8 ns 32.4 ns
std::contains 57.0 ns 51.9 ns 109 ns 172 ns 169 ns 176 ns
nfx::string::contains 56.8 ns 57.0 ns 107 ns 187 ns 173 ns 176 ns
Manual trim 36.0 ns 38.2 ns 50.9 ns 135 ns 135 ns 297 ns
nfx::string::trim 30.3 ns 37.6 ns 37.6 ns 56.3 ns 42.9 ns 51.7 ns
std::tolower (char) 30.6 ns 27.3 ns 27.3 ns 31.3 ns 30.6 ns 42.7 ns
nfx::string::toLower (char) 3.55 ns 4.80 ns 4.80 ns 8.07 ns 8.54 ns 17.0 ns
std::transform tolower 490 ns 522 ns 690 ns 705 ns 670 ns 661 ns
nfx::string::toLower (string) 472 ns 432 ns 601 ns 660 ns 621 ns 932 ns
std::toupper (char) 30.3 ns 27.3 ns 27.3 ns 42.2 ns 41.4 ns 44.0 ns
nfx::string::toUpper (char) 3.57 ns 4.73 ns 4.73 ns 7.31 ns 7.12 ns 16.5 ns
std::transform toupper 529 ns 538 ns 667 ns 863 ns 798 ns 692 ns
nfx::string::toUpper (string) 488 ns 435 ns 644 ns 668 ns 643 ns 910 ns
std::from_chars (int) 13.5 ns 15.2 ns 24.7 ns 22.5 ns 20.6 ns 32.5 ns
nfx::string::tryParseInt 13.2 ns 17.9 ns 22.3 ns 20.2 ns 20.2 ns 45.7 ns
std::from_chars (double) 46.7 ns 47.0 ns 76.1 ns 138 ns 143 ns 188 ns
nfx::string::tryParseDouble 47.8 ns 49.2 ns 80.1 ns 142 ns 146 ns 193 ns
Manual isURIReserved 8.67 ns 8.07 ns 14.6 ns 10.2 ns 9.51 ns 25.6 ns
nfx::string::isURIReserved 8.85 ns 7.78 ns 11.2 ns 9.69 ns 9.34 ns 26.5 ns
Manual isURIUnreserved 10.6 ns 12.1 ns 14.4 ns 15.1 ns 14.5 ns 28.5 ns
nfx::string::isURIUnreserved 10.7 ns 12.1 ns 13.8 ns 14.4 ns 14.3 ns 28.3 ns

Benchmarks executed on October 30, 2025