Merge lp://staging/~stephen-j-boddy/terminator/performance-tweaks into lp://staging/terminator/trunk

Proposed by Stephen Boddy
Status: Merged
Merged at revision: 1220
Proposed branch: lp://staging/~stephen-j-boddy/terminator/performance-tweaks
Merge into: lp://staging/terminator/trunk
Diff against target: 260 lines (+68/-30)
7 files modified
terminatorlib/container.py (+3/-1)
terminatorlib/factory.py (+20/-8)
terminatorlib/notebook.py (+2/-2)
terminatorlib/paned.py (+2/-2)
terminatorlib/terminal.py (+21/-7)
terminatorlib/util.py (+0/-8)
terminatorlib/window.py (+20/-2)
To merge this branch: bzr merge lp://staging/~stephen-j-boddy/terminator/performance-tweaks
Reviewer Review Type Date Requested Status
Chris Jones (community) Approve
Review via email: mp+51017@code.staging.launchpad.net

Description of the change

Greatly improve performance when dragging splitters in complex layouts.

Test case is a 4x5 grid, created with 4 x Ctrl+o, then 3 x Ctrl+e in each of
the 5 terminals. This is then saved as a layout and loaded on each test.
Once loaded and CPU drops, grab the first horizontal splitter, and move the
mouse around in a circle quickly enough to outpace the lagging splitter for
approx 15 seconds. This will max the CPU out regardless and, before these
improvements, will be /very/ laggy.

To post a comment you must log in.
Revision history for this message
Stephen Boddy (stephen-j-boddy) wrote :

I didn't mention it before, but I used profiling to investigate and verify these improvements, with some neat scripts that will generate call graphs and reports. I can add those as another revision if you think they'd be useful.

To give you an idea:
rev 1186 makes the factory isinstance method ~51 times faster.
rev 1187 means the factory __init__ method is called ~1/265 th
rev 1188 is ~10x faster finding the window of the current widget
rev 1189 is difficult to quantify, suffice to say it makes a huge difference in the interactivity.

Revision history for this message
Chris Jones (cmsj) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.