Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revset.py @ 20512:659b8d8ddf19
revset: added cache to lazysets
This allows __contains__ to return faster when asked for same value twice.
author | Lucas Moscovicz <lmoscovicz@fb.com> |
---|---|
date | Tue, 04 Feb 2014 15:31:57 -0800 |
parents | 2efd608473fb |
children | 1850a7f5fb66 |
line wrap: on
line diff
--- a/mercurial/revset.py Sat Feb 15 19:12:53 2014 -0600 +++ b/mercurial/revset.py Tue Feb 04 15:31:57 2014 -0800 @@ -2117,9 +2117,13 @@ def __init__(self, subset, condition): self._subset = subset self._condition = condition + self._cache = {} def __contains__(self, x): - return x in self._subset and self._condition(x) + c = self._cache + if x not in c: + c[x] = x in self._subset and self._condition(x) + return c[x] def __iter__(self): cond = self._condition