stef...@apache.org writes:

> Author: stefan2
> Date: Mon Jan 20 16:23:15 2014
> New Revision: 1559767
>
> URL: http://svn.apache.org/r1559767
> Log:
> Speed up txdelta for non-deltifyable sections.  This alone speeds up
> the commit of a 1GB random data file form 28s to 14s.
>
> The idea is to use a fixed-length bit array that tell us whether we
> _might_ have a match for a given checksum.  In contrast to the iterative,
> multi-level check in find_match, this pre-check is very fast and highly
> predictable.
>
> * subversion/libsvn_delta/xdelta.c
>   (FLAGS_COUNT): Define a new array size constant.
>   (blocks): Add the FLAGS array.
>   (hash_flags): New, separate hash function for FLAGS.
>   (add_block): Populate / update FLAGS as well.
>   (init_blocks_table): Initialize FLAGS.
>   (compute_delta): Add a tight loop skipping non-matching sections;
>                    continue with normal lookup when there might be match.

This is triggering valgrind warnings in random-test:

$ valgrind -q .libs/lt-random-test 2
==19698== Conditional jump or move depends on uninitialised value(s)
==19698==    at 0x402EAA3: bcmp (mc_replace_strmem.c:935)
==19698==    by 0x4052114: find_block (xdelta.c:201)
==19698==    by 0x4052314: find_match (xdelta.c:284)
==19698==    by 0x40527A3: compute_delta (xdelta.c:428)
==19698==    by 0x4052A4D: svn_txdelta__xdelta (xdelta.c:494)
==19698==    by 0x404FF49: compute_window (text_delta.c:160)
==19698==    by 0x4050718: txdelta_next_window (text_delta.c:392)
==19698==    by 0x40504D7: svn_txdelta_next_window (text_delta.c:346)
==19698==    by 0x402794: do_random_combine_test (random-test.c:446)
==19698==    by 0x402A4B: random_combine_test (random-test.c:499)
==19698==    by 0x403BDBB: do_test_num (svn_test_main.c:396)
==19698==    by 0x403CECD: main (svn_test_main.c:866)
==19698== 
==19698== Conditional jump or move depends on uninitialised value(s)
==19698==    at 0x4052117: find_block (xdelta.c:201)
==19698==    by 0x4052314: find_match (xdelta.c:284)
==19698==    by 0x40527A3: compute_delta (xdelta.c:428)
==19698==    by 0x4052A4D: svn_txdelta__xdelta (xdelta.c:494)
==19698==    by 0x404FF49: compute_window (text_delta.c:160)
==19698==    by 0x4050718: txdelta_next_window (text_delta.c:392)
==19698==    by 0x40504D7: svn_txdelta_next_window (text_delta.c:346)
==19698==    by 0x402794: do_random_combine_test (random-test.c:446)
==19698==    by 0x402A4B: random_combine_test (random-test.c:499)
==19698==    by 0x403BDBB: do_test_num (svn_test_main.c:396)
==19698==    by 0x403CECD: main (svn_test_main.c:866)
==19698== 
PASS:  lt-random-test 2: random combine delta test

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Reply via email to