⚡ perf: optimize newly visible node lookup in Graph Tab#11
Conversation
Refactor `newlyVisible` node processing in `graph-tab.tsx` to use Hash Maps and Hash Sets for lookup instead of $O(N)$ linear array finds (`Array.prototype.find`). This optimization drops the inner loops from $O(N \cdot M)$ down to $O(N + M)$. In benchmarking against large synthetic data arrays, runtime dropped from 2.6s to 150ms (~17x improvement). Co-authored-by: threehymns <70611435+threehymns@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. |
⚡ Optimize newly visible node lookup in Graph Tab
💡 What: Replaced the inner linear array search$O(1)$ Hash Map/Set lookups.
find()functions inside thenewlyVisiblemap loop with🎯 Why: To drastically improve the performance of graph rendering for large repositories with many linked nodes, effectively resolving CPU hanging bottlenecks.
📊 Measured Improvement: Utilizing a standalone benchmark loop simulating 5,000 raw nodes and 10,000 links, processing 10 loops of 1,000 newly visible nodes saw a performance improvement from 2.67s down to 158.24ms (an ~17x reduction in CPU time).
PR created automatically by Jules for task 15750038895319894379 started by @threehymns