On Mon, Jul 26, 2021 at 8:44 AM Derrick Stolee <stolee@xxxxxxxxx> wrote: > > On 7/23/2021 8:54 AM, Elijah Newren via GitGitGadget wrote: > ... > > === Basic Optimization idea === > > > > In this series, I make use of memory pools to get faster allocations and > > deallocations for many data structures that tend to all be deallocated at > > the same time anyway. > > Makes sense. This is appropriate for a final optimization, since the gains > tend to be quite small. > > > === Results === > > > > For the testcases mentioned in commit 557ac0350d ("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: 204.2 ms ± 3.0 ms 198.3 ms ± 2.9 ms > > mega-renames: 1.076 s ± 0.015 s 661.8 ms ± 5.9 ms > > just-one-mega: 364.1 ms ± 7.0 ms 264.6 ms ± 2.5 ms > > > But these are larger than I anticipated! Amazing. > > > === Overall Results across all optimization work === > > I enjoyed reading this section. I'm excited to make ORT the default in > the microsoft/git fork and see how this improves the lives of our users. > > > === Caveat === > > > > It may be worth noting, though, that my optimization numbers above for > > merge-ort use test-tool fast-rebase. git rebase -s ort on the three > > testcases above is 5-20 times slower (taking 3.835s, 6.798s, and 1.235s, > > respectively). > > The performance and behavior changes recommended here should definitely > be considered. However, the benefits still apply and at the moment users > do not expect immediate responses from 'git rebase' so we have some time > to approach with caution. > > I only had one small question that is not even important to the > correctness of this series, so feel free to ignore it. The patches tell > a convincing story. > > Just to be careful, have you taken the time to run the merge-ORT tests > with --valgrind? Yes. In addition to the testsuite, I also ran the testcases above under valgrind (especially mega-renames) -- and with those testcases I had the leak checker turned on. It was somewhat surprising how much slowdown I saw when I introduced some accidental memory leaks while optimizing. But it all runs clean with the patches I submitted.