perf: discard jinja rendered SQL output - #184
Merged
Merged
Conversation
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
Stringrender_captured_toAPIWhy
dlin renders each model template to collect side effects from the
ref,source, andconfigstubs. It does not use the rendered SQL text.Template::rendernevertheless builds and returns the complete output string.render_captured_to((), std::io::sink())evaluates the same compiled template and preserves render errors and callback side effects while discarding only the output bytes. The existing pass-local extraction reset still runs after both successful and failed renders.Correctness
The macro-heavy cache suite passed semantic equivalence for no-cache, persistent-cold, and persistent-warm execution, together with SQL, macro, and vars invalidation probes. Existing tests cover successful extraction, partial extraction after render failure, and isolation between full and incremental passes.
Performance
The current macro-heavy fixture contains short rendered SQL, so the allocation removal is below its timing resolution. An 80-pair randomized comparison produced a candidate/base median ratio of 1.0021, with no measurable improvement or regression. The change removes output storage proportional to rendered SQL size without changing the dominant template evaluation work.
Verification
cargo test --workspace --lockedcargo fmt --all --checkcargo clippy --workspace --all-targets --all-features --locked -- -D warnings