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 > ]]]

