contrib/all-revsets.txt
author Kyle Lippincott <spectral@google.com>
Wed, 02 Dec 2020 12:33:51 -0800
changeset 46018 8b0a3ff5ed12
parent 42205 3267aca2ec7e
child 46819 d4ba4d51f85f
permissions -rw-r--r--
statprof: separate functions and "line", assume 4 digit line numbers Previously, the profile output looked like this (I've removed many lines that are mostly inconsequential): ``` | 100.0% 0.02s hg: <module> line 43: dispatch.run() | 100.0% 0.02s dispatch.py: run line 115: status = dispatch(req) | 100.0% 0.02s dispatch.py: _runcatchfunc line 432: return _dispatch(req) \ 50.0% 0.01s dispatch.py: _dispatch line 1228: return runcommand( | 50.0% 0.01s dispatch.py: runcommand line 883: ret = _runcommand(ui, optio... | 50.0% 0.01s dispatch.py: _runcommand line 1240: return cmdfunc() | 50.0% 0.01s localrepo.py: __getitem__ line 1670: quick_access = self._quick_... | 50.0% 0.01s localrepo.py: _quick_access_changeidline 1650: return self._quick_access_c... | 50.0% 0.01s localrepo.py: __get__ line 179: return getattr(unfi, self.n... | 50.0% 0.01s util.py: __get__ line 1747: result = self.func(obj) | 50.0% 0.01s localrepo.py: _quick_access_changeid_wcline 1611: cl = self.unfiltered().chan... | 50.0% 0.01s localrepo.py: __get__ line 110: return super(_basefilecache... | 50.0% 0.01s util.py: __getattribute__line 245: self.__spec__.loader.exec_m... | 50.0% 0.01s <frozen importlib._bootstrap_external>: exec_moduleline 783: | 50.0% 0.01s <frozen importlib._bootstrap>: _call_with_frames_removedline 219: | 50.0% 0.01s changelog.py: <module> line 376: class changelog(revlog.revl... | 50.0% 0.01s util.py: __getattribute__line 245: self.__spec__.loader.exec_m... | 50.0% 0.01s <frozen importlib._bootstrap_external>: exec_moduleline 779: | 50.0% 0.01s <frozen importlib._bootstrap_external>: get_codeline 868: | 50.0% 0.01s <frozen importlib._bootstrap_external>: path_statsline 1012: | 50.0% 0.01s <frozen importlib._bootstrap_external>: _path_statline 87: ``` This has a few problems, though I'm only addressing some of them. 1. If the stuff before "line ###" is long, there's no separation between the function name and the "line" string. 2. If the stuff before "line ###" is really long, there's excessive separation between the "line" string and the line number. 3. We frequently have 4-digit line numbers, the code on the right wasn't dynamically indented and ended up quite messy looking. To solve these problems, I've added a ", " prefix before "line" iff it would otherwise not have any separation such as spaces. I've added a 'max' so that we never use a negative width (which is the cause of problem #2 above), and I've added a default assumption of 4 digit line numbers (but again using a 'max' so this shouldn't cause problems if we go beyond that. With these changes, it now looks like this: ``` | 100.0% 0.02s hg: <module> line 43: dispatch.run() | 100.0% 0.02s dispatch.py: run line 115: status = dispatch(req) | 100.0% 0.02s dispatch.py: _runcatchfunc line 432: return _dispatch(req) \ 50.0% 0.01s dispatch.py: _dispatch line 1228: return runcommand( | 50.0% 0.01s dispatch.py: runcommand line 883: ret = _runcommand(ui, optio... | 50.0% 0.01s dispatch.py: _runcommand line 1240: return cmdfunc() | 50.0% 0.01s localrepo.py: __getitem__ line 1670: quick_access = self._quick_... | 50.0% 0.01s localrepo.py: _quick_access_changeid, line 1650: return self._quick_access_c... | 50.0% 0.01s localrepo.py: __get__ line 179: return getattr(unfi, self.n... | 50.0% 0.01s util.py: __get__ line 1747: result = self.func(obj) | 50.0% 0.01s localrepo.py: _quick_access_changeid_wc, line 1611: cl = self.unfiltered().chan... | 50.0% 0.01s localrepo.py: __get__ line 110: return super(_basefilecache... | 50.0% 0.01s util.py: __getattribute__, line 245: self.__spec__.loader.exec_m... | 50.0% 0.01s <frozen importlib._bootstrap_external>: exec_module, line 783: | 50.0% 0.01s <frozen importlib._bootstrap>: _call_with_frames_removed, line 219: | 50.0% 0.01s changelog.py: <module> line 376: class changelog(revlog.revl... | 50.0% 0.01s util.py: __getattribute__, line 245: self.__spec__.loader.exec_m... | 50.0% 0.01s <frozen importlib._bootstrap_external>: exec_module, line 779: | 50.0% 0.01s <frozen importlib._bootstrap_external>: get_code, line 868: | 50.0% 0.01s <frozen importlib._bootstrap_external>: path_stats, line 1012: | 50.0% 0.01s <frozen importlib._bootstrap_external>: _path_stat, line 87: ``` Differential Revision: https://phab.mercurial-scm.org/D9511

# All revsets ever used with revsetbenchmarks.py script
#
# The goal of this file is to gather all revsets ever used for benchmarking
# revset's performance. It should be used to gather revsets that test a
# specific usecase or a specific implementation of revset predicates.
# If you are working on the smartset implementation itself, check
# 'base-revsets.txt'.
#
# Please update this file with any revsets you use for benchmarking a change so
# that future contributors can easily find and retest it when doing further
# modification. Feel free to highlight interesting variants if needed.


## Revset from this section are all extracted from changelog when this file was
# created. Feel free to dig and improve documentation.

# Used in revision da05fe01170b
(20000::) - (20000)
# Used in revision 95af98616aa7
parents(20000)
# Used in revision 186fd06283b4
(_intlist('20000\x0020001')) and merge()
# Used in revision 911f5a6579d1
p1(20000)
p2(10000)
# Used in revision b6dc3b79bb25
0::
# Used in revision faf4f63533ff
bookmark()
# Used in revision 22ba2c0825da
tip~25
# Used in revision 0cf46b8298fe
bisect(range)
# Used in revision 5b65429721d5
divergent()
# Used in revision 6261b9c549a2
file(COPYING)
# Used in revision 44f471102f3a
follow(COPYING)
# Used in revision 8040a44aab1c
origin(tip)
# Used in revision bbf4f3dfd700
rev(25)
# Used in revision a428db9ab61d
p1()
# Used in revision c1546d7400ef
min(0::)
# Used in revision 546fa6576815
author(lmoscovicz) or author(mpm)
author(mpm) or author(lmoscovicz)
# Used in revision 9bfe68357c01
public() and id("d82e2223f132")
# Used in revision ba89f7b542c9
rev(25)
# Used in revision eb763217152a
rev(210000)
# Used in revision 69524a05a7fa
10:100
parents(10):parents(100)
# Used in revision 6f1b8b3f12fd
100~5
parents(100)~5
(100~5)~5
# Used in revision 7a42e5d4c418
children(tip~100)
# Used in revision 7e8737e6ab08
100^1
parents(100)^1
(100^1)^1
# Used in revision 30e0dcd7c5ff
matching(100)
matching(parents(100))
# Used in revision aafeaba22826
0|1|2|3|4|5|6|7|8|9
# Used in revision 33c7a94d4dd0
tip:0
# Used in revision 7d369fae098e
(0:100000)
# Used in revision b333ca94403d
0 + 1 + 2 + ... + 200
0 + 1 + 2 + ... + 1000
sort(0 + 1 + 2 + ... + 200)
sort(0 + 1 + 2 + ... + 1000)
# Used in revision 7fbef7932af9
first(0 + 1 + 2 + ... + 1000)
# Used in revision ceaf04bb14ff
0:1000
# Used in revision 262e6ad93885
not public()
(tip~1000::) - public()
not public() and branch("default")
# Used in revision 15412bba5a68
0::tip

## all the revsets from this section have been taken from the former central file
# for revset's benchmarking, they are undocumented for this reason.
all()
draft()
::tip
draft() and ::tip
::tip and draft()
author(lmoscovicz)
author(mpm)
::p1(p1(tip))::
public()
:10000 and public()
:10000 and draft()
(not public() - obsolete())

# The one below is used by rebase
(children(ancestor(tip~5, tip)) and ::(tip~5))::

# those two `roots(...)` inputs are close to what phase movement use.
roots((tip~100::) - (tip~100::tip))
roots((0::) - (0::tip))

# more roots testing
roots(tip~100:)
roots(:42)
roots(not public())
roots((0:tip)::)
roots(0::tip)
42:68 and roots(42:tip)
# Used in revision f140d6207cca
roots(0:tip)
# test disjoint set with multiple roots
roots((:42) + (tip~42:))

# Testing the behavior of "head()" in various situations
head()
head() - public()
draft() and head()
head() and author("mpm")

# testing the mutable phases set
draft()
secret()

# test finding common ancestors
heads(commonancestors(last(head(), 2)))
heads(commonancestors(head()))

# more heads testing
heads(all())
heads(-10000:-1)
(-5000:-1000) and heads(-10000:-1)
heads(matching(tip, "author"))
heads(matching(tip, "author")) and -10000:-1
(-10000:-1) and heads(matching(tip, "author"))
# more roots testing
roots(all())
roots(-10000:-1)
(-5000:-1000) and roots(-10000:-1)
roots(matching(tip, "author"))
roots(matching(tip, "author")) and -10000:-1
(-10000:-1) and roots(matching(tip, "author"))
only(max(head()))
only(max(head()), min(head()))
only(max(head()), limit(head(), 1, 1))