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.