stablesort: add some field data about stable sort cache
authorPierre-Yves David <pierre-yves.david@octobus.net>
Sun, 08 Sep 2019 17:47:37 +0200
changeset 4835 7c38a4353bb3
parent 4834 9a52930f6781
child 4836 e2465969958e
stablesort: add some field data about stable sort cache
hgext3rd/evolve/stablesort.py
--- a/hgext3rd/evolve/stablesort.py	Sun Sep 08 13:31:28 2019 +0200
+++ b/hgext3rd/evolve/stablesort.py	Sun Sep 08 17:47:37 2019 +0200
@@ -77,6 +77,61 @@
 actually walk the graph, (see stable range documentation).
 
 For each merge, we store the set of jumps that cover the exclusive side.
+
+Practical data
+--------------
+
+The mercurial repository has simple branching and few jumps:
+
+    number of revisions:        69771
+    number of merge:             2734
+    number of jumps:             2950
+    average jumps:                  1.079
+    median jumps:                   1
+    90% jumps:                      1
+    99% jumps:                      3
+    max jumps:                      6
+    jump cache size:           35 400 bytes
+
+Mozilla's branching is fairly simple too:
+
+    number of revisions:       435078
+    number of merge:            21035
+    number of jumps:            31434
+    average jumps:                  1.494
+    median jumps:                   1
+    90% jumps:                      2
+    99% jumps:                      9
+    max jumps:                    169
+    jump cache size:          377 208 bytes
+
+Pypy has a more complicated branching history but jumps cache remains reasonable
+
+    number of revisions:        95010
+    number of merge:             7911
+    number of jumps:            24326
+    average jumps:                  3.075
+    median jumps:                   1
+    90% jumps:                      5
+    99% jumps:                     40
+    max jumps:                    329
+    jump cache size:          291 912 bytes
+
+This still apply to larger private project:
+
+    number of revisions:       605011
+    number of merge:           118109
+    number of jumps:           314925
+    average jumps:                  2.667
+    median jumps:                   1
+    90% jumps:                      3
+    99% jumps:                     34
+    max jumps:                    660
+    jump cache size:        3 779 100 bytes
+
+It is worth noting that the last jump could be computed form other information,
+removing one jump storage per merge. However this does not seems to be an issue
+worth the troubles for now.
 """
 
 import array