[common] Add PatternCache to optimize regex compilation performance#4203
Open
tchivs wants to merge 1 commit intoapache:masterfrom
Open
[common] Add PatternCache to optimize regex compilation performance#4203tchivs wants to merge 1 commit intoapache:masterfrom
tchivs wants to merge 1 commit intoapache:masterfrom
Conversation
- feat(common): introduce LRU-based PatternCache for compiled Pattern instances - perf(common): integrate PatternCache into Predicates.setOfRegex() - test: add comprehensive unit tests for PatternCache with LRU eviction test Benefits: - Avoid repeated Pattern.compile() calls for the same regex - LRU eviction with max 100 cached patterns - Thread-safe with synchronized access - Significant performance improvement for pattern-heavy operations Technical details: - Uses LinkedHashMap with access-order for LRU behavior - Synchronized methods ensure thread safety - Only caches patterns without flags (regexFlags == 0) - Patterns with flags are compiled directly without caching
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.
This PR introduces a PatternCache utility class to optimize regex pattern compilation performance by caching compiled
Patterninstances with LRU eviction strategy.Brief change log
PatternCacheclass with LRU-based caching mechanismPatternCacheintoPredicates.setOfRegex()methodTechnical Details
PatternCache Implementation
LinkedHashMapwith access-order (true) for LRU behaviorsynchronizedmethodsregexFlags == 0)Performance Benefits
Pattern.compile()calls for the same regex stringIntegration Points
Predicates.setOfRegex(): Uses cache whenregexFlags == 0