From: Julian Phillips Date: Sun, 18 Mar 2007 05:30:01 GMT Subject: Re: [PATCH 2/2] Implement a simple delta_base cache Message-ID: In-Reply-To: On Sat, 17 Mar 2007, Linus Torvalds wrote: > On Sat, 17 Mar 2007, Nicolas Pitre wrote: >> >> Sure. But at this point the reference to compare GIT performance >> against might be GIT itself. And while 1 second is really nice in this >> case, there are some repos where it could be (and has already been >> reported to be) much more. > > I'd still like to see the KDE repo, that thing went quiet after it was > supposed to hit sneaker-net.. > > If it was 30 seconds before to do a "git log" for some individual file, > after the recent optimizations it should hopefully be down to 10. And I > agree that I might be more motivated to try to get it down further if I > could just find a repository where it's that much. In my test repository (which emulates a real repository in terms of approximate size in terms of commits, branches and tags) "git log f12000" takes about 15m (using 1.5.0.4). After applying patches 1/2 and 2/2 on top of master I get ~3m50s. With 3/2 as well it goes down a bit more to ~3m20s. I've attached the script that generated the repository in case you feel the urge to try some move time shaving exercises ... ;) (This is a rather unrealistic repository consisting of a long series of commits of new binary files, but I don't have access to the repository that is being approximated until I get back to work on Monday ...) -- Julian --- That must be wonderful: I don't understand it at all. -- Moliere #!/bin/bash # no. of commits branches and tags to make commits=25000; branches=900; tags=8000; # create a new file of this size (kb) for each commit commit_size=102; bs=1024; large=$1; ((bg = $commits / $branches)); ((tg = $commits / $tags)); echo "creating $large"; mkdir $large; cd $large; git init-db; i=0 while [ $i -lt $commits ]; do dd if=/dev/urandom of=f$i bs=${bs} count=${commit_size} > /dev/null 2>&1 git add f$i; git commit -m "add t$i"; ((ig = $i % $tg)); if [ $ig -eq 0 ]; then git tag t$i; echo -n "t"; fi ((ig = $i % $bg)); if [ $ig -eq 0 ]; then git branch b$i; echo -n "b"; fi echo -n "$i "; ((i = $i + 1)) done echo; echo "complete.";