From: Mike Hommey Date: Fri, 07 Nov 2008 21:28:36 GMT Subject: Re: absurdly slow git-diff Message-ID: <20081107212836.GA22717@glandium.org> In-Reply-To: <20081107200126.GA20284@toroid.org> On Sat, Nov 08, 2008 at 01:31:27AM +0530, Abhijit Menon-Sen wrote: > I have a 240k-line file, and I change one character on every sixth line. > The resulting diff gives git serious indigestion: > > $ git --version > git version 1.6.0.3.640.g6331a > $ mkdir a; cd a; git init > Initialized empty Git repository in /home/ams/a/.git/ > $ cp ../1 .; git add 1; git commit -q -m 1 > $ cp ../2 1; git add 1; git commit -q -m 2 You don't need to go that far. You can stop at cp ../2 1 and run git diff from there. All the time is spent in the two loops in xdiff/xprepare.c:xdl_cleanup_records, on line 400 and 412. I'll leave the rest of the investigation to people actually knowing this code ;) Mike