##// END OF EJS Templates
perf: rely on repoview for perfbranchmapupdate...
Boris Feld -
r40806:b059388d default
parent child Browse files
Show More
@@ -2298,8 +2298,10 b' def perfbranchmapupdate(ui, repo, base=('
2298 $ hg perfbranchmapupdate --base 'stable' --target 'default'
2298 $ hg perfbranchmapupdate --base 'stable' --target 'default'
2299 """
2299 """
2300 from mercurial import branchmap
2300 from mercurial import branchmap
2301 from mercurial import repoview
2301 opts = _byteskwargs(opts)
2302 opts = _byteskwargs(opts)
2302 timer, fm = gettimer(ui, opts)
2303 timer, fm = gettimer(ui, opts)
2304 unfi = repo.unfiltered()
2303 x = [None] # used to pass data between closure
2305 x = [None] # used to pass data between closure
2304
2306
2305 # we use a `list` here to avoid possible side effect from smartset
2307 # we use a `list` here to avoid possible side effect from smartset
@@ -2322,21 +2324,43 b' def perfbranchmapupdate(ui, repo, base=('
2322 newrevs = list(alltargetrevs.difference(allbaserevs))
2324 newrevs = list(alltargetrevs.difference(allbaserevs))
2323 newrevs.sort()
2325 newrevs.sort()
2324
2326
2327 allrevs = frozenset(unfi.changelog.revs())
2328 basefilterrevs = frozenset(allrevs.difference(allbaserevs))
2329 targetfilterrevs = frozenset(allrevs.difference(alltargetrevs))
2330
2331 def basefilter(repo, visibilityexceptions=None):
2332 return basefilterrevs
2333
2334 def targetfilter(repo, visibilityexceptions=None):
2335 return targetfilterrevs
2336
2325 msg = b'benchmark of branchmap with %d revisions with %d new ones\n'
2337 msg = b'benchmark of branchmap with %d revisions with %d new ones\n'
2326 ui.status(msg % (len(allbaserevs), len(newrevs)))
2338 ui.status(msg % (len(allbaserevs), len(newrevs)))
2339 if targetfilterrevs:
2340 msg = b'(%d revisions still filtered)\n'
2341 ui.status(msg % len(targetfilterrevs))
2327
2342
2328 if True:
2343 try:
2344 repoview.filtertable[b'__perf_branchmap_update_base'] = basefilter
2345 repoview.filtertable[b'__perf_branchmap_update_target'] = targetfilter
2346
2347 baserepo = repo.filtered(b'__perf_branchmap_update_base')
2348 targetrepo = repo.filtered(b'__perf_branchmap_update_target')
2349
2329 base = branchmap.branchcache()
2350 base = branchmap.branchcache()
2330 base.update(repo, allbaserevs)
2351 base.update(baserepo, allbaserevs)
2331
2352
2332 def setup():
2353 def setup():
2333 x[0] = base.copy()
2354 x[0] = base.copy()
2334
2355
2335 def bench():
2356 def bench():
2336 x[0].update(repo, newrevs)
2357 x[0].update(targetrepo, newrevs)
2337
2358
2338 timer(bench, setup=setup)
2359 timer(bench, setup=setup)
2339 fm.end()
2360 fm.end()
2361 finally:
2362 repoview.filtertable.pop(b'__perf_branchmap_update_base', None)
2363 repoview.filtertable.pop(b'__perf_branchmap_update_target', None)
2340
2364
2341 @command(b'perfbranchmapload', [
2365 @command(b'perfbranchmapload', [
2342 (b'f', b'filter', b'', b'Specify repoview filter'),
2366 (b'f', b'filter', b'', b'Specify repoview filter'),
General Comments 0
You need to be logged in to leave comments. Login now