nfx-stringbuilder 0.7.0
Cross-platform C++20 library for zero-allocation string building with Small Buffer Optimization
Loading...
Searching...
No Matches
benchmark Directory Reference

Detailed Description

Benchmarks


Test Environment

Hardware Configuration

Component Specification
Computer Model Lenovo ThinkPad P15v Gen 3
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 OS Benchmark Framework C++ Compiler nfx-stringbuilder version
Linux LMDE 7 Google Benchmark v1.9.5 GCC 14.2.0-x64 v0.6.0
Linux LMDE 7 Google Benchmark v1.9.5 Clang 19.1.7-x64 v0.6.0
Windows Windows 10 Google Benchmark v1.9.5 MinGW GCC 14.2.0-x64 v0.6.0
Windows Windows 10 Google Benchmark v1.9.5 MSVC 19.44.35217.0-x64 v0.6.0

Performance Results

BM_Comparative - Small Strings

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StdString_SmallStrings 51.9 ns 54.0 ns TBA TBA
BM_StringStream_SmallStrings 197 ns 212 ns TBA TBA
BM_FmtMemoryBuffer_SmallStrings 80.8 ns 89.0 ns TBA TBA
BM_Abseil_SmallStrings 92.1 ns 99.0 ns TBA TBA
BM_StringBuilder_SmallStrings 28.5 ns 29.2 ns TBA TBA

BM_Comparative - Medium Strings

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StdString_MediumStrings 68.1 ns 78.8 ns TBA TBA
BM_StringStream_MediumStrings 177 ns 199 ns TBA TBA
BM_FmtMemoryBuffer_MediumStrings 66.9 ns 86.6 ns TBA TBA
BM_Abseil_MediumStrings 106 ns 121 ns TBA TBA
BM_StringBuilder_MediumStrings 23.9 ns 25.9 ns TBA TBA

BM_Comparative - Large Strings

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StdString_LargeStrings 81.2 ns 94.9 ns TBA TBA
BM_StringStream_LargeStrings 197 ns 227 ns TBA TBA
BM_FmtMemoryBuffer_LargeStrings 78.7 ns 88.6 ns TBA TBA
BM_Abseil_LargeStrings 123 ns 117 ns TBA TBA
BM_StringBuilder_LargeStrings 78.6 ns 84.2 ns TBA TBA

BM_Comparative - Huge Strings

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StdString_HugeStrings 324 ns 331 ns TBA TBA
BM_StringStream_HugeStrings 831 ns 850 ns TBA TBA
BM_FmtMemoryBuffer_HugeStrings 673 ns 674 ns TBA TBA
BM_Abseil_HugeStrings 355 ns 385 ns TBA TBA
BM_StringBuilder_HugeStrings 665 ns 717 ns TBA TBA

BM_Comparative - Rapid Allocation Cycles

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StdString_RapidCycles 9.18 ns 7.18 ns TBA TBA
BM_FmtMemoryBuffer_RapidCycles 185 ns 204 ns TBA TBA
BM_Abseil_RapidCycles 156 ns 146 ns TBA TBA
BM_StringBuilder_RapidCycles 63.1 ns 67.8 ns TBA TBA

BM_Comparative - Mixed Operations

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StdString_MixedOperations 209 ns 213 ns TBA TBA
BM_StringStream_MixedOperations 386 ns 401 ns TBA TBA
BM_FmtMemoryBuffer_MixedOperations 91.6 ns 103 ns TBA TBA
BM_Abseil_MixedOperations 65.6 ns 65.4 ns TBA TBA
BM_StringBuilder_MixedOperations 74.9 ns 63.8 ns TBA TBA

BM_Comparative - Formatting

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StdFormat_ComplexFormatting 179 ns 154 ns TBA TBA
BM_FmtFormat_ComplexFormatting 113 ns 117 ns TBA TBA
BM_Abseil_ComplexFormatting 59.1 ns 65.6 ns TBA TBA
BM_StringBuilder_WithFormat 192 ns 190 ns TBA TBA
BM_StringBuilder_ManualFormatting 66.0 ns 67.7 ns TBA TBA

BM_StringBuilder_Core - Append Operations

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_AppendChar 63.1 ns 65.9 ns TBA TBA
BM_StringBuilder_AppendCString 63.5 ns 83.9 ns TBA TBA
BM_StringBuilder_AppendStringView 105 ns 114 ns TBA TBA
BM_StringBuilder_AppendString 161 ns 189 ns TBA TBA
BM_StringBuilder_AppendInt 289 ns 131 ns TBA TBA
BM_StringBuilder_AppendDouble 3653 ns 3608 ns TBA TBA
BM_StringBuilder_AppendBool 107 ns 96.3 ns TBA TBA

BM_StringBuilder_Core - Stream Operators

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_StreamOperator 62.2 ns 62.4 ns TBA TBA
BM_StringBuilder_ChainedAppends 62.1 ns 69.6 ns TBA TBA

BM_StringBuilder_Core - Other Operations

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_Prepend 135 ns 143 ns TBA TBA
BM_StringBuilder_MixedAppendPrepend 85.7 ns 90.5 ns TBA TBA
BM_StringBuilder_ClearAndReuse 20.2 ns 21.2 ns TBA TBA
BM_StringBuilder_ToStringView 1.73 ns 1.83 ns TBA TBA
BM_StringBuilder_ToString 14.7 ns 14.9 ns TBA TBA

BM_StringBuilder_Join - Small Collections

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_JoinSmall_Comma 29.0 ns 35.2 ns TBA TBA
BM_ManualLoop_JoinSmall_Comma 51.3 ns 50.1 ns TBA TBA
BM_Abseil_JoinSmall_Comma 38.8 ns 40.7 ns TBA TBA

BM_StringBuilder_Join - Medium Collections

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_JoinMedium_Pipe 24.1 ns 29.2 ns TBA TBA
BM_ManualLoop_JoinMedium_Pipe 71.5 ns 70.8 ns TBA TBA
BM_Abseil_JoinMedium_Pipe 30.4 ns 33.2 ns TBA TBA

BM_StringBuilder_Join - Large Collections

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_JoinLarge_Newline 66.2 ns 71.4 ns TBA TBA
BM_ManualLoop_JoinLarge_Newline 73.4 ns 69.4 ns TBA TBA
BM_Abseil_JoinLarge_Newline 32.4 ns 34.3 ns TBA TBA

BM_StringBuilder_Join - Numeric Arrays

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_JoinNumbers 353 ns 382 ns TBA TBA
BM_ManualLoop_JoinNumbers 767 ns 719 ns TBA TBA
BM_Abseil_JoinNumbers 1115 ns 1327 ns TBA TBA

BM_StringBuilder_Join - Edge Cases

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_JoinEmpty 1.25 ns 2.45 ns TBA TBA
BM_StringBuilder_JoinSingle 5.72 ns 6.78 ns TBA TBA

BM_StringBuilder_Lines - Small Strings

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_AppendLine_Small 29.5 ns 26.1 ns TBA TBA
BM_StringBuilder_AppendManual_Small 27.6 ns 27.4 ns TBA TBA

BM_StringBuilder_Lines - Medium Strings

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_AppendLine_Medium 23.6 ns 24.3 ns TBA TBA
BM_StringBuilder_AppendManual_Medium 24.0 ns 23.8 ns TBA TBA

BM_StringBuilder_Lines - Large Strings

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_AppendLine_Large 72.1 ns 70.7 ns TBA TBA
BM_StringBuilder_AppendManual_Large 67.4 ns 68.2 ns TBA TBA

BM_StringBuilder_Lines - Workloads

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_LogWorkload 0.817 us 0.566 us TBA TBA
BM_StringBuilder_CsvWorkload 2327 ns 2031 ns TBA TBA
BM_StringBuilder_NmeaWorkload 273 ns 224 ns TBA TBA

BM_StringBuilder_Lines - Edge Cases

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_AppendLine_Empty 75.4 ns 58.9 ns TBA TBA

BM_StringBuilder_Advanced

Operation Linux GCC Linux Clang Windows MinGW GCC Windows MSVC
BM_StringBuilder_NoHint 0.520 us 0.446 us TBA TBA
BM_StringBuilder_WithHint 0.387 us 0.299 us TBA TBA
BM_StringBuilder_BufferReuse 82.6 ns 84.0 ns TBA TBA
BM_StringBuilder_ZeroAlloc 17.3 ns 15.8 ns TBA TBA
BM_StringBuilder_MemoryPressure 1.02 us 1.15 us TBA TBA

Updated on February 11, 2026