contrib/perf.py
changeset 40558 4756a33d0d31
parent 40557 355ae096faef
child 40679 20d2fd6036ed
equal deleted inserted replaced
40557:355ae096faef 40558:4756a33d0d31
  1571          [(b's', b'startrev', 1000, b'revision to start writing at'),
  1571          [(b's', b'startrev', 1000, b'revision to start writing at'),
  1572           (b'', b'stoprev', -1, b'last revision to write'),
  1572           (b'', b'stoprev', -1, b'last revision to write'),
  1573           (b'', b'count', 3, b'last revision to write'),
  1573           (b'', b'count', 3, b'last revision to write'),
  1574           (b'', b'details', False, b'print timing for every revisions tested'),
  1574           (b'', b'details', False, b'print timing for every revisions tested'),
  1575           (b'', b'source', b'full', b'the kind of data feed in the revlog'),
  1575           (b'', b'source', b'full', b'the kind of data feed in the revlog'),
       
  1576           (b'', b'lazydeltabase', True, b'try the provided delta first'),
  1576          ],
  1577          ],
  1577          b'-c|-m|FILE')
  1578          b'-c|-m|FILE')
  1578 def perfrevlogwrite(ui, repo, file_=None, startrev=1000, stoprev=-1, **opts):
  1579 def perfrevlogwrite(ui, repo, file_=None, startrev=1000, stoprev=-1, **opts):
  1579     """Benchmark writing a series of revisions to a revlog.
  1580     """Benchmark writing a series of revisions to a revlog.
  1580 
  1581 
  1593     if startrev < 0:
  1594     if startrev < 0:
  1594         startrev = rllen + startrev
  1595         startrev = rllen + startrev
  1595     if stoprev < 0:
  1596     if stoprev < 0:
  1596         stoprev = rllen + stoprev
  1597         stoprev = rllen + stoprev
  1597 
  1598 
       
  1599     lazydeltabase = opts['lazydeltabase']
  1598     source = opts['source']
  1600     source = opts['source']
  1599     validsource = (b'full', b'parent-1', b'parent-2', b'parent-smallest',
  1601     validsource = (b'full', b'parent-1', b'parent-2', b'parent-smallest',
  1600                    b'storage')
  1602                    b'storage')
  1601     if source not in validsource:
  1603     if source not in validsource:
  1602         raise error.Abort('invalid source type: %s' % source)
  1604         raise error.Abort('invalid source type: %s' % source)
  1605     count = opts['count']
  1607     count = opts['count']
  1606     if count <= 0:
  1608     if count <= 0:
  1607         raise error.Abort('invalide run count: %d' % count)
  1609         raise error.Abort('invalide run count: %d' % count)
  1608     allresults = []
  1610     allresults = []
  1609     for c in range(count):
  1611     for c in range(count):
  1610         timing = _timeonewrite(ui, rl, source, startrev, stoprev, c + 1)
  1612         timing = _timeonewrite(ui, rl, source, startrev, stoprev, c + 1,
       
  1613                                lazydeltabase=lazydeltabase)
  1611         allresults.append(timing)
  1614         allresults.append(timing)
  1612 
  1615 
  1613     ### consolidate the results in a single list
  1616     ### consolidate the results in a single list
  1614     results = []
  1617     results = []
  1615     for idx, (rev, t) in enumerate(allresults[0]):
  1618     for idx, (rev, t) in enumerate(allresults[0]):
  1668 
  1671 
  1669 class _faketr(object):
  1672 class _faketr(object):
  1670     def add(s, x, y, z=None):
  1673     def add(s, x, y, z=None):
  1671         return None
  1674         return None
  1672 
  1675 
  1673 def _timeonewrite(ui, orig, source, startrev, stoprev, runidx=None):
  1676 def _timeonewrite(ui, orig, source, startrev, stoprev, runidx=None,
       
  1677                   lazydeltabase=True):
  1674     timings = []
  1678     timings = []
  1675     tr = _faketr()
  1679     tr = _faketr()
  1676     with _temprevlog(ui, orig, startrev) as dest:
  1680     with _temprevlog(ui, orig, startrev) as dest:
       
  1681         dest._lazydeltabase = lazydeltabase
  1677         revs = list(orig.revs(startrev, stoprev))
  1682         revs = list(orig.revs(startrev, stoprev))
  1678         total = len(revs)
  1683         total = len(revs)
  1679         topic = 'adding'
  1684         topic = 'adding'
  1680         if runidx is not None:
  1685         if runidx is not None:
  1681             topic += ' (run #%d)' % runidx
  1686             topic += ' (run #%d)' % runidx