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

Re: [PATCH v3] speed up svn_txdelta_apply_instructions

From: Julian Foad <julian.foad_at_wandisco.com>
Date: Fri, 21 May 2010 12:19:09 +0100

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
> ]]]
Received on 2010-05-21 13:19:49 CEST

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