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 |
|
|
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 = |
|
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