Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revset.py @ 22799:bafa371d7af3
addset: drop caching through generatorset
The utility of this cache is debatable (no visible benchmark impact) and using
generatorset for such purpose makes the code complicated.
We drop it for now. Someone can reintroduce a smart version of it in the future
if it is detected to be relevant.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Fri, 03 Oct 2014 20:23:02 -0700 |
parents | 586d7058ea48 |
children | 29a8c20e14a8 |
comparison
equal
deleted
inserted
replaced
22798:586d7058ea48 | 22799:bafa371d7af3 |
---|---|
2497 dont yield any duplicates. | 2497 dont yield any duplicates. |
2498 | 2498 |
2499 If the ascending attribute is set, iterate over both collections at the | 2499 If the ascending attribute is set, iterate over both collections at the |
2500 same time, yielding only one value at a time in the given order. | 2500 same time, yielding only one value at a time in the given order. |
2501 """ | 2501 """ |
2502 if not self._iter: | 2502 if self._ascending is None: |
2503 if self._ascending is None: | 2503 def gen(): |
2504 def gen(): | 2504 for r in self._r1: |
2505 for r in self._r1: | 2505 yield r |
2506 s = self._r1.set() | |
2507 for r in self._r2: | |
2508 if r not in s: | |
2506 yield r | 2509 yield r |
2507 s = self._r1.set() | 2510 gen = gen() |
2508 for r in self._r2: | 2511 else: |
2509 if r not in s: | 2512 iter1 = iter(self._r1) |
2510 yield r | 2513 iter2 = iter(self._r2) |
2511 gen = gen() | 2514 gen = self._iterordered(self._ascending, iter1, iter2) |
2512 else: | 2515 return gen |
2513 iter1 = iter(self._r1) | |
2514 iter2 = iter(self._r2) | |
2515 gen = self._iterordered(self._ascending, iter1, iter2) | |
2516 self._iter = generatorset(gen) | |
2517 return self._iter | |
2518 | 2516 |
2519 def __iter__(self): | 2517 def __iter__(self): |
2520 if self._genlist: | 2518 if self._genlist: |
2521 return iter(self._genlist) | 2519 return iter(self._genlist) |
2522 return iter(self._iterator()) | 2520 return iter(self._iterator()) |