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]