Hi devs, in an attempt to speed up the SVN back-end, I profiled the code path that reads file contents from the repository. As hoped, I found some points of action resulting in a small patch set that gives roughly a 20% speedup.
This is what I did. On a svnsync'ed copy of the TSVN repository, I ran an export of /trunk over ra_local to minimize overhead. All data was in file cache and the export target was a RAM disk. Although analysis and development was conducted for 1.6.x on Win32, I confirmed the results with 1.7 on my xeon workstation: ~$ uname -s -r -m Linux 2.6.28-18-generic x86_64 ~$ time ~/1.7-928181/svn export --ignore-externals -q $REPO/trunk /dev/shm/t real 0m3.727s user 0m3.189s sys 0m0.542s ~$ time ~/1.7-patched/svn export --ignore-externals -q $REPO/trunk /dev/shm/t real 0m3.147s user 0m2.583s sys 0m0.570s (179 folders, 3660 files, 81.8MB) All numbers shown are the average of the 2nd to 4th of 4 consecutive runs. There is still some inevitable variation in the "sys" timing but "real" is accurate within less than 2 percent. All patches are against /trunk rev 928181. -- Stefan^2.

