Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlog.py @ 23286:40e0067899d4
revlog: compute length of compressed deltas along with chain length
In upcoming patches to the revlog, we're going to split up the notions of
bounding I/O and bounding CPU.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Tue, 11 Nov 2014 19:54:36 -0800 |
parents | 6cc1f388ac80 |
children | 426d7f901789 |
comparison
equal
deleted
inserted
replaced
23285:6cc1f388ac80 | 23286:40e0067899d4 |
---|---|
352 while base != rev: | 352 while base != rev: |
353 rev = base | 353 rev = base |
354 base = index[rev][3] | 354 base = index[rev][3] |
355 return base | 355 return base |
356 def chainlen(self, rev): | 356 def chainlen(self, rev): |
357 return self._chaininfo(rev)[0] | |
358 def _chaininfo(self, rev): | |
357 index = self.index | 359 index = self.index |
358 generaldelta = self._generaldelta | 360 generaldelta = self._generaldelta |
359 iterrev = rev | 361 iterrev = rev |
360 e = index[iterrev] | 362 e = index[iterrev] |
361 clen = 0 | 363 clen = 0 |
364 compresseddeltalen = 0 | |
362 while iterrev != e[3]: | 365 while iterrev != e[3]: |
363 clen += 1 | 366 clen += 1 |
367 compresseddeltalen += e[1] | |
364 if generaldelta: | 368 if generaldelta: |
365 iterrev = e[3] | 369 iterrev = e[3] |
366 else: | 370 else: |
367 iterrev -= 1 | 371 iterrev -= 1 |
368 e = index[iterrev] | 372 e = index[iterrev] |
369 return clen | 373 # add text length of base since decompressing that also takes work |
374 compresseddeltalen += e[1] | |
375 return clen, compresseddeltalen | |
370 def flags(self, rev): | 376 def flags(self, rev): |
371 return self.index[rev][0] & 0xFFFF | 377 return self.index[rev][0] & 0xFFFF |
372 def rawsize(self, rev): | 378 def rawsize(self, rev): |
373 """return the length of the uncompressed text for a given revision""" | 379 """return the length of the uncompressed text for a given revision""" |
374 l = self.index[rev][2] | 380 l = self.index[rev][2] |