]>
Commit | Line | Data |
---|---|---|
350d8701 JH |
1 | #!/bin/sh |
2 | # | |
3 | # This test measures the performance of various read-tree | |
4 | # and checkout operations. It is primarily interested in | |
5 | # the algorithmic costs of index operations and recursive | |
6 | # tree traversal -- and NOT disk I/O on thousands of files. | |
7 | ||
8 | test_description="Tests performance of read-tree" | |
9 | ||
10 | . ./perf-lib.sh | |
11 | ||
12 | test_perf_default_repo | |
13 | ||
14 | # If the test repo was generated by ./repos/many-files.sh | |
15 | # then we know something about the data shape and branches, | |
16 | # so we can isolate testing to the ballast-related commits | |
17 | # and setup sparse-checkout so we don't have to populate | |
18 | # the ballast files and directories. | |
19 | # | |
20 | # Otherwise, we make some general assumptions about the | |
21 | # repo and consider the entire history of the current | |
22 | # branch to be the ballast. | |
23 | ||
24 | test_expect_success "setup repo" ' | |
25 | if git rev-parse --verify refs/heads/p0006-ballast^{commit} | |
26 | then | |
74d2f569 ES |
27 | echo Assuming synthetic repo from many-files.sh && |
28 | git branch br_base master && | |
29 | git branch br_ballast p0006-ballast^ && | |
30 | git branch br_ballast_alias p0006-ballast^ && | |
31 | git branch br_ballast_plus_1 p0006-ballast && | |
32 | git config --local core.sparsecheckout 1 && | |
350d8701 JH |
33 | cat >.git/info/sparse-checkout <<-EOF |
34 | /* | |
35 | !ballast/* | |
36 | EOF | |
37 | else | |
74d2f569 ES |
38 | echo Assuming non-synthetic repo... && |
39 | git branch br_base $(git rev-list HEAD | tail -n 1) && | |
40 | git branch br_ballast HEAD^ || error "no ancestor commit from current head" && | |
41 | git branch br_ballast_alias HEAD^ && | |
350d8701 JH |
42 | git branch br_ballast_plus_1 HEAD |
43 | fi && | |
44 | git checkout -q br_ballast && | |
45 | nr_files=$(git ls-files | wc -l) | |
46 | ' | |
47 | ||
48 | test_perf "read-tree br_base br_ballast ($nr_files)" ' | |
77b9e85c | 49 | git read-tree -n -m br_base br_ballast |
350d8701 JH |
50 | ' |
51 | ||
52 | test_perf "switch between br_base br_ballast ($nr_files)" ' | |
53 | git checkout -q br_base && | |
54 | git checkout -q br_ballast | |
55 | ' | |
56 | ||
57 | test_perf "switch between br_ballast br_ballast_plus_1 ($nr_files)" ' | |
58 | git checkout -q br_ballast_plus_1 && | |
59 | git checkout -q br_ballast | |
60 | ' | |
61 | ||
62 | test_perf "switch between aliases ($nr_files)" ' | |
63 | git checkout -q br_ballast_alias && | |
64 | git checkout -q br_ballast | |
65 | ' | |
66 | ||
67 | test_done |