revlog: limit base to rev size ratio to 500 instead of 50
authorBoris Feld <boris.feld@octobus.net>
Wed, 19 Dec 2018 10:54:25 +0100
changeset 41033 b373477948df
parent 41032 9f06cd72cccb
child 41034 cca12a31ede5
revlog: limit base to rev size ratio to 500 instead of 50 While a value of 50 provided large speedup in some case (400s → 7s) it also creates a slow down for a whole class of revision we are seeing in a private repository (0.1s → 3s). A value of 500 makes them disappear improving the total runtime (the slower revision still improve significantly (400s → 21s)). We need to run a wider array of tests on various repositories to see the effect on speed and size of different values for this acceptable constant. However, in the meantime, it seems safer to move back to a less impactful value.
mercurial/revlogutils/deltas.py
--- a/mercurial/revlogutils/deltas.py	Fri Dec 21 15:31:16 2018 +0300
+++ b/mercurial/revlogutils/deltas.py	Wed Dec 19 10:54:25 2018 +0100
@@ -604,7 +604,7 @@
 # If a revision's full text is that much bigger than a base candidate full
 # text's, it is very unlikely that it will produce a valid delta. We no longer
 # consider these candidates.
-LIMIT_BASE2TEXT = 50
+LIMIT_BASE2TEXT = 500
 
 def _candidategroups(revlog, textlen, p1, p2, cachedelta):
     """Provides group of revision to be tested as delta base