# HG changeset patch # User Georges Racinet # Date 1606853153 -3600 # Node ID 843e1df7912fdb2fcd618007f936259d374043e3 # Parent aa905c52ede5fba5eac56015a7042b9d41869a19 head-checking: micro-optimize _filter_obsolete_heads We move the branch name retrieval after the early continue: it was not needed before. On my PyPy clone, this saves about 1.4ms in the time to run _filter_obsolete_heads() for the branchmap entries of the default branch. PyPy having lots of closed branches, for the complete analysis that Heptapod currently performs on each push for PyPy, this gains around 100ms (2.5% for a total time around 4s). All those figures on my workstation. diff -r aa905c52ede5 -r 843e1df7912f hgext3rd/evolve/headchecking.py --- a/hgext3rd/evolve/headchecking.py Sun Dec 13 09:46:16 2020 -0800 +++ b/hgext3rd/evolve/headchecking.py Tue Dec 01 21:05:53 2020 +0100 @@ -140,12 +140,14 @@ while old_heads: rh = old_heads.pop() ctx = repo[rh] - current_name = _get_branch_name(ctx) + # run this check early to skip the evaluation of the whole branch if not ctx.obsolete(): new_heads.append(rh) continue + current_name = _get_branch_name(ctx) + # Get all revs/nodes on the branch exclusive to this head # (already filtered heads are "ignored")) sections_revs = repo.revs(