##// 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 1572 (b'', b'stoprev', -1, b'last revision to write'),
1573 1573 (b'', b'count', 3, b'last revision to write'),
1574 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 1577 b'-c|-m|FILE')
1577 1578 def perfrevlogwrite(ui, repo, file_=None, startrev=1000, stoprev=-1, **opts):
1578 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 1584 opts = _byteskwargs(opts)
1581 1585
@@ -1586,13 +1590,19 b' def perfrevlogwrite(ui, repo, file_=None'
1586 1590 if stoprev < 0:
1587 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 1598 ### actually gather results
1590 1599 count = opts['count']
1591 1600 if count <= 0:
1592 1601 raise error.Abort('invalide run count: %d' % count)
1593 1602 allresults = []
1594 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 1607 ### consolidate the results in a single list
1598 1608 results = []
@@ -1654,7 +1664,7 b' class _faketr(object):'
1654 1664 def add(s, x, y, z=None):
1655 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 1668 timings = []
1659 1669 tr = _faketr()
1660 1670 with _temprevlog(ui, orig, startrev) as dest:
@@ -1665,7 +1675,7 b' def _timeonewrite(ui, orig, startrev, st'
1665 1675 topic += ' (run #%d)' % runidx
1666 1676 for idx, rev in enumerate(revs):
1667 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 1679 with timeone() as r:
1670 1680 dest.addrawrevision(*addargs, **addkwargs)
1671 1681 timings.append((rev, r[0]))
@@ -1673,12 +1683,15 b' def _timeonewrite(ui, orig, startrev, st'
1673 1683 ui.progress(topic, None, unit='revs', total=total)
1674 1684 return timings
1675 1685
1676 def _getrevisionseed(orig, rev, tr):
1686 def _getrevisionseed(orig, rev, tr, source):
1677 1687 linkrev = orig.linkrev(rev)
1678 1688 node = orig.node(rev)
1679 1689 p1, p2 = orig.parents(node)
1680 1690 flags = orig.flags(rev)
1681 1691 cachedelta = None
1692 text = None
1693
1694 if source == b'full':
1682 1695 text = orig.revision(rev)
1683 1696
1684 1697 return ((text, tr, linkrev, p1, p2),
General Comments 0
You need to be logged in to leave comments. Login now