git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Derrick Stolee <stolee@gmail.com>
To: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: [ANNOUNCE] Git v2.24.0-rc0
Date: Mon, 21 Oct 2019 16:48:09 -0400	[thread overview]
Message-ID: <c554383b-b569-79f8-88f6-7017be76da9d@gmail.com> (raw)
In-Reply-To: <xmqq4l065zx5.fsf@gitster-ct.c.googlers.com>

(dropping some of the other aliases from this reply)

I ran a few of the performance tests against the Linux repository
using v2.22.0, v2.23.0, and the new v2.24.0-rc0. I thought it worth
pointing out that the drastic performance improvements are due to
turning on the commit-graph by default. I had computed a commit-graph
for my Linux repo, but used my global config to enable core.commitGraph.
The global config is ignored by perf tests, so v2.22.0 and v2.23.0 were
operating without looking at the commit-graph.

(These were run on my old dev machine, which is now running Ubuntu on
bare metal. No VM this time!)

Test                                                          v2.22.0               v2.23.0                     v2.24.0-rc0             
----------------------------------------------------------------------------------------------------------------------------------------
0001.1: rev-list --all                                        6.01(5.73+0.28)       5.99(5.73+0.25) -0.3%       0.97(0.80+0.16) -83.9%  
0001.2: rev-list --all --objects                              40.40(39.86+0.54)     40.22(39.59+0.62) -0.4%     35.28(34.75+0.52) -12.7%
0001.3: rev-list --parents                                    6.11(5.83+0.27)       6.07(5.82+0.25) -0.7%       1.03(0.86+0.16) -83.1%  
0001.5: rev-list -- dummy                                     0.64(0.58+0.06)       0.66(0.59+0.07) +3.1%       0.34(0.29+0.05) -46.9%  
0001.6: rev-list --parents -- dummy                           0.66(0.60+0.05)       0.67(0.62+0.05) +1.5%       0.36(0.32+0.03) -45.5%  
0001.8: rev-list $commit --not --all                          0.03(0.02+0.01)       0.03(0.02+0.01) +0.0%       0.03(0.02+0.01) +0.0%   
0001.9: rev-list --objects $commit --not --all                0.08(0.05+0.03)       0.08(0.05+0.03) +0.0%       0.09(0.07+0.02) +12.5%  
0002.1: read_cache/discard_cache 1000 times                   3.33(3.07+0.25)       3.32(3.05+0.27) -0.3%       3.31(3.10+0.21) -0.6%   
0005.2: read-tree status br_ballast (65695)                   0.48(0.42+0.23)       0.46(0.43+0.19) -4.2%       0.49(0.48+0.18) +2.1%   
0006.2: read-tree br_base br_ballast (65695)                  0.17(0.14+0.03)       0.17(0.15+0.01) +0.0%       0.18(0.16+0.02) +5.9%   
0006.3: switch between br_base br_ballast (65695)             7.17(5.35+2.10)       6.84(5.14+2.04) -4.6%       6.67(5.07+1.88) -7.0%   
0006.4: switch between br_ballast br_ballast_plus_1 (65695)   0.35(0.37+0.29)       0.34(0.32+0.33) -2.9%       0.35(0.33+0.34) +0.0%   
0006.5: switch between aliases (65695)                        0.33(0.34+0.31)       0.32(0.34+0.30) -3.0%       0.34(0.34+0.32) +3.0%   
0007.2: write_locked_index 3 times (65695 files)              0.17(0.16+0.01)       0.17(0.15+0.02) +0.0%       0.18(0.16+0.01) +5.9%   
0071.2: sort(1)                                               6.01(17.44+1.78)      6.05(17.44+1.69) +0.7%      5.85(17.07+1.69) -2.7%  
0071.3: string_list_sort()                                    15.81(14.94+0.87)     15.80(14.83+0.97) -0.1%     15.86(15.03+0.83) +0.3% 
4205.1: log with %H                                           6.46(6.14+0.31)       6.42(6.15+0.26) -0.6%       5.95(5.71+0.24) -7.9%   
4205.2: log with %h                                           7.06(6.74+0.32)       7.02(6.75+0.27) -0.6%       6.47(6.26+0.21) -8.4%   
4205.3: log with %T                                           6.43(6.13+0.29)       6.41(6.10+0.30) -0.3%       6.24(5.95+0.29) -3.0%   
4205.4: log with %t                                           7.29(7.04+0.24)       7.28(6.96+0.32) -0.1%       7.05(6.78+0.27) -3.3%   
4205.5: log with %P                                           6.44(6.19+0.24)       6.51(6.19+0.31) +1.1%       5.95(5.69+0.25) -7.6%   
4205.6: log with %p                                           7.03(6.70+0.33)       7.01(6.74+0.27) -0.3%       6.52(6.26+0.26) -7.3%   
4205.7: log with %h-%h-%h                                     7.79(7.57+0.22)       7.79(7.55+0.24) +0.0%       7.10(6.84+0.26) -8.9%   
4211.2: git rev-list --topo-order (baseline)                  6.32(6.04+0.28)       6.30(6.09+0.21) -0.3%       1.15(0.96+0.19) -81.8%  
4211.3: git log --follow (baseline for -M)                    8.58(8.43+0.14)       8.56(8.41+0.15) -0.2%       3.67(3.53+0.13) -57.2%  
4211.4: git log -L (renames off)                              32.79(30.68+2.10)     32.80(30.69+2.11) +0.0%     27.17(25.24+1.93) -17.1%
4211.5: git log -L (renames on)                               212.64(210.39+2.24)   213.48(211.26+2.20) +0.4%   27.38(25.53+1.84) -87.1%
4211.6: git log --oneline --raw --parents                     46.41(45.97+0.43)     46.34(45.81+0.52) -0.2%     46.03(45.46+0.57) -0.8% 
4211.7: git log --oneline --raw --parents -1000               0.09(0.07+0.01)       0.09(0.09+0.00) +0.0%       0.09(0.08+0.00) +0.0%   

The tests below are some that I don't run very often, but seemed
interesting. Interesting that rebase got a lot faster!

Test                                                            v2.22.0               v2.23.0                     v2.24.0-rc0              
-------------------------------------------------------------------------------------------------------------------------------------------
0100.2: refglob((a*)^nb) against tag (a^100).t; n = 1           0.01(0.01+0.00)       0.00(0.01+0.00) -100.0%     0.01(0.01+0.00) +0.0%    
0100.3: refglob((a*)^nb) against tag (a^100).t; n = 2           0.01(0.01+0.00)       0.01(0.01+0.00) +0.0%       0.01(0.01+0.00) +0.0%    
0100.4: refglob((a*)^nb) against tag (a^100).t; n = 3           0.01(0.01+0.00)       0.01(0.01+0.00) +0.0%       0.01(0.01+0.00) +0.0%    
0100.5: refglob((a*)^nb) against tag (a^100).t; n = 4           0.02(0.02+0.00)       0.02(0.02+0.00) +0.0%       0.02(0.02+0.00) +0.0%    
0100.6: refglob((a*)^nb) against tag (a^100).t; n = 5           0.14(0.14+0.00)       0.14(0.13+0.00) +0.0%       0.14(0.14+0.00) +0.0%    
0100.7: refglob((a*)^nb) against tag (a^100).t; n = 6           2.11(2.11+0.00)       2.11(2.10+0.00) +0.0%       2.14(2.14+0.00) +1.4%    
0100.8: fileglob((a*)^nb) against file (a^100).t; n = 1         0.01(0.01+0.00)       0.01(0.01+0.00) +0.0%       0.01(0.01+0.00) +0.0%    
0100.9: fileglob((a*)^nb) against file (a^100).t; n = 2         0.01(0.01+0.00)       0.01(0.01+0.00) +0.0%       0.01(0.01+0.00) +0.0%    
0100.10: fileglob((a*)^nb) against file (a^100).t; n = 3        0.01(0.00+0.01)       0.01(0.01+0.00) +0.0%       0.01(0.01+0.00) +0.0%    
0100.11: fileglob((a*)^nb) against file (a^100).t; n = 4        0.02(0.02+0.00)       0.02(0.02+0.00) +0.0%       0.02(0.02+0.00) +0.0%    
0100.12: fileglob((a*)^nb) against file (a^100).t; n = 5        0.14(0.14+0.00)       0.14(0.14+0.00) +0.0%       0.15(0.15+0.00) +7.1%    
0100.13: fileglob((a*)^nb) against file (a^100).t; n = 6        2.10(2.09+0.00)       2.11(2.11+0.00) +0.5%       2.10(2.10+0.00) +0.0%    
1450.1: fsck                                                    535.66(535.16+0.48)   531.12(530.65+0.46) -0.8%   533.41(532.91+0.48) -0.4%
1451.3: fsck with 0 skipped bad commits                         7.47(7.02+0.45)       7.42(7.03+0.39) -0.7%       7.24(6.83+0.41) -3.1%    
1451.5: fsck with 1 skipped bad commits                         7.49(7.12+0.37)       7.42(7.02+0.39) -0.9%       7.26(6.92+0.34) -3.1%    
1451.7: fsck with 10 skipped bad commits                        7.45(7.02+0.42)       7.47(7.07+0.39) +0.3%       7.26(6.84+0.41) -2.6%    
1451.9: fsck with 100 skipped bad commits                       7.55(7.10+0.44)       7.49(7.07+0.41) -0.8%       7.29(6.87+0.42) -3.4%    
1451.11: fsck with 1000 skipped bad commits                     7.56(7.14+0.42)       7.46(7.06+0.40) -1.3%       7.28(6.94+0.33) -3.7%    
1451.13: fsck with 10000 skipped bad commits                    7.48(7.13+0.34)       7.49(7.11+0.37) +0.1%       7.57(7.19+0.38) +1.2%    
1451.15: fsck with 100000 skipped bad commits                   7.40(7.04+0.35)       7.38(7.02+0.36) -0.3%       7.21(6.80+0.41) -2.6%    
1451.17: fsck with 1000000 skipped bad commits                  6.19(6.10+0.09)       6.16(6.05+0.11) -0.5%       5.98(5.87+0.10) -3.4%    
3400.2: rebase on top of a lot of unrelated changes             18.86(17.80+1.71)     18.80(17.80+1.66) -0.3%     2.63(2.49+0.79) -86.1%   
3400.4: rebase a lot of unrelated changes without split-index   68.00(62.32+5.04)     68.50(62.34+5.30) +0.7%     45.25(41.37+4.18) -33.5% 
3400.6: rebase a lot of unrelated changes with split-index      46.39(44.89+2.19)     46.24(44.66+2.30) -0.3%     25.00(24.49+1.23) -46.1% 
4000.1: log -3000 (baseline)                                    0.07(0.06+0.00)       0.07(0.06+0.01) +0.0%       0.07(0.05+0.01) +0.0%    
4000.2: log --raw -3000 (tree-only)                             0.21(0.18+0.02)       0.20(0.19+0.01) -4.8%       0.21(0.18+0.02) +0.0%    
4000.3: log -p -3000 (Myers)                                    2.01(1.89+0.12)       2.03(1.92+0.10) +1.0%       2.03(1.91+0.11) +1.0%    
4000.4: log -p -3000 --histogram                                2.02(1.94+0.08)       2.04(1.95+0.08) +1.0%       2.02(1.96+0.07) +0.0%    
4000.5: log -p -3000 --patience                                 2.57(2.50+0.07)       2.57(2.46+0.10) +0.0%       2.54(2.45+0.09) -1.2%    
4001.2: diff --no-index                                         0.01(0.01+0.00)       0.01(0.01+0.00) +0.0%       0.01(0.01+0.00) +0.0%    
5304.4: prune with no objects                                   0.00(0.01+0.00)       0.01(0.00+0.00) +inf        0.01(0.00+0.00) +inf     
5304.6: prune with bitmaps                                      2.76(2.47+0.29)       2.69(2.45+0.23) -2.5%       2.67(2.36+0.31) -3.3%    
7300.2: clean many untracked sub dirs, check for nested git     1.36(0.54+0.81)       1.35(0.51+0.82) -0.7%       1.53(0.62+0.90) +12.5%   
7300.3: clean many untracked sub dirs, ignore nested git        1.19(0.47+0.71)       1.22(0.51+0.69) +2.5%       1.19(0.53+0.64) +0.0%    
7300.4: ls-files -o                                             0.75(0.33+0.41)       0.76(0.34+0.41) +1.3%       0.74(0.25+0.48) -1.3%   

Any thoughts on 7300.2? Seems to not just be noise, or maybe it is?

Thanks,
-Stolee

  reply	other threads:[~2019-10-21 20:48 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-18  6:29 [ANNOUNCE] Git v2.24.0-rc0 Junio C Hamano
2019-10-21 20:48 ` Derrick Stolee [this message]
2019-10-21 23:04   ` Elijah Newren
2019-10-22  6:42     ` Jeff King
2019-10-21 22:05 ` Git for Windows v2.24.0-rc0, was " Johannes Schindelin
2019-10-22 14:50   ` [git-for-windows] " Philip Oakley
2019-10-24 23:08     ` Johannes Schindelin
2019-10-24 23:34       ` Jeff King
2019-10-25  8:18         ` Johannes Schindelin
2019-10-25 16:58           ` Jeff King
2019-10-24 18:24   ` Bryan Turner
2019-10-24 22:52     ` Johannes Schindelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c554383b-b569-79f8-88f6-7017be76da9d@gmail.com \
    --to=stolee@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).