So, we have this performance problem case where you have a working
copy with a lot of mixed revisions (say, all the files are at a
different rev from all the directories), and the server takes a long
time to process the report, sometimes leading to an HTTP timeout.
My transactionless report code doesn't make report-processing streamy
(it would take a lot of rearchitecting to allow the server to start
driving the editor before the report is complete), but I believe it
does make the processing of large reports a lot faster. Here are my
results for a repository containing the svn 0.35.1 tarball contents:
Old code: 22.0 seconds
New code: 7.4 seconds
Since there is some amount of client work involved in the trials, I
don't know many times performance is better for report-processing.
But it should be at least 3x better.
My methodology, for the curious:
Setup
-----
Create a repository
Import the svn 0.35.1 tarball contents
Check it out (over file://) as "wc"
find . -name .svn -prune -o -type f -print | xargs svn ps foo bar
svn ci -m logmsg
Preserve this working directory as wcsave
Trial
-----
rm -rf wc ; cp -r wcsave wc ; cd wc ; time svn up ; cd ..
I did ten trials each with the new and old code, interleaved
1/1/4/4/5/5. My trial results:
New code:
1.030u 0.320s 0:07.40 18.2% 0+0k 0+0io 594pf+0w
1.110u 0.310s 0:16.62 8.5% 0+0k 0+0io 589pf+0w
1.160u 0.270s 0:06.50 22.0% 0+0k 0+0io 628pf+0w
1.070u 0.370s 0:04.52 31.8% 0+0k 0+0io 589pf+0w
1.140u 0.250s 0:03.06 45.4% 0+0k 0+0io 589pf+0w
1.190u 0.220s 0:04.07 34.6% 0+0k 0+0io 592pf+0w
1.130u 0.270s 0:03.91 35.8% 0+0k 0+0io 589pf+0w
1.120u 0.320s 0:17.45 8.2% 0+0k 0+0io 589pf+0w
1.120u 0.280s 0:05.62 24.9% 0+0k 0+0io 589pf+0w
1.150u 0.230s 0:05.12 26.9% 0+0k 0+0io 589pf+0w
Old code:
5.390u 0.480s 0:21.31 27.5% 0+0k 0+0io 715pf+0w
5.250u 0.440s 0:29.01 19.6% 0+0k 0+0io 674pf+0w
5.070u 0.550s 0:17.91 31.3% 0+0k 0+0io 677pf+0w
5.130u 0.530s 0:17.01 33.2% 0+0k 0+0io 675pf+0w
5.500u 0.440s 0:20.23 29.3% 0+0k 0+0io 669pf+0w
5.210u 0.560s 0:16.94 34.0% 0+0k 0+0io 668pf+0w
5.190u 0.510s 0:27.91 20.4% 0+0k 0+0io 668pf+0w
5.310u 0.510s 0:28.23 20.6% 0+0k 0+0io 666pf+0w
5.200u 0.540s 0:22.84 25.1% 0+0k 0+0io 668pf+0w
5.370u 0.490s 0:18.45 31.7% 0+0k 0+0io 668pf+0w
I'm not sure why there is a ~14-second variance in some of the trials.
I'd say it has to do with BDB logfile creation, but the new code
shouldn't result in any logfiles being created.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Jan 10 05:04:03 2004