comparison hgsubversion/maps.py @ 1254:d07ccad28b1a

maps.RevMap: avoid O(revs) property lookups on dict Loading a million-entry revmap goes from 3.72 seconds to 3.65.
author Siddharth Agarwal <sid0@fb.com>
date Sun, 02 Nov 2014 01:34:34 -0800
parents c54214bb6c4e
children 9a722b5246df
comparison
equal deleted inserted replaced
1253:c54214bb6c4e 1254:d07ccad28b1a
222 222
223 @util.gcdisable 223 @util.gcdisable
224 def _load(self): 224 def _load(self):
225 lastpulled = self.meta.lastpulled 225 lastpulled = self.meta.lastpulled
226 firstpulled = self.meta.firstpulled 226 firstpulled = self.meta.firstpulled
227 setitem = dict.__setitem__
227 for l in self.readmapfile(self.meta.revmap_file): 228 for l in self.readmapfile(self.meta.revmap_file):
228 revnum, ha, branch = l.split(' ', 2) 229 revnum, ha, branch = l.split(' ', 2)
229 if branch == '\n': 230 if branch == '\n':
230 branch = None 231 branch = None
231 else: 232 else:
233 revnum = int(revnum) 234 revnum = int(revnum)
234 if revnum > lastpulled or not lastpulled: 235 if revnum > lastpulled or not lastpulled:
235 lastpulled = revnum 236 lastpulled = revnum
236 if revnum < firstpulled or not firstpulled: 237 if revnum < firstpulled or not firstpulled:
237 firstpulled = revnum 238 firstpulled = revnum
238 dict.__setitem__(self, (revnum, branch), bin(ha)) 239 setitem(self, (revnum, branch), bin(ha))
239 self.meta.lastpulled = lastpulled 240 self.meta.lastpulled = lastpulled
240 self.meta.firstpulled = firstpulled 241 self.meta.firstpulled = firstpulled
241 242
242 def _write(self): 243 def _write(self):
243 f = open(self.meta.revmap_file, 'w') 244 f = open(self.meta.revmap_file, 'w')