Mercurial > hg
annotate contrib/base-revsets.txt @ 52284:f4aede0f01af
rust-manifest: use `memchr` crate for all byte-finding needs
While writing a very dumb manifest diffing algorithm for a proof-of-concept
I saw that `Manifest::find_by_path` was much slower than I was expecting.
It turns out that the Rust stdlib uses slow (all is relative) code when
searching for byte positions for reasons ranging from portability, SIMD
API stability, nobody doing the work, etc. `memch` is much faster for these
purposes, so let's use it.
I was measuring ~670ms of profile time in `find_by_path`, after this patch
it went down to ~230ms.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Tue, 12 Nov 2024 23:20:04 +0100 |
parents | 55e7784eb3bc |
children |
rev | line source |
---|---|
25608
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
1 # Base Revsets to be used with revsetbenchmarks.py script |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
2 # |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
3 # The goal of this file is to gather a limited amount of revsets that allow a |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
4 # good coverage of the internal revsets mechanisms. Revsets included should not |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
5 # be selected for their individual implementation, but for what they reveal of |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
6 # the internal implementation of smartsets classes (and their interactions). |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
7 # |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
8 # Use and update this file when you change internal implementation of these |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
9 # smartsets classes. Please include a comment explaining what each of your |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
10 # addition is testing. Also check if your changes to the smartset class makes |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
11 # some of the tests inadequate and replace them with a new one testing the same |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
12 # behavior. |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
13 # |
25609
67a2192dcb64
contrib: introduce an all-revsets.txt file
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25608
diff
changeset
|
14 # If you want to benchmark revsets predicate itself, check 'all-revsets.txt'. |
67a2192dcb64
contrib: introduce an all-revsets.txt file
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25608
diff
changeset
|
15 # |
25608
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
16 # The current content of this file is currently likely not reaching this goal |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
17 # entirely, feel free, to audit its content and comment on each revset to |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
18 # highlight what internal mechanisms they test. |
2fea23d035d8
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25545
diff
changeset
|
19 |
20777
77318d3c3b24
benchmark-revset: add full version of benchmarked revset
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20754
diff
changeset
|
20 all() |
20744
9907b3f79ac2
contrib: added revset examples for benchmarking performance
Lucas Moscovicz <lmoscovicz@fb.com>
parents:
diff
changeset
|
21 draft() |
20777
77318d3c3b24
benchmark-revset: add full version of benchmarked revset
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20754
diff
changeset
|
22 ::tip |
20744
9907b3f79ac2
contrib: added revset examples for benchmarking performance
Lucas Moscovicz <lmoscovicz@fb.com>
parents:
diff
changeset
|
23 draft() and ::tip |
21285
7078ce067367
revsetbenchmark: add `::tip and draft()` to the canonical list
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
21204
diff
changeset
|
24 ::tip and draft() |
20777
77318d3c3b24
benchmark-revset: add full version of benchmarked revset
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20754
diff
changeset
|
25 0::tip |
20744
9907b3f79ac2
contrib: added revset examples for benchmarking performance
Lucas Moscovicz <lmoscovicz@fb.com>
parents:
diff
changeset
|
26 roots(0::tip) |
9907b3f79ac2
contrib: added revset examples for benchmarking performance
Lucas Moscovicz <lmoscovicz@fb.com>
parents:
diff
changeset
|
27 author(lmoscovicz) |
51606
55e7784eb3bc
base-revsets: use an author that actually exercises a lot of changesets
Raphaël Gomès <rgomes@octobus.net>
parents:
46819
diff
changeset
|
28 author("pierre-yves") |
55e7784eb3bc
base-revsets: use an author that actually exercises a lot of changesets
Raphaël Gomès <rgomes@octobus.net>
parents:
46819
diff
changeset
|
29 author(lmoscovicz) or author("pierre-yves") |
55e7784eb3bc
base-revsets: use an author that actually exercises a lot of changesets
Raphaël Gomès <rgomes@octobus.net>
parents:
46819
diff
changeset
|
30 author("pierre-yves") or author(lmoscovicz) |
20777
77318d3c3b24
benchmark-revset: add full version of benchmarked revset
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20754
diff
changeset
|
31 tip:0 |
77318d3c3b24
benchmark-revset: add full version of benchmarked revset
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20754
diff
changeset
|
32 0:: |
22556
480a24ad9f77
revsetbenchmark: allow comments ('#' prefix) in the revset input
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22458
diff
changeset
|
33 # those two `roots(...)` inputs are close to what phase movement use. |
20894
04e1596d5dbd
revset: improve _descendants performance
Durham Goode <durham@fb.com>
parents:
20861
diff
changeset
|
34 roots((tip~100::) - (tip~100::tip)) |
22556
480a24ad9f77
revsetbenchmark: allow comments ('#' prefix) in the revset input
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22458
diff
changeset
|
35 roots((0::) - (0::tip)) |
24923
e5f166961123
revset: narrow the subset using smartset operation in roots()
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22557
diff
changeset
|
36 42:68 and roots(42:tip) |
20861
c2a81aa19980
revsetbenchmark: add entry for ::rev::
Gregory Szorc <gregory.szorc@gmail.com>
parents:
20777
diff
changeset
|
37 ::p1(p1(tip)):: |
21204
1d7a2771aa36
revset: inline spanset containment check (fix perf regression)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20894
diff
changeset
|
38 public() |
1d7a2771aa36
revset: inline spanset containment check (fix perf regression)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20894
diff
changeset
|
39 :10000 and public() |
1d7a2771aa36
revset: inline spanset containment check (fix perf regression)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20894
diff
changeset
|
40 draft() |
1d7a2771aa36
revset: inline spanset containment check (fix perf regression)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20894
diff
changeset
|
41 :10000 and draft() |
21939
f486001f9d6f
revset: optimize baseset.__sub__ (issue4313)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
21546
diff
changeset
|
42 roots((0:tip)::) |
22312
8b980fbbd6dc
revsetbenchmark: add revset with lazyset subtraction
Gregory Szorc <gregory.szorc@gmail.com>
parents:
21939
diff
changeset
|
43 (not public() - obsolete()) |
22451
186fd06283b4
revset: lower weight for _intlist function
Durham Goode <durham@fb.com>
parents:
22450
diff
changeset
|
44 (_intlist('20000\x0020001')) and merge() |
22450
95af98616aa7
revset: make parents() O(number of parents)
Durham Goode <durham@fb.com>
parents:
22449
diff
changeset
|
45 parents(20000) |
22449
da05fe01170b
revset: make descendants() lazier
Durham Goode <durham@fb.com>
parents:
22312
diff
changeset
|
46 (20000::) - (20000) |
22557
ace8320156ef
revsetbenchmark: add a rebase-related revset to the benchmark list
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22556
diff
changeset
|
47 # The one below is used by rebase |
ace8320156ef
revsetbenchmark: add a rebase-related revset to the benchmark list
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22556
diff
changeset
|
48 (children(ancestor(tip~5, tip)) and ::(tip~5)):: |
38712
70a4289896b0
revset: add larger test for heads(ancestors(…))
Boris Feld <boris.feld@octobus.net>
parents:
25609
diff
changeset
|
49 heads(commonancestors(last(head(), 2))) |
42140
a4483e380c3e
revsetbenchmark: add some simpler revset for heads and roots
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
38712
diff
changeset
|
50 heads(-10000:-1) |
a4483e380c3e
revsetbenchmark: add some simpler revset for heads and roots
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
38712
diff
changeset
|
51 roots(-10000:-1) |
a4483e380c3e
revsetbenchmark: add some simpler revset for heads and roots
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
38712
diff
changeset
|
52 only(max(head()), min(head())) |