# HG changeset patch # User Pierre-Yves David # Date 1567957657 -7200 # Node ID 7c38a4353bb39a3905cb2d614c97bfef2b35abf9 # Parent 9a52930f678121d5454bcc4c7d3fabbac991c495 stablesort: add some field data about stable sort cache diff -r 9a52930f6781 -r 7c38a4353bb3 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