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

Re: Improving the performance of libsvn_wc for checkouts/updates/switches

From: Josh Pieper <jjp_at_pobox.com>
Date: 2004-05-22 20:24:49 CEST

Philip Martin wrote:
> Josh Pieper <jjp@pobox.com> writes:
>
> > Since ghudson is working on turning a O(n^2) import into O(n), I
> > thought I would look at what in the working copy library was causing
> > O(n^2) behavior for checkouts and updates.
>
> You may like to read notes/entries-caching which contains some of my
> observations about the entries file code.
>
>
> > Step 2:
> > Make the log file execution code read the entries file once at the
> > beginning of the log file, then make all subsequent changes to an in
> > memory hash. The entries file is written out only once, immediately
> > before the log file is completed. This involved making new versions
> > of svn_wc__entry_modify and svn_wc__get_keywords that would use the
> > in-memory entries hash.
>
> The current log file execution code already does most (perhaps all) of
> that, take a look at do_sync in svn_wc__entry_modify. Also the
> entries caching code should ensure that the entries file is read only
> once per access baton. I believe the checkout/update slow down is due
> to repeated writing of the entries file, at present it is written once
> per log file.

Wow, thanks Philip! You're right, only my step 1 above is necessary
to realize the performance improvement since entries caching is
already implemented.

Ok, so instead of the suggested entries+changes approach mentioned in
'entries-caching', I essentially just saved up the log-file until the
entire directory modification is done. In order to let updates be
resumable, I had to add a pool cleanup handler that runs the
directory's log files when its pool is destroyed prematurely before
the entire update has completed. Is this OK?

-Josh

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat May 22 20:25:06 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.