All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael J Gruber <git@drmicha.warpmail.net>
To: Piotr Krukowiecki <piotr.krukowiecki@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: git cherry improvements suggestions
Date: Thu, 24 Mar 2011 08:47:11 +0100	[thread overview]
Message-ID: <4D8AF6FF.4080209@drmicha.warpmail.net> (raw)
In-Reply-To: <AANLkTi=7NKn4FrCqFaGH+XTHRw3oLCv=aKPWAJfNsgD_@mail.gmail.com>

Piotr Krukowiecki venit, vidit, dixit 24.03.2011 08:40:
> On Wed, Mar 23, 2011 at 8:28 PM, Piotr Krukowiecki
> <piotr.krukowiecki@gmail.com> wrote:
>> On Wed, Mar 23, 2011 at 3:44 PM, Michael J Gruber
>> <git@drmicha.warpmail.net> wrote:
>>> Piotr Krukowiecki venit, vidit, dixit 23.03.2011 15:43:
>>>> On Wed, Mar 23, 2011 at 2:33 PM, Michael J Gruber
>>>> <git@drmicha.warpmail.net> wrote:
>>>>> Piotr Krukowiecki venit, vidit, dixit 23.03.2011 14:23:
>>>>>> Just some stats:
>>>>>>
>>>>>>    git log --cherry-mark --left-right --oneline --date-order branch...trunk
>>>>>>
>>>>>> lists 1004 commits, takes about 20s and memory peaks to about 670MB
>>>>>> twice during the run (I'm on linux with AMD Phenom II X4 945)
>>>>>>
>>>>>> With limit it prints X last commits (the limiting seems to take place after all
>>>>>> work, on the output list only).
>>>>>>
>>>>>> branch..trunk is 551 commits, the other way is 453 commits.
>>>>>> 710 commits are found to be "=", 98 "<", 196 ">".
>>>>>>
>>>>>> Note, I'm not saying it's too slow, or that it's working incorrectly, I'm just
>>>>>> giving real-life stats if anyone was interested.
>>>>>> I suspect such checks won't be done frequently.
>>>>>
>>>>> You don't need to say it's slow - I've said so already :(
>>>>>
>>>>> http://permalink.gmane.org/gmane.comp.version-control.git/169725
>>>>
>>>> In the link above:
>>>>   git cherry A B: 0.4s
>>>>   git rev-list --cherry A...B: 1.7s
>>>>
>>>> So rev-list is 4.25x slower.
>>>>
>>>> In my case it's only 1.23x slower:
>>>>
>>>>    $ time git rev-list --cherry branch...trunk  > /tmp/rev-list
>>>>    real       0m18.627s
>>>>    user       0m17.710s
>>>>    sys        0m0.900s
>>>>
>>>>    $ time git cherry  branch trunk  > /tmp/cherry
>>>>    real       0m15.345s
>>>>    user       0m14.310s
>>>>    sys        0m1.020s
>>>>
>>>>
>>>
>>> How's that with > /dev/null (or with --count for rev-list)? Also, how
>>> many merge bases do you have:
>>>
>>> git merge-base --all branch trunk | wc -l
>>
>> I expect only one - there should be no merges between those two
>> branches.
>>
>> I will do measurements tomorrow.
> 
> 
> Branches might change a bit since yesterday so the exact numbers
> might be a bit different.
> 
> 
> $ time git cherry  branch trunk  > /dev/null
> 
> real	0m15.246s
> user	0m14.260s
> sys	0m0.970s
> 
> 
> $ time git rev-list --cherry branch...trunk  > /dev/null
> 
> real	0m18.801s
> user	0m17.980s
> sys	0m0.800s
> 
> 
> $ time git rev-list --cherry --count branch...trunk
> 556
> 
> real	0m18.825s
> user	0m18.010s
> sys	0m0.770s
> 
> 
> $ time git merge-base --all branch trunk  | wc -l
> 2
> 
> real	0m0.538s
> user	0m0.490s
> sys	0m0.040s
> 
> 
> I expected one merge base, but it appears our history is
> seriously fscked, either by past svn operations or by
> git-svn clone :)
> 
> (I'm not saying there's an error somewhere, just that the
> history is ... complicated)
> 
> 

Thanks for the timings. In your case with only 2 merge bases, the merge
base calculation (or rather: simplification) does not make much of a
difference, at most 0.5s as we see. I'm still wondering where the rest
of the 3.5s difference (between cherry and --cherry) is spent, but at
least the ratio 18.8/15.2 is more bearable than in my case.
Unfortunately, this confirms my suspicion that there is more than 1 area
which would need improvement to match cherry's speed.

Michael

      reply	other threads:[~2011-03-24  7:50 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-23  8:11 git cherry improvements suggestions Piotr Krukowiecki
2011-03-23 10:46 ` Michael J Gruber
2011-03-23 13:23   ` Piotr Krukowiecki
2011-03-23 13:33     ` Michael J Gruber
2011-03-23 14:43       ` Piotr Krukowiecki
2011-03-23 14:44         ` Michael J Gruber
2011-03-23 19:28           ` Piotr Krukowiecki
2011-03-24  7:40             ` Piotr Krukowiecki
2011-03-24  7:47               ` Michael J Gruber [this message]

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

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

  git send-email \
    --in-reply-to=4D8AF6FF.4080209@drmicha.warpmail.net \
    --to=git@drmicha.warpmail.net \
    --cc=git@vger.kernel.org \
    --cc=piotr.krukowiecki@gmail.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.