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 (http://subversion.tigris.org/issues/show_bug.cgi?id=3074#desc5): [[[ 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 http://subversion.tigris.org/issues/show_bug.cgi?id=3074#desc7 (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. Cheers, Johan