Mercurial > hgsubversion
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() |