Merge lp:~ian-clatworthy/bzr/faster-log-file into lp:~bzr/bzr/trunk-old
Proposed by
Ian Clatworthy
Status: | Superseded |
---|---|
Proposed branch: | lp:~ian-clatworthy/bzr/faster-log-file |
Merge into: | lp:~bzr/bzr/trunk-old |
Diff against target: |
180 lines (has conflicts)
Text conflict in bzrlib/log.py |
To merge this branch: | bzr merge lp:~ian-clatworthy/bzr/faster-log-file |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
John A Meinel | Needs Information | ||
Review via email: mp+6805@code.launchpad.net |
This proposal has been superseded by a proposal from 2009-06-17.
To post a comment you must log in.
Unmerged revisions
- 4387. By Ian Clatworthy
-
add NEWS item
- 4386. By Ian Clatworthy
-
avoid looking back too far for files created in merge revisions
- 4385. By Ian Clatworthy
-
merge bzr.dev r4446
- 4384. By Ian Clatworthy
-
faster log file -n0 for flat file history
- 4383. By Ian Clatworthy
-
speed up log file on flat-ish histories
- 4382. By Canonical.com Patch Queue Manager <email address hidden>
-
(vila) Fix blatant performance regression for annotate in gc repos
- 4381. By Canonical.com Patch Queue Manager <email address hidden>
-
(Jelmer) Add registry for the 'bzr serve' protocol.
- 4380. By Canonical.com Patch Queue Manager <email address hidden>
-
(igc) two simple log dotted revno tests (Marius Kruger)
- 4379. By Canonical.com Patch Queue Manager <email address hidden>
-
(tanner) merge 1.15final back to trunk
- 4378. By Canonical.com Patch Queue Manager <email address hidden>
-
(igc) faster branch in a shared repo for dev6rr format (Ian
Clatworthy)
This patch speeds up 'bzr log FILE' on flat-ish histories, as commonly found after an import from svn, cvs and other central VCS tools. On OOo, it drops the time taken down from 29 seconds to 1.5 seconds for logging a typical file.
The key to this improvement is starting with the per-file graph and searching the mainline until the revisions of interest are found. That works very well when the history of a project is flat or mostly flat, because it avoids the 27 seconds required to calculate the full revision graph. In a nutshell, the algorithm changes from O(full-history) to O(file-life).
There's certainly room for further smarts here but this is a useful step forward as it stands I feel.