##// END OF EJS Templates
revset: improve performance of _generatorset.__contains__ (issue 4201)...
Gregory Szorc -
r20828:3210b793 default
parent child Browse files
Show More
@@ -2630,8 +2630,8 b' class _generatorset(object):'
2630 2630 if x in self._cache:
2631 2631 return self._cache[x]
2632 2632
2633 # Use __iter__ which caches values and stores them into self._genlist
2634 for l in self:
2633 # Use new values only, as existing values would be cached.
2634 for l in self._consumegen():
2635 2635 if l == x:
2636 2636 return True
2637 2637
@@ -2645,17 +2645,18 b' class _generatorset(object):'
2645 2645 # started over the generatorset.
2646 2646 for l in self._genlist:
2647 2647 yield l
2648 else:
2649 # Starting iteration over the generatorset.
2650 self._iterated = True
2648
2649 for item in self._consumegen():
2650 yield item
2651
2652 def _consumegen(self):
2653 self._iterated = True
2651 2654
2652 2655 for item in self._gen:
2653 2656 self._cache[item] = True
2654 2657 self._genlist.append(item)
2655 2658 yield item
2656 2659
2657 # Iteration over the generator has finished. Whole value list should be
2658 # cached in self._genlist
2659 2660 self._finished = True
2660 2661
2661 2662 def set(self):
@@ -2680,7 +2681,8 b' class _ascgeneratorset(_generatorset):'
2680 2681 if x in self._cache:
2681 2682 return self._cache[x]
2682 2683
2683 for l in self:
2684 # Use new values only, as existing values would be cached.
2685 for l in self._consumegen():
2684 2686 if l == x:
2685 2687 return True
2686 2688 if l > x:
@@ -2702,7 +2704,8 b' class _descgeneratorset(_generatorset):'
2702 2704 if x in self._cache:
2703 2705 return self._cache[x]
2704 2706
2705 for l in self:
2707 # Use new values only, as existing values would be cached.
2708 for l in self._consumegen():
2706 2709 if l == x:
2707 2710 return True
2708 2711 if l < x:
General Comments 0
You need to be logged in to leave comments. Login now