##// END OF EJS Templates
perf: add the notion of "source" to perfrevlogwrite...
Boris Feld -
r40586:631011ff default
parent child Browse files
Show More
@@ -1572,10 +1572,14 b' def perfrevlogrevisions(ui, repo, file_='
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 ],
1576 ],
1576 b'-c|-m|FILE')
1577 b'-c|-m|FILE')
1577 def perfrevlogwrite(ui, repo, file_=None, startrev=1000, stoprev=-1, **opts):
1578 def perfrevlogwrite(ui, repo, file_=None, startrev=1000, stoprev=-1, **opts):
1578 """Benchmark writing a series of revisions to a revlog.
1579 """Benchmark writing a series of revisions to a revlog.
1580
1581 Possible source values are:
1582 * `full`: add from a full text (default).
1579 """
1583 """
1580 opts = _byteskwargs(opts)
1584 opts = _byteskwargs(opts)
1581
1585
@@ -1586,13 +1590,19 b' def perfrevlogwrite(ui, repo, file_=None'
1586 if stoprev < 0:
1590 if stoprev < 0:
1587 stoprev = rllen + stoprev
1591 stoprev = rllen + stoprev
1588
1592
1593 source = opts['source']
1594 validsource = (b'full',)
1595 if source not in validsource:
1596 raise error.Abort('invalid source type: %s' % source)
1597
1589 ### actually gather results
1598 ### actually gather results
1590 count = opts['count']
1599 count = opts['count']
1591 if count <= 0:
1600 if count <= 0:
1592 raise error.Abort('invalide run count: %d' % count)
1601 raise error.Abort('invalide run count: %d' % count)
1593 allresults = []
1602 allresults = []
1594 for c in range(count):
1603 for c in range(count):
1595 allresults.append(_timeonewrite(ui, rl, startrev, stoprev, c + 1))
1604 timing = _timeonewrite(ui, rl, source, startrev, stoprev, c + 1)
1605 allresults.append(timing)
1596
1606
1597 ### consolidate the results in a single list
1607 ### consolidate the results in a single list
1598 results = []
1608 results = []
@@ -1654,7 +1664,7 b' class _faketr(object):'
1654 def add(s, x, y, z=None):
1664 def add(s, x, y, z=None):
1655 return None
1665 return None
1656
1666
1657 def _timeonewrite(ui, orig, startrev, stoprev, runidx=None):
1667 def _timeonewrite(ui, orig, source, startrev, stoprev, runidx=None):
1658 timings = []
1668 timings = []
1659 tr = _faketr()
1669 tr = _faketr()
1660 with _temprevlog(ui, orig, startrev) as dest:
1670 with _temprevlog(ui, orig, startrev) as dest:
@@ -1665,7 +1675,7 b' def _timeonewrite(ui, orig, startrev, st'
1665 topic += ' (run #%d)' % runidx
1675 topic += ' (run #%d)' % runidx
1666 for idx, rev in enumerate(revs):
1676 for idx, rev in enumerate(revs):
1667 ui.progress(topic, idx, unit='revs', total=total)
1677 ui.progress(topic, idx, unit='revs', total=total)
1668 addargs, addkwargs = _getrevisionseed(orig, rev, tr)
1678 addargs, addkwargs = _getrevisionseed(orig, rev, tr, source)
1669 with timeone() as r:
1679 with timeone() as r:
1670 dest.addrawrevision(*addargs, **addkwargs)
1680 dest.addrawrevision(*addargs, **addkwargs)
1671 timings.append((rev, r[0]))
1681 timings.append((rev, r[0]))
@@ -1673,13 +1683,16 b' def _timeonewrite(ui, orig, startrev, st'
1673 ui.progress(topic, None, unit='revs', total=total)
1683 ui.progress(topic, None, unit='revs', total=total)
1674 return timings
1684 return timings
1675
1685
1676 def _getrevisionseed(orig, rev, tr):
1686 def _getrevisionseed(orig, rev, tr, source):
1677 linkrev = orig.linkrev(rev)
1687 linkrev = orig.linkrev(rev)
1678 node = orig.node(rev)
1688 node = orig.node(rev)
1679 p1, p2 = orig.parents(node)
1689 p1, p2 = orig.parents(node)
1680 flags = orig.flags(rev)
1690 flags = orig.flags(rev)
1681 cachedelta = None
1691 cachedelta = None
1682 text = orig.revision(rev)
1692 text = None
1693
1694 if source == b'full':
1695 text = orig.revision(rev)
1683
1696
1684 return ((text, tr, linkrev, p1, p2),
1697 return ((text, tr, linkrev, p1, p2),
1685 {'node': node, 'flags': flags, 'cachedelta': cachedelta})
1698 {'node': node, 'flags': flags, 'cachedelta': cachedelta})
General Comments 0
You need to be logged in to leave comments. Login now