Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 20587:cb18fe3461b1
revset: changed spanset __add__ implementation to work lazily
$ time hg log -qr "first(0:tip or draft())"
...
real 0m1.032s
user 0m0.841s
sys 0m0.179s
$ time ./hg log -qr "first(0:tip or draft())"
...
real 0m0.378s
user 0m0.291s
sys 0m0.085s
author | Lucas Moscovicz <lmoscovicz@fb.com> |
---|---|
date | Thu, 13 Feb 2014 09:18:16 -0800 |
parents | 2d52f37937b0 |
children | 56ecc82fcd67 |
comparison
equal
deleted
inserted
replaced
20586:2d52f37937b0 | 20587:cb18fe3461b1 |
---|---|
2309 if isinstance(x, baseset): | 2309 if isinstance(x, baseset): |
2310 x = x.set() | 2310 x = x.set() |
2311 return lazyset(self, lambda r: r not in x) | 2311 return lazyset(self, lambda r: r not in x) |
2312 | 2312 |
2313 def __add__(self, x): | 2313 def __add__(self, x): |
2314 l = baseset(self) | 2314 def iterates(): |
2315 return l + baseset(x) | 2315 for r in self: |
2316 yield r | |
2317 for r in x: | |
2318 if r not in self: | |
2319 yield r | |
2320 | |
2321 return lazyset(generatorset(iterates())) | |
2316 | 2322 |
2317 def __len__(self): | 2323 def __len__(self): |
2318 if not self._hiddenrevs: | 2324 if not self._hiddenrevs: |
2319 return abs(self._end - self._start) | 2325 return abs(self._end - self._start) |
2320 else: | 2326 else: |