Mercurial > hg
changeset 18639:5774732bb5e5
merge: apply non-interactive working dir updates in parallel
This has a big effect on the performance of working dir updates.
Here are the results of update from null to the given rev in several
repos, on a Linux 3.2 system with 32 cores running ext4, with the progress
extension enabled.
repo rev plain parallel speedup
hg 7068089c95a2 0.9 0.3 3
mozilla-central fe1600b22c77 42.8 7.7 5.5
linux-2.6 9ef4b770e069 31.4 4.9 6.4
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Sat, 09 Feb 2013 15:51:32 -0800 |
parents | 047110c0e2a8 |
children | a8648f32b8ed |
files | mercurial/merge.py |
diffstat | 1 files changed, 4 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/merge.py Sat Feb 09 15:51:32 2013 -0800 +++ b/mercurial/merge.py Sat Feb 09 15:51:32 2013 -0800 @@ -7,7 +7,7 @@ from node import nullid, nullrev, hex, bin from i18n import _ -import error, util, filemerge, copies, subrepo +import error, util, filemerge, copies, subrepo, worker import errno, os, shutil class mergestate(object): @@ -432,7 +432,9 @@ subrepo.submerge(repo, wctx, mctx, wctx, overwrite) z = 0 - for i, item in getremove(repo, mctx, overwrite, workeractions): + prog = worker.worker(repo.ui, 0.001, getremove, (repo, mctx, overwrite), + workeractions) + for i, item in prog: z += i repo.ui.progress(_('updating'), z, item=item, total=numupdates, unit=_('files'))