comparison hgsubversion/maps.py @ 1252:a321afbc3479

maps.RevMap: while loading, read lastpulled and firstpulled once Loading a million-entry revmap goes from 6.28 seconds to 3.82.
author Siddharth Agarwal <sid0@fb.com>
date Sun, 02 Nov 2014 01:23:47 -0800
parents 46cec117dda2
children c54214bb6c4e
comparison
equal deleted inserted replaced
1251:46cec117dda2 1252:a321afbc3479
220 raise hgutil.Abort('revmap too new -- please upgrade') 220 raise hgutil.Abort('revmap too new -- please upgrade')
221 return f 221 return f
222 222
223 @util.gcdisable 223 @util.gcdisable
224 def _load(self): 224 def _load(self):
225 lastpulled = self.meta.lastpulled
226 firstpulled = self.meta.firstpulled
225 for l in self.readmapfile(self.meta.revmap_file): 227 for l in self.readmapfile(self.meta.revmap_file):
226 revnum, ha, branch = l.split(' ', 2) 228 revnum, ha, branch = l.split(' ', 2)
227 if branch == '\n': 229 if branch == '\n':
228 branch = None 230 branch = None
229 else: 231 else:
230 branch = branch[:-1] 232 branch = branch[:-1]
231 revnum = int(revnum) 233 revnum = int(revnum)
232 if revnum > self.meta.lastpulled or not self.meta.lastpulled: 234 if revnum > lastpulled or not lastpulled:
233 self.meta.lastpulled = revnum 235 lastpulled = revnum
234 if revnum < self.meta.firstpulled or not self.meta.firstpulled: 236 if revnum < firstpulled or not firstpulled:
235 self.meta.firstpulled = revnum 237 firstpulled = revnum
236 dict.__setitem__(self, (revnum, branch), node.bin(ha)) 238 dict.__setitem__(self, (revnum, branch), node.bin(ha))
239 self.meta.lastpulled = lastpulled
240 self.meta.firstpulled = firstpulled
237 241
238 def _write(self): 242 def _write(self):
239 f = open(self.meta.revmap_file, 'w') 243 f = open(self.meta.revmap_file, 'w')
240 f.write('%s\n' % self.VERSION) 244 f.write('%s\n' % self.VERSION)
241 f.close() 245 f.close()