]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
btlazy2 : optimization for dictionary compression
authorYann Collet <cyan@fb.com>
Fri, 29 Dec 2017 18:14:18 +0000 (19:14 +0100)
committerYann Collet <cyan@fb.com>
Fri, 29 Dec 2017 18:14:18 +0000 (19:14 +0100)
we want the dictionary table to be fully sorted,
not just lazily filled.
Dictionary loading is a bit more intensive,
but it saves cpu cycles for match search during compression.

lib/compress/zstd_compress.c
tests/playTests.sh

index 4e05e287c02e4d6beb4199851e30a3f68b57e4ea..32d15116bf773ee456429d7d3d70c1b955f16939 100644 (file)
@@ -1950,11 +1950,7 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_CCtx* zc, const void* src, size_t
             ZSTD_insertAndFindFirstIndex(zc, iend-HASH_READ_SIZE, zc->appliedParams.cParams.searchLength);
         break;
 
-    case ZSTD_btlazy2:
-        if (srcSize >= HASH_READ_SIZE)
-            ZSTD_updateDUBT(zc, iend-HASH_READ_SIZE, iend, zc->appliedParams.cParams.searchLength);
-        break;
-
+    case ZSTD_btlazy2:   /* we want the dictionary table fully sorted */
     case ZSTD_btopt:
     case ZSTD_btultra:
         if (srcSize >= HASH_READ_SIZE)
index fa1efeb5908ef0095b1eb20eb5381a34938e72e5..ee93b10a53b53546cdcc8cf3f1728e72a332914f 100755 (executable)
@@ -322,9 +322,14 @@ $ECHO "- Create first dictionary "
 TESTFILE=../programs/zstdcli.c
 $ZSTD --train *.c ../programs/*.c -o tmpDict
 cp $TESTFILE tmp
+$ECHO "- Dictionary compression roundtrip"
 $ZSTD -f tmp -D tmpDict
 $ZSTD -d tmp.zst -D tmpDict -fo result
 $DIFF $TESTFILE result
+$ECHO "- Dictionary compression with btlazy2 strategy"
+$ZSTD -f tmp -D tmpDict --zstd=strategy=6
+$ZSTD -d tmp.zst -D tmpDict -fo result
+$DIFF $TESTFILE result
 if [ -n "$hasMT" ]
 then
     $ECHO "- Test dictionary compression with multithreading "