Mercurial > public > mercurial-scm > hg
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 |