Cache regex in template OptimizedFileSystemResolver #35228
Closed
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.
This is a follow up to #33860, which made templates faster by doing more work in ruby to reduce I/O. This PR reduces the amount of work we're doing in ruby. Like the previous PR this will mostly benefit startup time and development mode (where
Resolver.caching
isfalse
).Previously we were building a regex for each call to
#query
(which is called for eachview_path
on each search). Instead, this PR creates a regex for just the details component of the path (which itself is slightly faster), and caches that regex.A regex used to look like:
Now looks like:
Benchmark
The speedup depends a lot on how slow the globs are. Listing directories on my Linux machine is way faster than on my MacBook 🤔. On my MacBook it's still ~1.5x faster 🎉
Benchmark:
Before:
After:
cc @tenderlove @eileencodes