⚡ Bolt: [performance improvement] Pre-compute Maps in hot loops - #207
servathadi wants to merge 1 commit into
Conversation
…er loop Co-authored-by: servathadi <116760885+servathadi@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. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
💡 What
Pre-computes the
nodeMap(mapping node slugs toGraphNodeobjects) using auseRefthat updates only during dependency changes in theuseEffect, rather than instantiating anew Map()on every tick of therequestAnimationFrameloop.🎯 Why
In the physics simulation step (
simulate), allocating anew Map()on every single frame (~60 times per second) creates significant, unnecessary garbage collection (GC) pressure, which causes micro-stutters and drops frame rates during the knowledge graph canvas rendering.📊 Impact
Eliminates thousands of object allocations per minute in hot loops, drastically reducing GC pauses and producing much smoother and consistent canvas rendering, particularly for graphs with higher node counts.
🔬 Measurement
Run the application and navigate to
/explore. Using Chrome DevTools Performance tab, record the rendering over several seconds. Notice the removal of "minor GC" blocks that previously spiked on every frame allocation during the simulation loop.PR created automatically by Jules for task 15446805154286869716 started by @servathadi