[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Looking to improve performance of svn annotate

From: Johan Corveleyn <jcorvel_at_gmail.com>
Date: Sun, 21 Mar 2010 22:08:44 +0100

Hi all,

I'm very much looking forward to the performance (and other)
improvements wc-ng will bring us. But there's more to svn performance
than wc stuff :-). In our company, "svn annotate/blame/praise" is a
known offender (people who attended subconf 2009 may remember me as
the guy who complained about the annotate of a 2Mb file with 6000 revs
taking over 4 hours).

So, in the name of "make it faster, then make it faster again", and
feeling that maybe it's time to scratch one of my own itches, I'd like
to take a stab at this myself. I have no idea whether I'm up to this
task (I am a total newbie at svn development), but I can try. Until
now I have just analyzed some parts of the source code. I have setup a
build environment on my machine (on windows), and have been able to
run it from inside a debugger (Visual C 2008 Express Edition), setting
breakpoints, seeing what happens, ...

I am specifically looking at the suggestion that Julian made in the
following comment in the issue tracker

My idea for client-side improvement:

The client, while receiving binary diffs for successive revisions, could
calculate a byte-wise annotation of the file. (It probably would not have to
reconstruct full texts to do that.) Then, at the end, it could split the
byte-wise annotation at the file's line boundaries and report the highest
revision number within each line.

I might also take a look at Bert's suggestion in
(reversing the algorithm).

If anyone could help me get started with this (more specifics about
the above idea(s), or other ideas that could give a significant boost;
any pointers, parts of the code where I could get started, ...), that
would be very much appreciated.

Received on 2010-03-21 22:09:13 CET

This is an archived mail posted to the Subversion Dev mailing list.