perf: speed up script reading with shared Jinja env and YAML cache#192
Merged
Conversation
A new jinja2.Environment + FileSystemLoader was created for every .sql.jinja file, and load_yaml re-parsed the same YAML files on every call (102 calls for only 17 unique files). This extracts a shared _make_jinja_environment() with an in-memory YAML cache, cutting Jinja rendering from ~1.9s to ~0.3s for 42 templates. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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
jinja2.Environmentacross all.sql.jinjafiles instead of creating a new one per fileload_yamlresults so the same YAML files aren't re-parsed on every template render (102 calls → 17 unique files)_make_jinja_environment()helper that encapsulates both optimizationsBefore: ~1.9s for
lea run --select foo(warm cache)After: ~0.75s — a 2.5x speedup
The Jinja rendering alone went from ~1850ms to ~314ms for 42 templates.
Test plan
🤖 Generated with Claude Code