Closed Bug 1578790 Opened 7 months ago Closed 6 months ago

Project Search Performance Regressions

Categories

(DevTools :: Debugger, defect, P2)

defect

Tracking

(firefox71 fixed)

RESOLVED FIXED
Firefox 71
Tracking Status
firefox71 --- fixed

People

(Reporter: davidwalsh, Assigned: bhackett1024)

References

(Blocks 2 open bugs)

Details

(Whiteboard: [debugger-mvp])

Attachments

(2 files)

Blocks: dbg-perf
Blocks: dbg-71
Priority: -- → P2
Whiteboard: [debugger-mvp]

Logan, it looks like the first regression might have been caused by Bug 1541631. I wonder if there was a regression in loading sources after the memoization work landed?

Flags: needinfo?(loganfsmyth)
Duplicate of this bug: 1585051
Assignee: nobody → bhackett1024

With some preliminary investigation here the regression is definitely real. If I isolate this DAMP test I get 3860 ms (averaged across 5 runs) in a revision from mid-July, and 9002 ms currently (2.3x worse). That time corresponds with how long the search takes to complete, and watching the browser things are a lot slower now.

The issue here is that doing a text search of the project loads the text of every source, and in doing so also loads the breakpoint positions of all those sources. Breakpoint position loading has changed quite a bit in the last couple months, and new features like bug 1572280 add overhead that will be hard to remove. I think the problem here is that doing a text search of the project doesn't actually need to know where the breakpoint positions are, and fetching the breakpoint positions for all sources when doing a search is wasted work. If I take a current build and comment out the call to setBreakableLines() in loadSourceTextPromise(), the average time comes down to 3342 ms, 15% better than it was in mid-July. Eventually we might want to make getting breakpoint positions faster, but when doing it only for sources that the user is actually viewing the cost of doing this should be a lot less.

Flags: needinfo?(loganfsmyth)
Pushed by bhackett@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/057b59fdadad
Don't fetch breakpoint positions unless they are needed, r=jlast.
Status: NEW → RESOLVED
Closed: 6 months ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 71
You need to log in before you can comment on or make changes to this bug.