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