Repository navigation
Resolving a large schema is quadratic in the number of items - #1284
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes: Reviewed the completion-counter optimization and release note, including dependency scheduling, error handling, and partial resolution; all 127 focused tests passed.
- Completion bookkeeping: Counts pending items once and decrements on completion instead of enumerating pending keys after every item.
- Release note: Adds a
varlockpatch entry describing the large-schema performance improvement.
gpt-6.1-sol | 𝕏
Member
|
Nice find. Thanks! |
resolveEnvValues counted the keys of the pending-items object each time an item finished, which is O(n^2) in the number of items. It now keeps a counter. 3,000-item schema, load + resolve: about 245 ms to 50 ms.
theoephraim
force-pushed
the
fix-large-schema-resolve
branch
from
November 13, 2026 00:47
59e0f5c to
3185771
Compare
varlock
@varlock/astro-integration
@varlock/cloudflare-integration
@varlock/nextjs-integration
@varlock/nuxt-integration
@varlock/vite-integration
@varlock/1password-plugin
@varlock/aws-secrets-plugin
@varlock/azure-key-vault-plugin
@varlock/bitwarden-plugin
@varlock/keepass-plugin
@varlock/pass-plugin
@varlock/proton-pass-plugin
commit: |
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.

cause:
fix: keep a counter.
every item's resolved value and error count is the same before and after on the 3,000-item schema. no new test: behaviour is unchanged and a timing test would be flaky.
context: found while timing a language server prototype (#469) on generated schemas. thousands of items is bigger than most real schemas, so this is a stretch too, but the fix is small.