* Why is --graph --max-count=n so much slower than --graph HEAD~n..?
@ 2014-05-20 22:17 Mitchel Humpherys
2014-05-20 22:50 ` Junio C Hamano
0 siblings, 1 reply; 4+ messages in thread
From: Mitchel Humpherys @ 2014-05-20 22:17 UTC (permalink / raw)
To: git; +Cc: jonas
I've noticed that --max-count doesn't seem to speed up `git log --graph'
computation time. Here are some numbers using the linux kernel
repository:
| command | time* |
|----------------------------------+-------|
| git log --graph --max-count=5000 | 4.11s |
| git log --graph --max-count=1000 | 4.05s |
| git log --graph --max-count=500 | 3.95s |
| git log --graph --max-count=50 | 3.95s |
| git log --graph --max-count=10 | 3.97s |
| git log --graph --max-count=1 | 3.96s |
However, specifying a manual revision range results in a much more
dramatic speedup as `n' decreases:
| command | time* |
|----------------------------------+-------|
| git log --graph HEAD~5000.. | 6.69s |
| git log --graph HEAD~1000.. | 1.89s |
| git log --graph HEAD~500.. | 0.03s |
| git log --graph HEAD~50.. | 0.02s |
| git log --graph HEAD~10.. | 0.02s |
| git log --graph HEAD~1.. | 0.00s |
* All times are "steady state" measurements after warming up the disk
cache by running the command a few times.
I see that the manual revision range doesn't seem to go back as far in
history when I diff the output of the two commands. However, if I add
`--max-count=50' to the `HEAD~50..' command I get the exact same commits
but with fewer "dangling" lines at the bottom of the graph in the
`HEAD~50..' approach.
Anyone care to provide any insight about what's going on here? Is this
expected behavior? Is there any low-hanging fruit for optimizing
--max-count --graph?
--
Mitch
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Why is --graph --max-count=n so much slower than --graph HEAD~n..?
2014-05-20 22:17 Why is --graph --max-count=n so much slower than --graph HEAD~n..? Mitchel Humpherys
@ 2014-05-20 22:50 ` Junio C Hamano
2014-05-21 0:13 ` Mitchel Humpherys
0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2014-05-20 22:50 UTC (permalink / raw)
To: Mitchel Humpherys; +Cc: git, jonas
Mitchel Humpherys <mitch.special@gmail.com> writes:
> I've noticed that --max-count doesn't seem to speed up `git log --graph'
> computation time.
AFAIK, --graph wants to compute the whole history and the max-count
only affects the output phase after --graph does its computation.
Besides, "log --max-count=n" and "log HEAD~n.." compute completely
different things, so the comparison is apples and oranges.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Why is --graph --max-count=n so much slower than --graph HEAD~n..?
2014-05-20 22:50 ` Junio C Hamano
@ 2014-05-21 0:13 ` Mitchel Humpherys
2014-05-21 0:24 ` Junio C Hamano
0 siblings, 1 reply; 4+ messages in thread
From: Mitchel Humpherys @ 2014-05-21 0:13 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, jonas
On Tue, May 20 2014 at 03:50:43 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Mitchel Humpherys <mitch.special@gmail.com> writes:
>
>> I've noticed that --max-count doesn't seem to speed up `git log --graph'
>> computation time.
>
> AFAIK, --graph wants to compute the whole history and the max-count
> only affects the output phase after --graph does its computation.
>
> Besides, "log --max-count=n" and "log HEAD~n.." compute completely
> different things, so the comparison is apples and oranges.
Yes, apples and oranges in a black box :). I provided the
HEAD~n.. measurements just to show that we can get (almost) the exact
same output another way and it's much faster. It just "seems like"
--max-count=n should speed things up as n decreases...
--
Mitch
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Why is --graph --max-count=n so much slower than --graph HEAD~n..?
2014-05-21 0:13 ` Mitchel Humpherys
@ 2014-05-21 0:24 ` Junio C Hamano
0 siblings, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2014-05-21 0:24 UTC (permalink / raw)
To: Mitchel Humpherys; +Cc: Git Mailing List, jonas
Surely. I am on a bus with terrible WiFi that does not let me use the
usual terminal,
but you would find a code in revision.c that sets revs->topo_order = 1
when it parses
"--graph" option. If you disable it, that would stop "--graph" from
wanting to compute
the whole history before starting to emit stuff (and then stop at nth
one with --max-count).
I do not know what other side effects such a change would have, though.
On Tue, May 20, 2014 at 5:13 PM, Mitchel Humpherys
<mitch.special@gmail.com> wrote:
> On Tue, May 20 2014 at 03:50:43 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> Mitchel Humpherys <mitch.special@gmail.com> writes:
>>
>>> I've noticed that --max-count doesn't seem to speed up `git log --graph'
>>> computation time.
>>
>> AFAIK, --graph wants to compute the whole history and the max-count
>> only affects the output phase after --graph does its computation.
>>
>> Besides, "log --max-count=n" and "log HEAD~n.." compute completely
>> different things, so the comparison is apples and oranges.
>
> Yes, apples and oranges in a black box :). I provided the
> HEAD~n.. measurements just to show that we can get (almost) the exact
> same output another way and it's much faster. It just "seems like"
> --max-count=n should speed things up as n decreases...
>
>
> --
> Mitch
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-05-21 0:24 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-20 22:17 Why is --graph --max-count=n so much slower than --graph HEAD~n..? Mitchel Humpherys
2014-05-20 22:50 ` Junio C Hamano
2014-05-21 0:13 ` Mitchel Humpherys
2014-05-21 0:24 ` Junio C Hamano
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.