annotate README.rst @ 42743:8c9a6adec67a

rust-discovery: using the children cache in add_missing The DAG range computation often needs to get back to very old revisions, and turns out to be disproportionately long, given that the end goal is to remove the descendents of the given missing revisons from the undecided set. The fast iteration capabilities available in the Rust case make it possible to avoid the DAG range entirely, at the cost of precomputing the children cache, and to simply iterate on children of the given missing revisions. This is a case where staying on the same side of the interface between the two languages has clear benefits. On discoveries with initial undecided sets small enough to bypass sampling entirely, the total cost of computing the children cache and the subsequent iteration becomes better than the Python + C counterpart, which relies on reachableroots2. For example, on a repo with more than one million revisions with an initial undecided set of 11 elements, we get these figures: Rust version with simple iteration addcommons: 57.287us first undecided computation: 184.278334ms first children cache computation: 131.056us addmissings iteration: 42.766us first addinfo total: 185.24 ms Python + C version first addcommons: 0.29 ms addcommons 0.21 ms first undecided computation 191.35 ms addmissings 45.75 ms first addinfo total: 237.77 ms On discoveries with large undecided sets, the initial price paid makes the first addinfo slower than the Python + C version, but that's more than compensated by the gain in sampling and subsequent iterations. Here's an extreme example with an undecided set of a million revisions: Rust version: first undecided computation: 293.842629ms first children cache computation: 407.911297ms addmissings iteration: 34.312869ms first addinfo total: 776.02 ms taking initial sample query 2: sampling time: 1318.38 ms query 2; still undecided: 1005013, sample size is: 200 addmissings: 143.062us Python + C version: first undecided computation 298.13 ms addmissings 80.13 ms first addinfo total: 399.62 ms taking initial sample query 2: sampling time: 3957.23 ms query 2; still undecided: 1005013, sample size is: 200 addmissings 52.88 ms Differential Revision: https://phab.mercurial-scm.org/D6428
author Georges Racinet <georges.racinet@octobus.net>
date Tue, 16 Apr 2019 01:16:39 +0200
parents 1b59287a1cfa
children c5912e35d06d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12857
a9f91c844a3b README: add small introduction
Martin Geisler <mg@lazybytes.net>
parents: 12856
diff changeset
1 Mercurial
a9f91c844a3b README: add small introduction
Martin Geisler <mg@lazybytes.net>
parents: 12856
diff changeset
2 =========
a9f91c844a3b README: add small introduction
Martin Geisler <mg@lazybytes.net>
parents: 12856
diff changeset
3
a9f91c844a3b README: add small introduction
Martin Geisler <mg@lazybytes.net>
parents: 12856
diff changeset
4 Mercurial is a fast, easy to use, distributed revision control tool
a9f91c844a3b README: add small introduction
Martin Geisler <mg@lazybytes.net>
parents: 12856
diff changeset
5 for software developers.
a9f91c844a3b README: add small introduction
Martin Geisler <mg@lazybytes.net>
parents: 12856
diff changeset
6
33618
76b171209151 README: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 26421
diff changeset
7 Basic install::
0
9117c6561b0b Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff changeset
8
3935
1158d7018052 Move README info to wiki
Matt Mackall <mpm@selenic.com>
parents: 3847
diff changeset
9 $ make # see install targets
1158d7018052 Move README info to wiki
Matt Mackall <mpm@selenic.com>
parents: 3847
diff changeset
10 $ make install # do a system-wide install
1158d7018052 Move README info to wiki
Matt Mackall <mpm@selenic.com>
parents: 3847
diff changeset
11 $ hg debuginstall # sanity-check setup
1158d7018052 Move README info to wiki
Matt Mackall <mpm@selenic.com>
parents: 3847
diff changeset
12 $ hg # see help
205
d255d99a7cbd README: integrate some changes from Kevin Smith
mpm@selenic.com
parents: 204
diff changeset
13
33618
76b171209151 README: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 26421
diff changeset
14 Running without installing::
16217
df5ecb813426 readme: mention how to run in-place
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 12857
diff changeset
15
df5ecb813426 readme: mention how to run in-place
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 12857
diff changeset
16 $ make local # build for inplace usage
df5ecb813426 readme: mention how to run in-place
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 12857
diff changeset
17 $ ./hg --version # should show the latest version
df5ecb813426 readme: mention how to run in-place
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 12857
diff changeset
18
26421
4b0fc75f9403 urls: bulk-change primary website URLs
Matt Mackall <mpm@selenic.com>
parents: 16217
diff changeset
19 See https://mercurial-scm.org/ for detailed installation
3935
1158d7018052 Move README info to wiki
Matt Mackall <mpm@selenic.com>
parents: 3847
diff changeset
20 instructions, platform-specific notes, and Mercurial user information.