Repository navigation
Cap the parsed pattern cache at 1000 patterns - #92
Merged
Merged
Conversation
Every valid pattern stayed in the cache for the life of the process, about 6 KB each, so formatting many distinct patterns grew the heap without limit. Drop the oldest pattern once 1000 are cached.
Owner
|
Very good catch, and an elegant solution. I've added an LRU cache in #94 which I'll hook in here to but I wanted the test so I've merged this first. Release should be out over the weekend at the latest. |
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.
Every valid pattern stays in the parsed-pattern cache for the life of the process, about 6 KB each, so formatting many distinct patterns grows the heap without limit (#91).
This caps the cache at 1000 patterns and drops the oldest one when it's full. A workbook uses a few dozen patterns, so normal use still parses each pattern once. Lookups are unchanged; the size check only runs when a new pattern is parsed.
test/pattern-cache.spec.tschecks that a pattern is cached and that the oldest one is dropped once the cache is full; the second test fails on master.npm run test,lintandtypecheckpass. Happy to change the number or make it an option.