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

Re: [PATCH 0/8] Optimization batch 10: avoid detecting even more irrelevant renames

From
Derrick Stolee <stolee@gmail.com>
Date
Mar 15, 2021, 15:21 UTC
Message-ID
<8422759a-a4a3-4dc6-4ae7-4a61896b9946@gmail.com>
In-Reply-To
<pull.853.git.1615674128.gitgitgadget@gmail.com>
On 3/13/2021 5:22 PM, Elijah Newren via GitGitGadget wrote:> === Results ===
Show 26 quoted lines
> 
> For the testcases mentioned in commit 557ac03 ("merge-ort: begin performance
> work; instrument with trace2_region_* calls", 2020-10-28), the changes in
> just this series improves the performance as follows:
> 
>                      Before Series           After Series
> no-renames:        5.680 s ±  0.096 s     5.665 s ±  0.129 s 
> mega-renames:     13.812 s ±  0.162 s    11.435 s ±  0.158 s
> just-one-mega:   506.0  ms ±  3.9  ms   494.2  ms ±  6.1  ms
> 
> 
> While those results may look somewhat meager, it is important to note that
> the previous optimizations have already reduced rename detection time to
> nearly 0 for these particular testcases so there just isn't much left to
> improve. The final patch in the series shows an alternate testcase where the
> previous optimizations aren't as effective (a simple cherry-pick of a commit
> that simply adds one new empty file), where there was a speedup factor of
> approximately 3 due to this series:
> 
>                      Before Series           After Series
> pick-empty:        1.936 s ±  0.024 s     688.1 ms ±  4.2 ms
> 
> 
> There was also another testcase at $DAYJOB where I saw a factor 7
> improvement from this particular optimization, so it certainly has the
> potential to help when the previous optimizations are not quite enough.
These performance numbers continue to be impressive.

I read through this series and found it clearly described. I can't completely vouch for its correctness, because there are a lot of moving parts at this point. I'll trust the test cases and Elijah's additional manual testing at this point.

Outside of me talking out loud about an enum (which you can ignore) I didn't see anything unusual about the code.

Thanks, -Stolee

Previous: Elijah Newren via GitGitGadgetNext: Elijah Newren
Message 13 of 14 in “Optimization batch 10: avoid detecting even more irrelevant renames”
  1. 0/8 Optimization batch 10: avoid detecting even more irrelevant renamesElijah Newren via GitGitGadget, Mar 13, 2021
  2. 6/8 diffcore-rename: add computation of number of unknown renamesElijah Newren via GitGitGadget, Mar 13, 2021
  3. 4/8 diffcore-rename: only compute dir_rename_count for relevant directoriesElijah Newren via GitGitGadget, Mar 13, 2021
  4. 1/8 diffcore-rename: take advantage of "majority rules" to skip more renamesElijah Newren via GitGitGadget, Mar 13, 2021
  5. 5/8 diffcore-rename: check if we have enough renames for directories early onElijah Newren via GitGitGadget, Mar 13, 2021
  6. 2/8 merge-ort, diffcore-rename: tweak dirs_removed and relevant_source typeElijah Newren via GitGitGadget, Mar 13, 2021
  7. 3/8 merge-ort: record the reason that we want a rename for a directoryElijah Newren via GitGitGadget, Mar 13, 2021
  8. Derrick StoleeMar 15, 2021
  9. Elijah NewrenMar 15, 2021
  10. Junio C HamanoMar 28, 2021
  11. 8/8 diffcore-rename: determine which relevant_sources are no longer relevantElijah Newren via GitGitGadget, Mar 13, 2021
  12. 7/8 merge-ort: record the reason that we want a rename for a fileElijah Newren via GitGitGadget, Mar 13, 2021
  13. Derrick StoleeMar 15, 2021
  14. Elijah NewrenMar 15, 2021

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.