[PATCH 04 of 22] obsstore: minor optimization for the obsolete revset
Gregory Szorc
gregory.szorc at gmail.com
Tue Jun 6 02:05:03 EDT 2017
On Sun, Jun 4, 2017 at 4:59 PM, Jun Wu <quark at fb.com> wrote:
> # HG changeset patch
> # User Jun Wu <quark at fb.com>
> # Date 1496457147 25200
> # Fri Jun 02 19:32:27 2017 -0700
> # Node ID e1d6126ed614db6ec664c79afcb3a141c9a0dfa4
> # Parent d492628229c58f8417a8b5925a614e26a16465af
> # Available At https://bitbucket.org/quark-zju/hg-draft
> # hg pull https://bitbucket.org/quark-zju/hg-draft -r
> e1d6126ed614
> obsstore: minor optimization for the obsolete revset
>
Queued 4-7.
I wish this one had perf numbers in the commit message. But the patch looks
correct and avoiding attribute lookups in loops like this is a good
practice.
>
> Use local variables in a loop.
>
> diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
> --- a/mercurial/obsolete.py
> +++ b/mercurial/obsolete.py
> @@ -1278,10 +1278,8 @@ def clearobscaches(repo):
> def _computeobsoleteset(repo):
> """the set of obsolete revisions"""
> - obs = set()
> getnode = repo.changelog.node
> notpublic = repo._phasecache.getrevset(repo, (phases.draft,
> phases.secret))
> - for r in notpublic:
> - if getnode(r) in repo.obsstore.successors:
> - obs.add(r)
> + isobs = repo.obsstore.successors.__contains__
> + obs = set(r for r in notpublic if isobs(getnode(r)))
> return obs
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20170605/088a0f95/attachment.html>
More information about the Mercurial-devel
mailing list