--- 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