Add measured decompression throughput to the array tree display - #9565
Open
joseph-isaacs wants to merge 3 commits into
Open
Add measured decompression throughput to the array tree display#9565joseph-isaacs wants to merge 3 commits into
joseph-isaacs wants to merge 3 commits into
Conversation
The tree display already answers "where do the bytes go". This adds a composable extractor that answers "where does the decompression time go", rendered through the same tree. `DecompressionProfile::measure` canonicalizes every node of an encoding tree in isolation and records the median wall time, keyed by node identity, so `ThroughputExtractor` is a pure lookup on the tree `TreeDisplay` already walks. No change to the renderer or to the `TreeDisplayExtractor` contract. A node's self time is its subtree time minus its children's. Encodings that rewrite a `(parent, child)` pair through an `execute_parent` kernel or a `reduce_parent` rule reach canonical form without canonicalizing the child, so they cost less than the sum of their children. That is reported as a fusion saving rather than a negative self time, which needs no executor instrumentation: it falls out of comparing a node against its children. Gated behind the off-by-default `profile-throughput` feature, since the measurement uses `Instant` and performs O(nodes * reps) decompressions. Running the `decompress` benchmark's trees with `VORTEX_DECOMPRESS_PROFILE=1` prints the per-subtree breakdown behind each of that benchmark's totals. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016uJfeYsetVkEKGVFGuMS6a
- Cover the duration and rate formatting with unit tests, and the zero-reps edge with a profile test. - Treat `reps: 0` as one timed run rather than reporting a zero time. - Document that a share above 100% is the fusion signal, that unprofiled nodes are skipped, and how shared subtrees are counted. - Run the crate's tests with `profile-throughput` on by default. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016uJfeYsetVkEKGVFGuMS6a
`typos` rejects "canonicalizations"; say "runs" instead, which reads better in both fields anyway. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016uJfeYsetVkEKGVFGuMS6a
joseph-isaacs
force-pushed
the
claude/decompression-throughput-tree-gth0u2
branch
from
August 24, 2026 10:07
faf55d3 to
023be0d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add a array tree display mode to see decompression throughput
Example, from the
decompressbenchmark's own trees:Root times track the
decompressbenchmark's medians within a few percent, so the breakdown canbe read against that benchmark directly:
for_bp_u64alp_for_bp_f64dict_varbinview_stringrunend_for_bp_u32dict_fsst_varbin_stringdict_fsst_varbin_bp_stringdatetime_for_bp