On Fri, Apr 07, 2017 at 09:20:47PM +0000, [email protected] wrote:
> This helps performance on very large repositories.
>
> ================
> Before and after numbers on index with 1M files
> ./p0004-read-tree.sh
> 0004.2: read-tree work1 (1003037) 3.21(2.54+0.62)
> 0004.3: switch base work1 (3038 1003037) 7.49(5.39+1.84)
> 0004.5: switch work1 work2 (1003037) 11.91(8.38+3.00)
> 0004.6: switch commit aliases (1003037) 12.22(8.30+3.06)
>
> ./p0004-read-tree.sh
> 0004.2: read-tree work1 (1003040) 2.40(1.65+0.73)
> 0004.3: switch base work1 (3041 1003040) 6.07(4.12+1.66)
> 0004.5: switch work1 work2 (1003040) 10.23(6.76+2.92)
> 0004.6: switch commit aliases (1003040) 10.53(6.97+2.83)
> ================
By the way, you may want to try:
$ cd t/perf
$ ./run HEAD^ HEAD p0004-read-tree.sh
which gives you the before/after in a nice table, with percentage
changes:
Test HEAD^ HEAD
-----------------------------------------------------------------------------------
0004.2: read-tree work1 (1003065) 2.34(1.90+0.42) 1.91(1.51+0.38)
-18.4%
0004.3: switch base work1 (3066 1003065) 5.12(4.14+0.96) 4.45(3.55+0.88)
-13.1%
0004.5: switch work1 work2 (1003065) 8.55(6.63+1.87) 7.78(5.76+2.00)
-9.0%
0004.6: switch commit aliases (1003065) 8.59(6.75+1.80) 7.64(5.92+1.70)
-11.1%
The results are stored for each tested version, so you can re-run just a
single test and then re-output the results with "./aggregate.perl HEAD^
HEAD p0004-read-tree.sh".
The "run" script obviously builds each version behind the scenes, so you
probably also want to set GIT_PERF_MAKE_OPTS as appropriate (at the very
least "-j16" makes it more pleasant).
-Peff