On Sun, 2010-03-28, Stefan Fuhrmann wrote:
> Hi devs,
> 
> this is part of the delta_files() speedup patch series:
> http://svn.haxx.se/dev/archive-2010-03/0604.shtml
> 
> translate_chunk spends most of its time in a loop
> looking for the next '$' or newline. The call to strchr
> is excessively expensive since the 'interesting' string
> is no longer than 3 chars.
> 
> It is much more efficient to use a simple lookup table
> (boolean array) that tells us whether a certain char
> is 'interesting' or not. Since we call it for almost every
> char in the file, the initialization overhead amortizes
> within the first two lines of the respective file.
> 
> Performance gain is ~9%:
> 
> s~$ time ~/1.7-928181/svn export --ignore-externals -q $REPO/trunk /dev/shm/t
> real    0m3.727s
> user    0m3.189s
> sys     0m0.542s
> 
> ~$ time ~/1.7-patched/svn export --ignore-externals -q $REPO/trunk /dev/shm/t
> real    0m3.410s
> user    0m2.872s
> sys     0m0.537s
> 
> -- Stefan^2.
> 
> [[[
> Optimize the search for 'interesting' characters that
> control the keyword substitution. For details see
> http:// ...
> 
> * subversion/libsvn_subr/subst.c
>   (translation_baton): the 'interesting' member is now
>   a boolean array.
>   (create_translation_baton): adapt initialization code
>   (translate_chunk): eliminate call to strchr
> 
> patch by stefanfuhrmann < at > alice-dsl.de
> ]]]

This patch looks lovely, from the point of view of a read-through
review.

- Julian


Reply via email to