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 |
|
|
|
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,13 +1683,16 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 |
|
1682 |
text = |
|
|
1692 | text = None | |
|
1693 | ||
|
1694 | if source == b'full': | |
|
1695 | text = orig.revision(rev) | |
|
1683 | 1696 | |
|
1684 | 1697 | return ((text, tr, linkrev, p1, p2), |
|
1685 | 1698 | {'node': node, 'flags': flags, 'cachedelta': cachedelta}) |
General Comments 0
You need to be logged in to leave comments.
Login now