Re: [PATCH 2/2] Implement a simple delta_base cache

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

 



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.";


[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]