##// 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 # not against rev - 1
77 # not against rev - 1
78 # XXX: could use some caching
78 # XXX: could use some caching
79 if not self.bundle(rev):
79 if not self.bundle(rev):
80 return revlog.revlog.chunk(self, rev, df, cachelen)
80 return revlog.revlog.chunk(self, rev, df)
81 self.bundlefile.seek(self.start(rev))
81 self.bundlefile.seek(self.start(rev))
82 return self.bundlefile.read(self.length(rev))
82 return self.bundlefile.read(self.length(rev))
83
83
@@ -838,16 +838,15 b' class revlog(object):'
838 """apply a list of patches to a string"""
838 """apply a list of patches to a string"""
839 return mdiff.patches(t, pl)
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 start, length = self.start(rev), self.length(rev)
842 start, length = self.start(rev), self.length(rev)
843 inline = self._inline
843 if self._inline:
844 if inline:
845 start += (rev + 1) * self._io.size
844 start += (rev + 1) * self._io.size
846 end = start + length
845 end = start + length
847 def loadcache(df):
846 def loadcache(df):
848 cache_length = max(cachelen, length) # 4k
847 cache_length = max(65536, length)
849 if not df:
848 if not df:
850 if inline:
849 if self._inline:
851 df = self.opener(self.indexfile)
850 df = self.opener(self.indexfile)
852 else:
851 else:
853 df = self.opener(self.datafile)
852 df = self.opener(self.datafile)
@@ -866,7 +865,12 b' class revlog(object):'
866 loadcache(df)
865 loadcache(df)
867 offset = 0
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 def delta(self, node):
875 def delta(self, node):
872 """return or calculate a delta between a node and its predecessor"""
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