mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
WIP: bump DEFAULT_INITIAL_CAPACITY to 256KB
Most CITM/Twitter realloc cost was due to growing from 1024 in 7-9 doublings to reach the actual output size. Bumping the initial capacity to 256KB means Twitter (82KB) fits in one allocation and CITM (496KB) only needs 1 growth. Measured (TRUE A/B, 7 alternating rounds in single docker, with all prior follow-ups in this branch + this cap bump): CITM: 4358 -> 4924 MB/s (+13.0%) - now ~2.3% AHEAD of Glaze Twitter: 6338 -> 8034 MB/s (+26.8%) - ~50% AHEAD of Glaze Trade-off: 256KB upfront per string_builder instance. Reasonable for high-perf JSON serialization but wasteful for tiny one-off messages. Users serializing small payloads should pass a smaller initial_capacity to the constructor. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -52,7 +52,7 @@ class string_builder {
|
||||
public:
|
||||
simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY);
|
||||
|
||||
static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024;
|
||||
static constexpr size_t DEFAULT_INITIAL_CAPACITY = 262144;
|
||||
|
||||
/**
|
||||
* Append number (includes Booleans). Booleans are mapped to the strings
|
||||
|
||||
Reference in New Issue
Block a user