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

Reply via email to