Hello,
We have a large repository (>130,000 changesets, 165 heads, ~3.5GB bundled with
zstd). For the most part Mercurial performs very well for us. However, we
noticed a significant slowdown in cloning when upgrading to Mercurial 5.7.1.
Upon investigation I determined that this was due to warming the tags cache,
which was added (among updating all caches) in this changeset:
https://www.mercurial-scm.org/repo/hg/rev/95a615dd77bf
I posted about this in the general list, but didn't fully understand the issue
at that point, and having investigated further, thought I'd try the developer
list now - apologies if I'm using the wrong list.
As you can see in the attached logs (using Powershell syntax), warming the
cache adds ~10 seconds to a clone of the Mercurial source
(https://www.mercurial-scm.org/repo/hg) on my machine, dominating the
processing time for a hardlink clone. If the cache has already been warmed on
the source repo, and it's a local non-pull clone, then the cache copy mostly
eliminates this. However, it is impossible to eliminate this for a pull clone.
In our case the additional time is over 20 minutes, approximately doubling the
time to clone. For https://hg.mozilla.org/mozilla-central it adds around 3
minutes.
Warming the tags cache doesn't seem to provide any benefit for a simple hg tags
call, which takes under a tenth of a second in all cases; presumably there will
be some situations in which it is beneficial (perhaps creating a new head from
a non-head?), but it doesn't seem worth slowing down the clone this much.
Warming the other caches doesn't appear in the profile, so perhaps those could
still be done on clone, just not the tags.
Best regards,
Kim Randell
> pip install mercurial==5.6.1
> hg clone -U https://www.mercurial-scm.org/repo/hg
> hg -R hg debugtagscache
0 9117c6561b0bd7792fa13b50d28239d51b78e51f missing/invalid
... all missing/invalid
46994 e846261413d0dfc2c0bb696c830f10fe9e586e1d missing/invalid
46995 01264552a1dc163161a334c2568f3a68bf06e355
6379bb39250b74feb34799d2004fac938d859ed6
> hg -R hg tags --time > $null
time: real 0.089 secs (user 0.047+0.000 sys 0.016+0.000)
> hg clone -U --profile hg hg2
| 100.0% 1.11s dispatch.py: _callcatch line 43: dispatch.run()
| 100.0% 1.11s scmutil.py: callcatch line 488: return
scmutil.callcatch(ui...
| 100.0% 1.11s dispatch.py: _runcatchfunc line 153: return func()
| 100.0% 1.11s extensions.py: loadall line 469: return
_dispatch(req)
| 94.4% 1.05s share.py: clone line 189: return orig(ui,
repo, *args...
| 94.4% 1.05s commands.py: clone line 139: return orig(ui,
source, *ar...
| 94.4% 1.05s hg.py: clone line 1908:
depth=opts.get(b'depth') or...
| 87.3% 0.97s hg.py: copystore line 853: destlock =
copystore(ui, sr...
| 87.3% 0.97s util.py: copyfiles line 472: srcvfs.join(f),
dstvfs.join...
| 87.3% 0.97s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
| 84.5% 0.94s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
\ 42.3% 0.47s win32.py: oslink line 1979: oslink(src, dst)
\ 35.2% 0.39s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
\ 19.7% 0.22s win32.py: oslink line 1979: oslink(src, dst)
\ 11.3% 0.12s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
| 8.5% 0.09s win32.py: oslink line 1979: oslink(src, dst)
---
Sample count: 60
Total time: 1.109375 seconds (0.000000 wall)
> hg -R hg2 tags --time > $null
time: real 0.040 secs (user 0.047+0.000 sys 0.000+0.000)
> hg clone -U --profile --pull hg hg3
requesting all changes
adding changesets
adding manifests
adding file changes
added 46996 changesets with 91887 changes to 3681 files
new changesets 9117c6561b0b:01264552a1dc
\ 86.5% 34.02s dispatch.py: _callcatch line 43: dispatch.run()
| 86.5% 34.02s scmutil.py: callcatch line 488: return
scmutil.callcatch(ui...
| 86.5% 34.02s dispatch.py: _runcatchfunc line 153: return func()
| 86.5% 34.02s extensions.py: loadall line 469: return
_dispatch(req)
| 86.3% 33.92s share.py: clone line 189: return orig(ui,
repo, *args...
| 86.3% 33.92s commands.py: clone line 139: return orig(ui,
source, *ar...
| 86.3% 33.92s hg.py: clone line 1908:
depth=opts.get(b'depth') or...
| 86.2% 33.89s exchange.py: pull line 935: depth=depth,
| 82.7% 32.50s exchange.py: _fullpullbundle2line 1827:
_fullpullbundle2(repo, pullop)
| 82.7% 32.50s exchange.py: _pullbundle2 line 1693:
_pullbundle2(pullop)
| 81.7% 32.12s bundle2.py: processbundle line 2030:
bundle2.processbundle(pullo...
| 81.7% 32.12s bundle2.py: processparts line 479:
processparts(repo, op, unbu...
| 81.7% 32.12s bundle2.py: _processpart line 487: _processpart(op,
part)
| 81.7% 32.12s bundle2.py: handlerbc line 556: handler(op, part)
| 80.6% 31.67s bundle2.py: _processchangegroupline 1999: **extrakwargs
| 80.6% 31.67s changegroup.py: apply line 491: ret =
cg.apply(op.repo, tr,...
\ 43.6% 17.16s changegroup.py: _addchangegroupfilesline 366: repo, self,
revmap, trp, ef...
| 43.0% 16.89s localrepo.py: file line 1665: if not
fl.addgroup(deltas, ...
| 42.3% 16.64s revlog.py: addgroup line 153: deltas,
linkmapper, transac...
\ 27.8% 10.92s revlog.py: _addrevisionline 2470:
deltacomputer=deltacomputer,
\ 13.0% 5.12s deltas.py: finddeltainfoline 2308: deltainfo =
deltacomputer.f...
| 5.8% 2.28s deltas.py: _builddeltainfoline 1075:
candidatedelta = self._buil...
\ 11.4% 4.48s revlog.py: _writeentryline 2324: transaction,
ifh, dfh, entr...
\ 8.5% 3.33s revlog.py: _addrevisionline 2412: for data in
deltas:
| 7.5% 2.94s changegroup.py: <lambda>line 486: for chunkdata in
iter(lambd...
| 7.4% 2.92s changegroup.py: deltachunkline 486: for chunkdata
in iter(lambd...
| 6.3% 2.48s util.py: readexactlyline 203: delta =
readexactly(self._s...
| 6.3% 2.47s bundle2.py: read line 3522: s =
stream.read(n)
| 6.3% 2.47s util.py: read line 1449: data =
self._payloadstream....
| 6.3% 2.47s util.py: splitbigline 2635: for chunk in
self.iter:
| 6.3% 2.47s bundle2.py: decodepayloadchunksline 2606:
for chunk in chunks:
| 6.3% 2.47s util.py: read line 1326: s =
read(headersize)
| 6.3% 2.47s util.py: splitbigline 2635: for chunk in
self.iter:
| 6.2% 2.45s bundle2.py: getchunksline 2606: for chunk in
chunks:
| 6.2% 2.45s bundle2.py: _getcorechunkline 703:
self._getcorechunk(), self....
| 6.2% 2.44s bundle2.py: getchunksline 725: for chunk in
part.getchunks...
| 6.2% 2.44s bundle2.py: _payloadchunksline 1158: for chunk
in self._payloadc...
| 6.1% 2.39s util.py: read line 1205: chunk =
buff.read(preferedc...
| 5.4% 2.14s util.py: splitbigline 2635: for chunk in
self.iter:
| 5.2% 2.06s changegroup.py: generateline 2606: for chunk in
chunks:
\ 18.8% 7.38s changegroup.py: _unpackmanifestsline 349:
self._unpackmanifests(repo,...
| 18.8% 7.38s manifest.py: addgroup line 260:
repo.manifestlog.getstorage...
| 18.8% 7.38s revlog.py: addgroup line 1837: deltas,
linkmapper, transac...
| 14.0% 5.52s revlog.py: iscensored line 2470:
deltacomputer=deltacomputer,
\ 6.6% 2.59s deltas.py: finddeltainfoline 2308: deltainfo =
deltacomputer.f...
\ 5.7% 2.23s revlog.py: _writeentryline 2324: transaction,
ifh, dfh, entr...
\ 17.4% 6.86s revlog.py: addgroup line 325: cgnodes =
cl.addgroup(delta...
\ 11.1% 4.36s changegroup.py: csmap line 2470:
deltacomputer=deltacomputer,
| 7.4% 2.92s revlog.py: _writeentryline 2324: transaction,
ifh, dfh, entr...
\ 5.6% 2.19s revlog.py: _addrevisionline 2412: for data in
deltas:
\ 5.1% 2.00s changegroup.py: <lambda> line 488: yield chunkdata
| 5.1% 2.00s changegroup.py: deltachunk line 486: for chunkdata in
iter(lambd...
---
Sample count: 2103
Total time: 39.312500 seconds (0.000000 wall)
> hg -R hg3 tags --time > $null
time: real 0.058 secs (user 0.062+0.000 sys 0.000+0.000)
> pip install mercurial==5.7.1
> hg clone -U --profile hg hg4
| 97.3% 8.91s hg: <module> line 59: dispatch.run()
| 97.3% 8.91s dispatch.py: _rundispatch line 289: ret =
_runcatch(req) or 0
| 97.3% 8.91s dispatch.py: _callcatch line 475: return
scmutil.callcatch(ui...
| 97.3% 8.91s scmutil.py: callcatch line 155: return func()
| 97.3% 8.91s dispatch.py: _runcatchfunc line 455: return
_dispatch(req)
| 96.1% 8.80s sparse.py: _clonesparsecmd line 189: return orig(ui,
repo, *args...
| 96.1% 8.80s share.py: clone line 163: return orig(ui,
source, *ar...
| 96.1% 8.80s commands.py: clone line 1938:
depth=opts.get(b'depth') or...
\ 84.6% 7.75s hg.py: clone line 1048:
destrepo.updatecaches(full=...
| 84.6% 7.75s localrepo.py: wrapper line 200: return
orig(repo.unfiltered...
| 83.4% 7.64s localrepo.py: updatecaches line 2712:
tagsmod.fnoderevs(self.ui, ...
| 82.8% 7.58s tags.py: fnoderevs line 94: fnodes =
_getfnodes(ui, rep...
| 82.6% 7.56s tags.py: _getfnodes line 498: fnode =
fnodescache.getfnod...
\ 45.1% 4.12s tags.py: getfnode line 793: fnode =
mctx.readfast().get...
\ 21.8% 2.00s manifest.py: readfast line 2090: return self.read()
\ 15.0% 1.38s manifest.py: read line 2072: text =
store.revision(self....
| 15.0% 1.38s manifest.py: revision, line 1804: return
self._revlog.revisio...
| 14.7% 1.34s revlog.py: revision, line 1848: return
self._revisiondata(n...
| 14.7% 1.34s revlog.py: _revisiondata, line 1874: rev,
rawtext, validated = s...
| 14.7% 1.34s revlog.py: _rawtext, line 1943: bins =
self._chunks(chain, ...
| 11.3% 1.03s revlog.py: _chunks line 1765:
ladd(decomp(buffer(data, ch...
| 9.7% 0.89s revlog.py: decompress, line 2220: return
_zlibdecompress(data)
\ 5.8% 0.53s manifest.py: read line 2075: self._data =
manifestdict(t...
\ 14.0% 1.28s context.py: manifestctx line 193: return
self._manifestctx
| 14.0% 1.28s context.py: _manifestctx, line 545: return
self._repo.manifestl...
\ 7.2% 0.66s util.py: __get__ line 1749: return result
| 7.0% 0.64s context.py: _changeset, line 537: return
repo.changelog.chang...
| 6.8% 0.62s changelog.py: changelogrevision, line 526:
text, sidedata, self._copie...
\ 5.5% 0.50s manifest.py: __getitem__, line 1936: return
self.get(b'', node)
\ 7.8% 0.72s manifest.py: readfast line 2089: return
self.readdelta()
\ 15.2% 1.39s tags.py: getfnode line 792: mctx =
ctx.manifestctx()
| 10.9% 1.00s context.py: manifestctx line 193: return
self._manifestctx
| 10.9% 1.00s context.py: _manifestctx, line 545: return
self._repo.manifestl...
| 8.9% 0.81s util.py: __get__ line 1747: result =
self.func(obj)
| 8.7% 0.80s context.py: _changeset line 537: return
repo.changelog.chang...
\ 8.4% 0.77s tags.py: getfnode line 805: return fnode
| 7.7% 0.70s manifest.py: readfast line 2089: return
self.readdelta()
| 7.7% 0.70s manifest.py: readdelta line 2102: return
manifestdict(d)
| 6.0% 0.55s manifest.py: __init__ line 474: self._lm =
_lazymanifest(data)
\ 10.6% 0.97s hg.py: clone line 864: destlock =
copystore(ui, sr...
| 10.6% 0.97s hg.py: copystore line 476: srcvfs.join(f),
dstvfs.join...
| 10.4% 0.95s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
| 10.1% 0.92s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
---
Sample count: 528
Total time: 9.156250 seconds (0.000000 wall)
> hg -R hg4 tags --time > $null
time: real 0.071 secs (user 0.031+0.000 sys 0.016+0.000)
> hg clone -U --profile --pull hg hg5
requesting all changes
adding changesets
adding manifests
adding file changes
added 46996 changesets with 91887 changes to 3681 files
new changesets 9117c6561b0b:01264552a1dc
| 87.9% 43.91s hg: <module> line 59: dispatch.run()
| 87.9% 43.91s dispatch.py: _rundispatch line 289: ret =
_runcatch(req) or 0
| 87.9% 43.91s dispatch.py: _callcatch line 475: return
scmutil.callcatch(ui...
| 87.9% 43.91s scmutil.py: callcatch line 155: return func()
| 87.9% 43.91s dispatch.py: _runcatchfunc line 455: return
_dispatch(req)
| 87.7% 43.81s sparse.py: _clonesparsecmd line 189: return orig(ui,
repo, *args...
| 87.7% 43.81s share.py: clone line 163: return orig(ui,
source, *ar...
| 87.7% 43.81s commands.py: clone line 1938:
depth=opts.get(b'depth') or...
\ 71.8% 35.89s hg.py: clone line 949: depth=depth,
| 68.9% 34.45s exchange.py: pull line 1630:
_fullpullbundle2(repo, pullop)
| 68.9% 34.45s exchange.py: _fullpullbundle2, line 1496:
_pullbundle2(pullop)
| 68.1% 34.05s exchange.py: _pullbundle2 line 1833:
bundle2.processbundle(pullo...
| 68.1% 34.05s bundle2.py: processbundle line 483:
processparts(repo, op, unbu...
| 68.1% 34.05s bundle2.py: processparts line 491: _processpart(op,
part)
| 68.1% 34.05s bundle2.py: _processpart line 565: handler(op, part)
| 67.3% 33.61s bundle2.py: handlechangegroup, line 2007: **extrakwargs
| 67.3% 33.61s bundle2.py: _processchangegroup, line 495: ret =
cg.apply(op.repo, tr,...
\ 37.5% 18.75s changegroup.py: apply line 375: repo, self,
revmap, trp, ef...
| 36.6% 18.31s changegroup.py: _addchangegroupfiles, line 1675: if not
fl.addgroup(deltas, ...
| 35.9% 17.92s filelog.py: addgroup line 158:
duplicaterevisioncb=duplica...
\ 23.7% 11.84s revlog.py: addgroup line 2479:
deltacomputer=deltacomputer,
\ 10.3% 5.16s revlog.py: _addrevision, line 2310: deltainfo =
deltacomputer.f...
| 6.3% 3.12s deltas.py: finddeltainfo, line 1075:
candidatedelta = self._buil...
\ 9.9% 4.97s revlog.py: _addrevision, line 2326:
transaction, ifh, dfh, entr...
\ 8.4% 4.22s revlog.py: addgroup line 2420: for data in
deltas:
| 7.1% 3.56s changegroup.py: <lambda>, line 496: for chunkdata
in iter(lambd...
| 7.1% 3.56s changegroup.py: <lambda>, line 496: for chunkdata
in iter(lambd...
| 5.7% 2.86s changegroup.py: deltachunk, line 203: delta =
readexactly(self._s...
| 5.6% 2.78s util.py: readexactly, line 3522: s =
stream.read(n)
| 5.6% 2.78s bundle2.py: read line 1458: data =
self._payloadstream....
| 5.6% 2.78s util.py: read line 2635: for chunk in
self.iter:
| 5.6% 2.78s util.py: splitbig, line 2606: for chunk in
chunks:
| 5.6% 2.78s bundle2.py: decodepayloadchunks, line 1335: s =
read(headersize)
| 5.6% 2.78s util.py: read line 2635: for chunk in
self.iter:
| 5.6% 2.78s util.py: splitbig, line 2606: for chunk in
chunks:
| 5.5% 2.77s bundle2.py: getchunks, line 712:
self._getcorechunk(), self....
| 5.5% 2.77s bundle2.py: _getcorechunk, line 734: for chunk
in part.getchunks...
| 5.5% 2.77s bundle2.py: getchunks, line 1167: for chunk in
self._payloadc...
| 5.5% 2.73s bundle2.py: _payloadchunks, line 1214: chunk =
buff.read(preferedc...
\ 15.4% 7.72s changegroup.py: apply line 358:
self._unpackmanifests(repo,...
| 15.4% 7.72s changegroup.py: _unpackmanifests, line 260:
repo.manifestlog.getstorage...
| 15.4% 7.72s manifest.py: addgroup line 1847:
duplicaterevisioncb=duplica...
| 11.9% 5.94s revlog.py: addgroup line 2479:
deltacomputer=deltacomputer,
| 6.0% 2.98s revlog.py: _addrevision, line 2310: deltainfo =
deltacomputer.f...
\ 13.8% 6.89s changegroup.py: apply line 335:
duplicaterevisioncb=ondupch...
| 8.3% 4.16s revlog.py: addgroup line 2479:
deltacomputer=deltacomputer,
| 5.4% 2.70s revlog.py: _addrevision, line 2326: transaction,
ifh, dfh, entr...
\ 15.7% 7.86s hg.py: clone line 1048:
destrepo.updatecaches(full=...
| 15.7% 7.86s localrepo.py: wrapper line 200: return
orig(repo.unfiltered...
| 15.5% 7.75s localrepo.py: updatecaches line 2712:
tagsmod.fnoderevs(self.ui, ...
| 15.4% 7.72s tags.py: fnoderevs line 94: fnodes =
_getfnodes(ui, rep...
| 15.4% 7.72s tags.py: _getfnodes line 498: fnode =
fnodescache.getfnod...
| 8.7% 4.36s tags.py: getfnode line 793: fnode =
mctx.readfast().get...
---
Sample count: 2767
Total time: 49.968750 seconds (0.000000 wall)
> hg -R hg debugupdatecaches
> hg clone -U --profile hg hg6
| 100.0% 1.52s hg: <module> line 59: dispatch.run()
| 100.0% 1.52s dispatch.py: _rundispatch line 289: ret =
_runcatch(req) or 0
| 100.0% 1.52s dispatch.py: _callcatch line 475: return
scmutil.callcatch(ui...
| 100.0% 1.52s scmutil.py: callcatch line 155: return func()
| 100.0% 1.52s dispatch.py: _runcatchfunc line 455: return
_dispatch(req)
| 94.8% 1.44s sparse.py: _clonesparsecmd line 189: return orig(ui,
repo, *args...
| 94.8% 1.44s share.py: clone line 163: return orig(ui,
source, *ar...
| 94.8% 1.44s commands.py: clone line 1938:
depth=opts.get(b'depth') or...
\ 67.0% 1.02s hg.py: clone line 864: destlock =
copystore(ui, sr...
| 66.0% 1.00s hg.py: copystore line 476: srcvfs.join(f),
dstvfs.join...
| 66.0% 1.00s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
| 66.0% 1.00s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
\ 38.1% 0.58s util.py: copyfiles line 1979: oslink(src, dst)
| 38.1% 0.58s win32.py: oslink line 439: if not
_kernel32.CreateHard...
\ 22.7% 0.34s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
\ 10.3% 0.16s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
| 7.2% 0.11s util.py: copyfiles line 1967: hardlink, n =
copyfiles(src...
| 6.2% 0.09s util.py: copyfiles line 1979: oslink(src, dst)
| 6.2% 0.09s win32.py: oslink line 439: if not
_kernel32.CreateHard...
\ 10.3% 0.16s util.py: copyfiles line 1979: oslink(src, dst)
| 10.3% 0.16s win32.py: oslink line 439: if not
_kernel32.CreateHard...
\ 24.7% 0.38s hg.py: clone line 1048:
destrepo.updatecaches(full=...
| 24.7% 0.38s localrepo.py: wrapper line 200: return
orig(repo.unfiltered...
\ 16.5% 0.25s localrepo.py: updatecaches line 2712:
tagsmod.fnoderevs(self.ui, ...
| 15.5% 0.23s tags.py: fnoderevs line 94: fnodes =
_getfnodes(ui, rep...
| 14.4% 0.22s tags.py: _getfnodes line 498: fnode =
fnodescache.getfnod...
| 7.2% 0.11s tags.py: getfnode line 767: return record[4:]
| 5.2% 0.08s localrepo.py: __getitem__ line 1840: return
context.changectx(se...
\ 7.2% 0.11s localrepo.py: updatecaches line 2704: rbc.branchinfo(r)
---
Sample count: 84
Total time: 1.531250 seconds (0.000000 wall)
> hg clone -U --profile --pull hg hg7
requesting all changes
adding changesets
adding manifests
adding file changes
added 46996 changesets with 91887 changes to 3681 files
new changesets 9117c6561b0b:01264552a1dc
| 86.2% 43.03s hg: <module> line 59: dispatch.run()
| 86.2% 43.03s dispatch.py: _rundispatch line 289: ret =
_runcatch(req) or 0
| 86.2% 43.03s dispatch.py: _callcatch line 475: return
scmutil.callcatch(ui...
| 86.2% 43.03s scmutil.py: callcatch line 155: return func()
| 86.2% 43.03s dispatch.py: _runcatchfunc line 455: return
_dispatch(req)
| 86.0% 42.94s sparse.py: _clonesparsecmd line 189: return orig(ui,
repo, *args...
| 86.0% 42.94s share.py: clone line 163: return orig(ui,
source, *ar...
| 86.0% 42.94s commands.py: clone line 1938:
depth=opts.get(b'depth') or...
\ 70.0% 34.92s hg.py: clone line 949: depth=depth,
| 67.5% 33.67s exchange.py: pull line 1630:
_fullpullbundle2(repo, pullop)
| 67.5% 33.67s exchange.py: _fullpullbundle2, line 1496:
_pullbundle2(pullop)
| 66.7% 33.27s exchange.py: _pullbundle2 line 1833:
bundle2.processbundle(pullo...
| 66.7% 33.27s bundle2.py: processbundle line 483:
processparts(repo, op, unbu...
| 66.7% 33.27s bundle2.py: processparts line 491: _processpart(op,
part)
| 66.7% 33.27s bundle2.py: _processpart line 565: handler(op, part)
| 65.7% 32.81s bundle2.py: handlechangegroup, line 2007: **extrakwargs
| 65.7% 32.81s bundle2.py: _processchangegroup, line 495: ret =
cg.apply(op.repo, tr,...
\ 36.9% 18.44s changegroup.py: apply line 375: repo, self,
revmap, trp, ef...
| 36.1% 18.03s changegroup.py: _addchangegroupfiles, line 1675: if not
fl.addgroup(deltas, ...
| 35.3% 17.64s filelog.py: addgroup line 158:
duplicaterevisioncb=duplica...
\ 23.7% 11.83s revlog.py: addgroup line 2479:
deltacomputer=deltacomputer,
\ 11.0% 5.50s revlog.py: _addrevision, line 2310: deltainfo =
deltacomputer.f...
| 6.1% 3.03s deltas.py: finddeltainfo, line 1075:
candidatedelta = self._buil...
\ 10.0% 5.00s revlog.py: _addrevision, line 2326:
transaction, ifh, dfh, entr...
\ 8.1% 4.06s revlog.py: addgroup line 2420: for data in
deltas:
| 6.6% 3.30s changegroup.py: <lambda>, line 496: for chunkdata
in iter(lambd...
| 6.6% 3.30s changegroup.py: <lambda>, line 496: for chunkdata
in iter(lambd...
| 5.4% 2.72s changegroup.py: deltachunk, line 203: delta =
readexactly(self._s...
| 5.4% 2.70s util.py: readexactly, line 3522: s =
stream.read(n)
| 5.4% 2.70s bundle2.py: read line 1458: data =
self._payloadstream....
| 5.4% 2.70s util.py: read line 2635: for chunk in
self.iter:
| 5.4% 2.70s util.py: splitbig, line 2606: for chunk in
chunks:
| 5.4% 2.70s bundle2.py: decodepayloadchunks, line 1335: s =
read(headersize)
| 5.4% 2.69s util.py: read line 2635: for chunk in
self.iter:
| 5.4% 2.69s util.py: splitbig, line 2606: for chunk in
chunks:
| 5.4% 2.69s bundle2.py: getchunks, line 712:
self._getcorechunk(), self....
| 5.4% 2.69s bundle2.py: _getcorechunk, line 734: for chunk
in part.getchunks...
| 5.4% 2.69s bundle2.py: getchunks, line 1167: for chunk in
self._payloadc...
| 5.4% 2.67s bundle2.py: _payloadchunks, line 1214: chunk =
buff.read(preferedc...
\ 15.3% 7.64s changegroup.py: apply line 358:
self._unpackmanifests(repo,...
| 15.3% 7.64s changegroup.py: _unpackmanifests, line 260:
repo.manifestlog.getstorage...
| 15.3% 7.64s manifest.py: addgroup line 1847:
duplicaterevisioncb=duplica...
| 12.0% 5.97s revlog.py: addgroup line 2479:
deltacomputer=deltacomputer,
\ 5.6% 2.78s revlog.py: _addrevision, line 2326: transaction,
ifh, dfh, entr...
\ 5.5% 2.73s revlog.py: _addrevision, line 2310: deltainfo =
deltacomputer.f...
\ 13.0% 6.50s changegroup.py: apply line 335:
duplicaterevisioncb=ondupch...
| 7.8% 3.91s revlog.py: addgroup line 2479:
deltacomputer=deltacomputer,
\ 16.0% 7.97s hg.py: clone line 1048:
destrepo.updatecaches(full=...
| 16.0% 7.97s localrepo.py: wrapper line 200: return
orig(repo.unfiltered...
| 15.7% 7.84s localrepo.py: updatecaches line 2712:
tagsmod.fnoderevs(self.ui, ...
| 15.7% 7.83s tags.py: fnoderevs line 94: fnodes =
_getfnodes(ui, rep...
| 15.6% 7.78s tags.py: _getfnodes line 498: fnode =
fnodescache.getfnod...
| 8.4% 4.20s tags.py: getfnode line 793: fnode =
mctx.readfast().get...
---
Sample count: 2667
Total time: 49.906250 seconds (0.000000 wall)
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel