From: "Jon Smirl" <jonsmirl@gmail.com>
To: "Petr Baudis" <pasky@suse.cz>
Cc: git <git@vger.kernel.org>
Subject: Re: local clone performance
Date: Thu, 27 Jul 2006 14:36:19 -0400 [thread overview]
Message-ID: <9e4733910607271136n55545959y3dbff97b1e5efe31@mail.gmail.com> (raw)
In-Reply-To: <20060727181554.GD13776@pasky.or.cz>
On 7/27/06, Petr Baudis <pasky@suse.cz> wrote:
> Dear diary, on Thu, Jul 27, 2006 at 01:38:00AM CEST, I got a letter
> where Jon Smirl <jonsmirl@gmail.com> said that...
> > Comparing git-clone to cg-clone
> >
> > [jonsmirl@jonsmirl apps]$ time git-clone git foo
> > ......
> > real 0m5.755s
> > user 0m4.548s
> > sys 0m0.512s
> >
> > [jonsmirl@jonsmirl apps]$ time cg-clone git foo
> > ....
> > real 0m18.970s
> > user 0m10.737s
> > sys 0m1.392s
> >
> > Why does it take cg clone so long to set up the missing tags?
> > git-clone is over 3x faster.
>
> How many tags do you have?
I am cloning the git source tree. It looks to have about 40 tags.
> It's true that cg-clone does not scale very well with big amounts of
> tags, because it won't fetch tagged objects you wouldn't get otherwise
> (so if you tagged some random huge blob or a history line which is not
> part of any branch you have, cg-clone won't grab it all). This
> unfortunately costs us one special fetch invocation per tag; I will look
> into hacking git-local-fetch to accept multiple commit ids at once, that
> should speed it up considerably.
>
> That said, with cg-clone -a I will be able to cut that difference
> entirely and blindly take everything from the other repository.
>
> Could you please try the patch below and check if it has at least
> any measurable impact on the performance at all? Thanks.
New timings
real 0m11.259s
user 0m9.977s
sys 0m1.280s
That's a 40% improvement.
> diff --git a/cg-fetch b/cg-fetch
> index a6e6959..23e0e77 100755
> --- a/cg-fetch
> +++ b/cg-fetch
> @@ -54,7 +54,6 @@ _git_wc_unneeded=1
>
> fetch_progress()
> {
> - [ $verbose -ge 2 ] && exec cat
> if [ -t 1 ]; then
> exec "${COGITO_LIB}"cg-Xfetchprogress "$_git_objects"
> else
> @@ -166,7 +165,11 @@ fetch_http()
> {
> whead=
> [ "$3" ] && whead="-w $3"
> - (git-http-fetch -a -v $whead $recovery "$1" "$2/" 2>&1 /dev/null) | fetch_progress
> + if [ $verbose -ge 2 ]; then
> + git-http-fetch -a -v $whead $recovery "$1" "$2/"
> + else
> + (git-http-fetch -a -v $whead $recovery "$1" "$2/" 2>&1 /dev/null) | fetch_progress
> + fi
> return ${PIPESTATUS[0]}
> }
>
> @@ -197,7 +200,11 @@ fetch_local()
> {
> whead=
> [ "$3" ] && whead="-w $3"
> - (git-local-fetch -a -l -v $whead $recovery "$1" "$2" 2>&1 /dev/null) | fetch_progress
> + if [ $verbose -ge 2 ]; then
> + git-local-fetch -a -l -v $whead $recovery "$1" "$2"
> + else
> + (git-local-fetch -a -l -v $whead $recovery "$1" "$2" 2>&1 /dev/null) | fetch_progress
> + fi
> return ${PIPESTATUS[0]}
> }
>
> @@ -230,6 +237,7 @@ fetch_tags()
> # if so, fetch the tag -- which should be
> # a cheap operation -- to complete the chain.
> echo -n "Missing tag ${tagname#tags/}... "
> + local verbose=2
> if $fetch "$tagname" "$uri" "$tagname" 2>/dev/null >&2; then
> echo "retrieved"
> else
>
>
> --
> Petr "Pasky" Baudis
> Stuff: http://pasky.or.cz/
> Snow falling on Perl. White noise covering line noise.
> Hides all the bugs too. -- J. Putnam
>
--
Jon Smirl
jonsmirl@gmail.com
prev parent reply other threads:[~2006-07-27 18:36 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-26 23:38 local clone performance Jon Smirl
2006-07-27 18:15 ` Petr Baudis
2006-07-27 18:36 ` Jon Smirl [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=9e4733910607271136n55545959y3dbff97b1e5efe31@mail.gmail.com \
--to=jonsmirl@gmail.com \
--cc=git@vger.kernel.org \
--cc=pasky@suse.cz \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).