diff contrib/perf.py @ 42462:bc4373babd04

revlog: add the option to track the expected compression upper bound There are various optimization we can do if we can estimate the size of delta before actually spending CPU compressing them. So we add a attributed dedicated to tracking that. We only use it on Manifest because (1) it structure is quite stable across all Mercurial repository so its compression ratio is fairly universal. This is the revlog with most extreme delta (cf the sparse-revlog optimization). This will be put to use in later changesets. Right now the compression upper bound is set to 10. This is a fairly conservative value (observed value is more around 3), but I prefer to be safe while introducing the optimization principles. We can tune the optimization threshold later.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 26 Apr 2019 00:28:22 +0200
parents 74e2f4b609f6
children 9f2189b6bf2a
line wrap: on
line diff
--- a/contrib/perf.py	Wed Jun 12 17:30:24 2019 +0100
+++ b/contrib/perf.py	Fri Apr 26 00:28:22 2019 +0200
@@ -2277,6 +2277,10 @@
 
     if orig._inline:
         raise error.Abort('not supporting inline revlog (yet)')
+    revlogkwargs = {}
+    k = 'upperboundcomp'
+    if util.safehasattr(orig, k):
+        revlogkwargs[k] = getattr(orig, k)
 
     origindexpath = orig.opener.join(orig.indexfile)
     origdatapath = orig.opener.join(orig.datafile)
@@ -2308,7 +2312,7 @@
 
         dest = revlog.revlog(vfs,
                              indexfile=indexname,
-                             datafile=dataname)
+                             datafile=dataname, **revlogkwargs)
         if dest._inline:
             raise error.Abort('not supporting inline revlog (yet)')
         # make sure internals are initialized