From: Johan Herland Date: Thu, 19 Jun 2008 08:58:58 GMT Subject: Re: What's cooking in git.git (topics) Message-ID: <200806191058.58074.johan@herland.net> In-Reply-To: <7v3anb19n7.fsf@gitster.siamese.dyndns.org> On Wednesday 18 June 2008, Junio C Hamano wrote: > [New Topics] > > * jh/clone-packed-refs (Sun Jun 15 16:06:16 2008 +0200) 4 commits > - Teach "git clone" to pack refs > - Prepare testsuite for a "git clone" that packs refs > - Move pack_refs() and friends into libgit > - Incorporate fetched packs in future object traversal > > Would be helpful cloning from a repository with insanely large number of > refs. The first 3 patches (i.e. the bottom 3 in the above list) might be considered general cleanup patches, and are independent of each other (i.e. you might want to include them on their own merit, independently of patch #4). The final patch doesn't make any difference for "regular" repos (e.g. git.git with ~200 refs) on Linux (see below). But once the number of refs increase, the difference becomes obvious. Here are some numbers to give some more context: All tests done on 64-bit quad-core Linux, cloning locally (hard-linked): ~200 refs (git.git): current next: 0.2s w/above patches: 0.2s ~1000 refs (test repo): current next: 0.16s w/above patches: 0.05s ~11000 refs (test repo): current next: 1.3s w/above patches: 0.3s ~26000 refs (actual repo at $dayjob): current next: 3.2s w/above patches: 0.8s Regards, ...Johan -- Johan Herland, www.herland.net