Mercurial > hg
annotate CONTRIBUTING @ 47119:15395fd8ab28
dirstate-tree: Use HashMap instead of BTreeMap
BTreeMap has the advantage of its "natural" iteration order being the one we need
in the status algorithm. With HashMap however, iteration order is undefined so
we need to allocate a Vec and sort it explicitly.
Unfortunately many BTreeMap operations are slower than in HashMap, and skipping
that extra allocation and sort is not enough to compensate.
Switching to HashMap + sort makes `hg status` 17% faster in one test case,
as measure with hyperfine:
```
Benchmark #1: ../hg2/hg status -R $REPO --config=experimental.dirstate-tree.in-memory=1
Time (mean ± σ): 765.0 ms ± 8.8 ms [User: 1.352 s, System: 0.747 s]
Range (min … max): 751.8 ms … 778.7 ms 10 runs
Benchmark #2: ./hg status -R $REPO --config=experimental.dirstate-tree.in-memory=1
Time (mean ± σ): 651.8 ms ± 9.9 ms [User: 1.251 s, System: 0.799 s]
Range (min … max): 642.2 ms … 671.8 ms 10 runs
Summary
'./hg status -R $REPO --config=experimental.dirstate-tree.in-memory=1' ran
1.17 ± 0.02 times faster than '../hg2/hg status -R $REPO --config=experimental.dirstate-tree.in-memory=1'
```
* ./hg is this revision
* ../hg2/hg is its parent
* $REPO is an old snapshot of mozilla-central
Differential Revision: https://phab.mercurial-scm.org/D10553
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Thu, 29 Apr 2021 11:32:57 +0200 |
parents | a492610a2fc1 |
children |
rev | line source |
---|---|
30084
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 Our full contribution guidelines are in our wiki, please see: |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 https://www.mercurial-scm.org/wiki/ContributingChanges |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 If you just want a checklist to follow, you can go straight to |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 https://www.mercurial-scm.org/wiki/ContributingChanges#Submission_checklist |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
8 |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
9 If you can't run the entire testsuite for some reason (it can be |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
10 difficult on Windows), please at least run `contrib/check-code.py` on |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
11 any files you've modified and run `python contrib/check-commit` on any |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
12 commits you've made (for example, `python contrib/check-commit |
a492610a2fc1
contributing: add new file with a pointer to the wiki
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
13 273ce12ad8f1` will report some style violations on a very old commit). |