Bolt: Optimize array filtering allocations in count aggregations - #5709
Bolt: Optimize array filtering allocations in count aggregations#5709georgi wants to merge 1 commit into
Conversation
Co-authored-by: georgi <19498+georgi@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. |
What
Replaced multiple array
.filter(...).lengthchecks with a single O(N) loop to compute category counts inusePackageManagerand dependent task counts inparsePlanDocument.Why
When extracting metrics or counts from arrays, iterating via
.filter(...)creates an intermediate array solely to read its length. When done multiple times over the same array (e.g., getting counts for different status categories), it creates an O(K*N) performance bottleneck and scales poorly due to garbage collection pressure from intermediate array allocations.Impact
Reduces the time complexity of category counting in package manager from O(3*N) to O(N) and prevents unnecessary array allocations on high-frequency UI updates. Similarly reduces task processing overhead when parsing plan documents.
Verification
Ran
npm run testtargeting the affected packagessrc/components/chat/message/andsrc/components/packages/. Verified thatparsePlanDocumentandusePackageManagerpass all behavior tests. Rannpm run typecheckandnpm run lint:design.PR created automatically by Jules for task 5615517030902977173 started by @georgi