# HG changeset patch # User Lucas Moscovicz # Date 1391556717 28800 # Node ID 659b8d8ddf197873acdde797e0f551b7b1dcf440 # Parent 5840da876235deb09760939729c6d52fe5357c23 revset: added cache to lazysets This allows __contains__ to return faster when asked for same value twice. diff -r 5840da876235 -r 659b8d8ddf19 mercurial/revset.py --- 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