Mercurial > hgsubversion
annotate Makefile @ 889:7a98fbadcae9
revsets: huge speedups for fromsvn and svnrev
I have a hgsubversion repo that contains over 300,000 commits.
In that repo, this patch improves performance as follows:
hg --time log -r 'first(fromsvn())'
Before: 40.3 sec
After: 0.8 sec
hg --time log -r 'svnrev(350000)'
Before: 40.3 sec
After: 0.1 sec
Note: the performance of these revset implementations is very sensitive
to doing as little work as possible per line of the rev_map file.
I originally attempted to hide the file format details by hoisting the
parsing of each line up into RevMap.readmapfile, but the current less
abstract code is dramatically (10x or more) faster.
If the revmap file is missing, we error out and print a message
describing what to do.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Sat, 12 May 2012 05:38:34 -0700 |
parents | 055f9254d790 |
children |
rev | line source |
---|---|
683
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
1 # Makefile for testing hgsubversion |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
2 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
3 PYTHON=python |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
4 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
5 .PHONY: all check check-demandimport check-subvertpy check-swig |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
6 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
7 all: |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
8 @echo "Use the following commands to build and install hgsubversion:" |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
9 @echo |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
10 @echo "$$ cd $(PWD)" |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
11 @echo "$$ $(PYTHON) ./setup.py install" |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
12 @echo |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
13 @exit 1 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
14 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
15 check: check-demandimport check-subvertpy check-swig |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
16 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
17 check-demandimport: |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
18 # verify that hgsubversion loads properly without bindings, but fails |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
19 # when actually used |
879
055f9254d790
Makefile: set HGRCPATH to protects us from broken environments
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
683
diff
changeset
|
20 ! LC_ALL=C HGSUBVERSION_BINDINGS=none HGRCPATH=/dev/null \ |
683
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
21 hg --config extensions.hgsubversion=./hgsubversion \ |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
22 version 2>&1 \ |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
23 | egrep '(^abort:|failed to import extension)' |
879
055f9254d790
Makefile: set HGRCPATH to protects us from broken environments
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
683
diff
changeset
|
24 LC_ALL=C HGSUBVERSION_BINDINGS=none HGRCPATH=/dev/null \ |
683
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
25 hg --config extensions.hgsubversion=./hgsubversion \ |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
26 version --svn 2>&1 \ |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
27 | egrep '(^abort:|failed to import extension)' |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
28 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
29 check-subvertpy: |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
30 $(PYTHON) tests/run.py --all --bindings=subvertpy |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
31 |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
32 check-swig: |
4589d48c9e1b
tests: add a Makefile for easily running the tests.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
33 $(PYTHON) tests/run.py --all --bindings=swig |