⚡ Bolt: Optimize parseTask string allocation in hot path#491
Conversation
Replace `split('/')` with manual string scanning (`indexOf` and `substring`) to prevent intermediate array allocation overhead. Cache the lowercased task title as `titleLower` on the object so `taskHasOpenPR` doesn't need to recalculate it repeatedly during filtering. Updated related mock payloads in tests to match the new shape.
Co-authored-by: n24q02m <135627235+n24q02m@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. |
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Replace `split('/')` with manual string scanning (`indexOf` and `substring`) to prevent intermediate array allocation overhead. Cache the lowercased task title as `titleLower` on the object so `taskHasOpenPR` doesn't need to recalculate it repeatedly during filtering. Updated related mock payloads in tests to match the new shape.
Also fix unrelated accessibility failures and biome json format failure in github CI.
Co-authored-by: n24q02m <135627235+n24q02m@users.noreply.github.com>
💡 What: Replaced
String.prototype.split('/')in theparseTaskfunction with manual string scanning usingindexOfandsubstring. Additionally, cached the lowercased task title in a newtitleLowerproperty, and updatedtaskHasOpenPRto use this cached value. Updated mock definitions intests/background.test.jsto align with the optimizedparseTaskoutput.🎯 Why:
parseTaskis a hot path called for every task returned from the batchexecute API.split('/')incurs an array allocation penalty, which can trigger additional garbage collection and slow down parsing during large bulk operations. Furthermore,taskHasOpenPRevaluates titles in a tight nested loop—recomputing.toLowerCase()continuously compounded the overhead.📊 Impact: Reduces transient memory allocation per task and eliminates redundant string computation when checking for open PRs, improving overall performance and smoothness during orchestrator task discovery/filtering.
🔬 Measurement: Verify tests run successfully using
pnpm testand note the exact match with legacy output semantics for parsed repo, owner, and repoName details via manual object logging test scripts.PR created automatically by Jules for task 5778669114027478509 started by @n24q02m