comparison mercurial/revset.py @ 22526:1e6d2b6b37ea

revset: do less lookup during spanset.__contains__ Attribute lookup is slow in python. So this version is going to be a bit faster. This does not have a visible impact since the rest of the stack is much slower but this shaves the yak a few extra nanometers. Moreover the new version is more readable so it worth doing this change for code quality purpose. This optimisation was approved by a core python dev.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Fri, 25 Apr 2014 17:53:58 -0700
parents 911f5a6579d1
children 6e38b5d49977
comparison
equal deleted inserted replaced
22525:764127f58903 22526:1e6d2b6b37ea
2791 else: 2791 else:
2792 for r in iterrange: 2792 for r in iterrange:
2793 yield r 2793 yield r
2794 2794
2795 def __contains__(self, rev): 2795 def __contains__(self, rev):
2796 return (((self._end < rev <= self._start) 2796 start = self._start
2797 or (self._start <= rev < self._end)) 2797 end = self._end
2798 and not (self._hiddenrevs and rev in self._hiddenrevs)) 2798 hidden = self._hiddenrevs
2799 return (((end < rev <= start) or (start <= rev and rev < end))
2800 and not (hidden and rev in hidden))
2799 2801
2800 def __nonzero__(self): 2802 def __nonzero__(self):
2801 for r in self: 2803 for r in self:
2802 return True 2804 return True
2803 return False 2805 return False