##// END OF EJS Templates
revlog: speed up chunkcache...
Matt Mackall -
r4988:14486eea default
parent child Browse files
Show More
@@ -77,7 +77,7 b' class bundlerevlog(revlog.revlog):'
77 77 # not against rev - 1
78 78 # XXX: could use some caching
79 79 if not self.bundle(rev):
80 return revlog.revlog.chunk(self, rev, df, cachelen)
80 return revlog.revlog.chunk(self, rev, df)
81 81 self.bundlefile.seek(self.start(rev))
82 82 return self.bundlefile.read(self.length(rev))
83 83
@@ -838,16 +838,15 b' class revlog(object):'
838 838 """apply a list of patches to a string"""
839 839 return mdiff.patches(t, pl)
840 840
841 def chunk(self, rev, df=None, cachelen=4096):
841 def chunk(self, rev, df=None):
842 842 start, length = self.start(rev), self.length(rev)
843 inline = self._inline
844 if inline:
843 if self._inline:
845 844 start += (rev + 1) * self._io.size
846 845 end = start + length
847 846 def loadcache(df):
848 cache_length = max(cachelen, length) # 4k
847 cache_length = max(65536, length)
849 848 if not df:
850 if inline:
849 if self._inline:
851 850 df = self.opener(self.indexfile)
852 851 else:
853 852 df = self.opener(self.datafile)
@@ -866,7 +865,12 b' class revlog(object):'
866 865 loadcache(df)
867 866 offset = 0
868 867
869 return decompress(self._chunkcache[1][offset:offset + length])
868 # avoid copying large chunks
869 c = self._chunkcache[1]
870 if len(c) > length:
871 c = c[offset:offset + length]
872
873 return decompress(c)
870 874
871 875 def delta(self, node):
872 876 """return or calculate a delta between a node and its predecessor"""
General Comments 0
You need to be logged in to leave comments. Login now