Skip to content

perf: Optimize writeIntegerList - #917

Open
ldintr wants to merge 1 commit into
ldintr-indentfrom
ldintr-writeIntegerList
Open

perf: Optimize writeIntegerList#917
ldintr wants to merge 1 commit into
ldintr-indentfrom
ldintr-writeIntegerList

Conversation

@ldintr

@ldintr ldintr commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Replaces the two-pass (compute size, then write) approach with single-pass type-specific writers that reserve placeholder space for the length prefix and patch it in afterward, falling back to two-pass only for very large lists. Output bytes unchanged.

Overview: PbjReader/PbjWriter are a leaner, buffer-reusing alternative to the existing ReadableSequentialData/WritableSequentialData read/write path used by Codec, ProtoParserTools/ProtoWriterTools, and the pbj-compiler generators. They reuse an internal ~16KB (L1-cache-sized) buffer across many parse/write calls instead of allocating per call, avoid checked-exception-based control flow by recording a sticky internal error code instead, and split hot-path operations (e.g. zigzag vs. non-zigzag varints, direct UTF-8 decode into a reusable char[]) into dedicated fast methods.

@ldintr
ldintr requested review from a team as code owners August 31, 2026 16:47
@ldintr ldintr self-assigned this Aug 31, 2026
@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown

JUnit Test Report

   523 files  ±0     523 suites  ±0   27s ⏱️ -2s
 1 646 tests +3   1 642 ✅ +3   4 💤 ±0  0 ❌ ±0 
10 864 runs  +3  10 836 ✅ +3  28 💤 ±0  0 ❌ ±0 

Results for commit 6ff0b15. ± Comparison against base commit 267db40.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown

Integration Test Report

    428 files  ±0      428 suites  ±0   16m 30s ⏱️ - 3m 43s
115 048 tests ±0  115 048 ✅ ±0  0 💤 ±0  0 ❌ ±0 
115 292 runs  ±0  115 292 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 6ff0b15. ± Comparison against base commit 267db40.

♻️ This comment has been updated with latest results.

Signed-off-by: ldintr <levo.d@swirldslabs.com>
@ldintr
ldintr force-pushed the ldintr-writeIntegerList branch from 06cf459 to 6ff0b15 Compare September 10, 2026 19:07
@ldintr
ldintr requested review from a team as code owners September 10, 2026 19:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant