Hi Stefan.

Just a meta-question about the distribution of chunk sizes in different
types of repository.

You mention it's particularly visible in "non-packed" FSFS repositories.
However, AFAIK, packing an FSFS repository couldn't explain it because
that just appends multiple revision files into a single file, it does
not change the encoding of those files in any way.

A change in delta encoding happened in v1.4:
<http://subversion.apache.org/docs/release-notes/1.4.html#svndiff1>.
That seems the most likely explanation.

In an earlier message you wrote:
> Like much of the svndelta code, this code is mainly used for
> non-packed repositories.Packed repositories seem to have
> much larger delta chunks. Profiling data, I used during optimization:
> 
> a) flat (1.4 format) repository, total runtime ~4850 samples
> - non-optimized: 316 samples total in function, thereof 107 in memcpy
> - non-optimized: 245 samples total in function, thereof 64 in memcpy
> a) packed 1.6 repository, total runtime ~3700 samples
> - non-optimized: 100 samples total in function, thereof 95 in memcpy
> - non-optimized: 90 samples total in function, thereof 85 in memcpy

(I assume the second and fourth lines saying "non-optimized" meant to
say "optimized".)

Did you perhaps create your "1.4 format" repository using the
"--pre-1.4-compatible" option?  If so, that would explain it (and would
make it a "1.3 format" repository).

- Julian


On Fri, 2010-05-21 at 00:47 +0200, Stefan Fuhrmann wrote:
> Hi there,
> 
> this is an improved version of the patch posted here:
> 
>   http://svn.haxx.se/dev/archive-2010-05/0002.shtml
> 
> The improvements address the issues listed there:
> 
>   http://svn.haxx.se/dev/archive-2010-05/0216.shtml
> 
> -- Stefan^2.
> 
> 
> [[[
> svn_txdelta_apply_instructions is relatively slow for long
> instruction sequences copying small pieces of data. This
> seems to be particularly visible in non-packed FSFS
> repositories.
> 
> This patch extracts invariants out from the 'for' loop,
> optimizes overlapping copies as well as small data copy
> runtime. 
> 
> * subversion/libsvn_delta/text_delta.c
>   (fast_memcpy, patterning_copy): new functions,
>   optimized for our specific workload
>   (svn_txdelta_apply_instructions): reduce loop overhead,
>   use fast_memcpy and patterning_copy
>  
> patch by stefanfuhrmann < at > alice-dsl.de
> ]]]


Reply via email to