Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revset.py @ 24203:33c7a94d4dd0
revset: duplicate spanset.__contains__ to fullreposet for modification
1d7a2771aa36 says we should avoid function calls in __contains__, so
super(fullreposet, self).__contains__(rev) is not an option.
Actually the super call doubled the benchmark result of trivial query:
revisions:
0) 678f53865c68 (tip when I wrote this patch)
1) rev == node.nullrev or super(fullreposet, self).__contains__(rev)
revset #0: tip:0
0) wall 0.008441 comb 0.010000 user 0.010000 sys 0.000000 (best of 282)
1) wall 0.016152 comb 0.010000 user 0.010000 sys 0.000000 (best of 146)
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 10 Jan 2015 18:09:25 +0900 |
parents | 2de9ee016425 |
children | d2de20e1451f |
comparison
equal
deleted
inserted
replaced
24202:2de9ee016425 | 24203:33c7a94d4dd0 |
---|---|
3316 """ | 3316 """ |
3317 | 3317 |
3318 def __init__(self, repo): | 3318 def __init__(self, repo): |
3319 super(fullreposet, self).__init__(repo) | 3319 super(fullreposet, self).__init__(repo) |
3320 | 3320 |
3321 def __contains__(self, rev): | |
3322 hidden = self._hiddenrevs | |
3323 return ((self._start <= rev < self._end) | |
3324 and not (hidden and rev in hidden)) | |
3325 | |
3321 def __and__(self, other): | 3326 def __and__(self, other): |
3322 """As self contains the whole repo, all of the other set should also be | 3327 """As self contains the whole repo, all of the other set should also be |
3323 in self. Therefore `self & other = other`. | 3328 in self. Therefore `self & other = other`. |
3324 | 3329 |
3325 This boldly assumes the other contains valid revs only. | 3330 This boldly assumes the other contains valid revs only. |