~bzr-pqm/bzr/bzr.dev

Viewing all changes in revision 1185.33.55.

[patch] weave fetch optimizations (Goffredo Baroncelli)

The patch adds 2 optimizations:

1) The patch add a hash ( file_ids_names ) which caches the revision
contained in a weave already  processed, so it isn't needed to reload the
weave in order to check if a revision is present.

2) Moreover if it is required to merge a remote weave without a correspondent
weave in the local branch, the merge phase is skipped and the remote weave is
copied into the repository without other action.

The test below highlights a gain of 3x of user time, against a repository with
a history of 2548 revisions and 350 files. The repository is in the same machine,
 which is a Duron 700MHz w/ 384MB of ram.

$ # w/ patch
$ time bzr branch http://kreijack.homelinux.net:8077/bazaar/hgweb_devel/
Branched 1279 revision(s).

real    59m9.511s
user    40m14.090s
sys     1m57.430s

$ # w/o patch
$ time bzr branch http://kreijack.homelinux.net:8077/bazaar/hgweb_devel/
Branched 1279 revision(s).

real    147m34.191s
user    122m10.273s
sys     5m43.247s

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: