Judging from the source code the current implementation uses Runtime.exec("svn ...") calls (in net.sf.statcvs.util.ProcessUtils and derived classes )to interface with svn. Is there a specific reason why this was done since svn javahl bindings and/or JavaSVN have been available from quite some time. By using these bindings this may (or not?) speed up.
Just my 2 cents.
A design decision we took early in the project was to go with the straight SVN calls because we were worried about the maintainability of the approach, but I don't have any good arguments to give you. If you're interested testing out performance w/ the bindings, it would be great to see the effect on performance. However, I think the biggest bottleneck is the network right now as we have no other way to figure out line count information from the server other than download the svn diff and count lines manually...
Making more calls to the server (via multithreading) would not necessarily help either because the server might think we are doing a denial of service attack.