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