⚡ Bolt: Cache compiled Regex instances to speed up Scanner creation#51
⚡ Bolt: Cache compiled Regex instances to speed up Scanner creation#51tachyon-beep wants to merge 2 commits into
Conversation
Co-authored-by: tachyon-beep <544926+tachyon-beep@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
Co-authored-by: tachyon-beep <544926+tachyon-beep@users.noreply.github.com>
💡 What: Added
std::sync::OnceLockcaching toScanner::new()incrates/clarion-scanner/src/patterns.rs. We added#[derive(Clone)]toScannerandCompiledPatternto clone the cached references.🎯 Why:
Regex::newis computationally expensive because it compiles regular expressions into DFA/NFA representations.Scanner::new()used to eagerly compile the default secrets scanning patterns every time it was called. This causes significant overhead whenever the CLI or server creates a new scanner instance.📊 Impact: Redundant Regex compilation is completely eliminated. Cloning a cached
RegexorRegexSetinstance only bumps anArcatomic reference count internally, making subsequent creations virtually instantaneous.🔬 Measurement: To verify the improvement, compare
Scanner::new()instantiation time before and after.cargo checkandcargo test --workspacepass flawlessly.PR created automatically by Jules for task 13339495316346839477 started by @tachyon-beep