Re: [PATCH] git-completion.bash - avoid excruciatingly slow ref completion on Cygwin

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Oct 11, 2014 at 11:51 PM, Mark Levedahl <mlevedahl@xxxxxxxxx> wrote:
>
> $git checkout <tab> was taking about 3.5 seconds to respond on one
> repository having four remotes with about 100 total refs (measured on
> Cygwin).  All of the time was being claimed in "git for-each-ref" to do
> its work.  This working directory was created using git-new-workdir, and
> thus .git/refs and .git/packed-refs are both symlinks.  for-each-ref
> operates in a way that causes the .git/refs symlink to be resolved
> multiple times for each ref in the repository, and Cygwin is especially
> slow in such operations.

Thanks for looking into this.

> Patching refs.c to avoid repeatedly dereferencing the symlink reduced
> execution time from about 3.5 seconds to about 1.1 seconds (but no
> improvement on Linux),

This makes your patch sound bad, but it isn't when one realises it is
already fast on Linux!

> [snip]
>
> Relevant timing results using the same repository on both Linux and
> Cygwin:

FWIW, timings on msysgit:

$ time git for-each-ref --format="%(refname:short)" refs

real    0m8.799s
user    0m0.109s
sys     0m0.250s

$ time (cd "$GIT_DIR" ; cat packed-refs ; find refs/ -type f) \
        2>/dev/null | sed -ne 's@^.*refs/@refs/@p' | sort | uniq

real    0m3.406s
user    0m1.073s
sys     0m2.398s

so while your symlink-analysis might not accurately describe msysgit
(I believe copies are made in place of a symlink), msysgit benefits
from this too.

-- 
Cheers,
Ray Chuan
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]