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

Transactionless reporter performance results

From: Greg Hudson <ghudson_at_MIT.EDU>
Date: 2004-01-10 05:03:27 CET

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

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.