434 """display data about the stable sort cache of a repository |
434 """display data about the stable sort cache of a repository |
435 """ |
435 """ |
436 unfi = repo.unfiltered() |
436 unfi = repo.unfiltered() |
437 revs = unfi.revs('all()') |
437 revs = unfi.revs('all()') |
438 nbrevs = len(revs) |
438 nbrevs = len(revs) |
439 ui.write('number of revisions: %12d\n' % nbrevs) |
439 ui.write(b'number of revisions: %12d\n' % nbrevs) |
440 heads = unfi.revs('heads(all())') |
440 heads = unfi.revs('heads(all())') |
441 nbheads = len(heads) |
441 nbheads = len(heads) |
442 ui.write('number of heads: %12d\n' % nbheads) |
442 ui.write(b'number of heads: %12d\n' % nbheads) |
443 merge = unfi.revs('merge()') |
443 merge = unfi.revs('merge()') |
444 nbmerge = len(merge) |
444 nbmerge = len(merge) |
445 ui.write('number of merge: %12d (%3d%%)\n' |
445 ui.write(b'number of merge: %12d (%3d%%)\n' |
446 % (nbmerge, 100 * nbmerge / nbrevs)) |
446 % (nbmerge, 100 * nbmerge / nbrevs)) |
447 cache = unfi.stablerange |
447 cache = unfi.stablerange |
448 allsubranges = stablerange.subrangesclosure(unfi, cache, heads) |
448 allsubranges = stablerange.subrangesclosure(unfi, cache, heads) |
449 nbsubranges = len(allsubranges) - nbrevs # we remove leafs |
449 nbsubranges = len(allsubranges) - nbrevs # we remove leafs |
450 ui.write('number of range: %12d\n' % nbsubranges) |
450 ui.write(b'number of range: %12d\n' % nbsubranges) |
451 import collections |
451 import collections |
452 subsizedistrib = collections.defaultdict(lambda: 0) |
452 subsizedistrib = collections.defaultdict(lambda: 0) |
453 |
453 |
454 def smallsize(r): |
454 def smallsize(r): |
455 # This is computing the size it would take to store a range for a |
455 # This is computing the size it would take to store a range for a |
474 totalsize += smallsize(sr) |
474 totalsize += smallsize(sr) |
475 |
475 |
476 for ss in sorted(subsizedistrib): |
476 for ss in sorted(subsizedistrib): |
477 ssc = subsizedistrib[ss] |
477 ssc = subsizedistrib[ss] |
478 ssp = ssc * 100 // nbsubranges |
478 ssp = ssc * 100 // nbsubranges |
479 ui.write(' with %3d subranges: %12d (%3d%%)\n' % (ss, ssc, ssp)) |
479 ui.write(b' with %3d subranges: %12d (%3d%%)\n' % (ss, ssc, ssp)) |
480 |
480 |
481 depth = repo.depthcache.get |
481 depth = repo.depthcache.get |
482 stdslice = 0 |
482 stdslice = 0 |
483 oddslice = 0 |
483 oddslice = 0 |
484 |
484 |
489 if (skip & k) == skip: |
489 if (skip & k) == skip: |
490 stdslice += 1 |
490 stdslice += 1 |
491 else: |
491 else: |
492 oddslice += 1 |
492 oddslice += 1 |
493 |
493 |
494 ui.write('standard slice point cut: %12d (%3d%%)\n' |
494 ui.write(b'standard slice point cut: %12d (%3d%%)\n' |
495 % (stdslice, stdslice * 100 // nbsubranges)) |
495 % (stdslice, stdslice * 100 // nbsubranges)) |
496 ui.write('other slice point cut: %12d (%3d%%)\n' |
496 ui.write(b'other slice point cut: %12d (%3d%%)\n' |
497 % (oddslice, oddslice * 100 // nbsubranges)) |
497 % (oddslice, oddslice * 100 // nbsubranges)) |
498 ui.write('est. naive compact store: %12d bytes\n' % totalsize) |
498 ui.write(b'est. naive compact store: %12d bytes\n' % totalsize) |
499 |
499 |
500 @eh.reposetup |
500 @eh.reposetup |
501 def setupcache(ui, repo): |
501 def setupcache(ui, repo): |
502 |
502 |
503 class stablerangerepo(repo.__class__): |
503 class stablerangerepo(repo.__class__): |