Optimize the copies performed by svn_txdelta_apply_instructions().
Optimize the copies performed by svn_txdelta_apply_instructions().

svn_txdelta_apply_instructions() is relatively slow for long instruction
sequences copying small pieces of data.  This is particularly visible in
"format 2" FSFS repositories.

Two kinds of copy are involved.  For simple copies, the system's memcpy()
is used, which is fast for long lengths; this patch bypasses it for very
short lengths.  For intentionally overlapping copies, a custom loop is used,
which was already fast for very short lengths; this patch adds a code path
that is fast for longer lengths.

* subversion/libsvn_delta/text_delta.c
  (fast_memcpy, patterning_copy): New functions, optimized for our specific
    workload.
  (svn_txdelta_apply_instructions): Use fast_memcpy() and patterning_copy().

Patch by: Stefan Fuhrmann <stefanfuhrmann{_AT_}alice-dsl.de>
(I tweaked the comments and split Stefan's patch into two parts, of which
this is the first.)

jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion,jmckaskill/subversion