git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [ANNOUNCE] Git v2.24.0-rc0

From
Derrick Stolee <stolee@gmail.com>
Date
Oct 21, 2019, 20:48 UTC
Message-ID
<c554383b-b569-79f8-88f6-7017be76da9d@gmail.com>
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

Previous: Junio C HamanoNext: Elijah Newren
Message 2 of 12 in “[ANNOUNCE] Git v2.24.0-rc0”
  1. Junio C HamanoOct 18, 2019
  2. Derrick StoleeOct 21, 2019
  3. Elijah NewrenOct 21, 2019
  4. Jeff KingOct 22, 2019
  5. Git for Windows v2.24.0-rc0, was Re: [ANNOUNCE] Git v2.24.0-rc0Johannes Schindelin, Oct 21, 2019
  6. Philip OakleyOct 22, 2019
  7. Johannes SchindelinOct 24, 2019
  8. Jeff KingOct 24, 2019
  9. Johannes SchindelinOct 25, 2019
  10. Jeff KingOct 25, 2019
  11. Bryan TurnerOct 24, 2019
  12. Johannes SchindelinOct 24, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.