diff options
author | Yann Collet <yann.collet.73@gmail.com> | 2014-09-13 18:49:01 (GMT) |
---|---|---|
committer | Yann Collet <yann.collet.73@gmail.com> | 2014-09-13 18:49:01 (GMT) |
commit | 56c2b79ed015d4b154d4bd3a9cab27e7c613ba51 (patch) | |
tree | c2bf30ba320863f53e583ce4326b231dc331ecf7 /lz4.c | |
parent | 38912f55e3c3b782529c2dd1e682d6af7c8bd052 (diff) | |
download | lz4-56c2b79ed015d4b154d4bd3a9cab27e7c613ba51.zip lz4-56c2b79ed015d4b154d4bd3a9cab27e7c613ba51.tar.gz lz4-56c2b79ed015d4b154d4bd3a9cab27e7c613ba51.tar.bz2 |
Frame decompression speed optimization
Diffstat (limited to 'lz4.c')
-rw-r--r-- | lz4.c | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -1153,14 +1153,29 @@ Advanced decoding functions : the dictionary must be explicitly provided within parameters */ +FORCE_INLINE int LZ4_decompress_usingDict_generic(const char* source, char* dest, int compressedSize, int maxOutputSize, int safe, const char* dictStart, int dictSize) +{ + if ((dictStart+dictSize == source) && (dictSize >= (int)(64 KB - 1))) + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, withPrefix64k, NULL, 64 KB); + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, safe, full, 0, usingExtDict, dictStart, dictSize); +} + int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) { - return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, dictStart, dictSize); + //return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, dictStart, dictSize); + return LZ4_decompress_usingDict_generic(source, dest, compressedSize, maxOutputSize, 1, dictStart, dictSize); } int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize) { - return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, usingExtDict, dictStart, dictSize); + //return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, full, 0, usingExtDict, dictStart, dictSize); + return LZ4_decompress_usingDict_generic(source, dest, 0, originalSize, 0, dictStart, dictSize); +} + +/* debug function */ +int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, full, 0, usingExtDict, dictStart, dictSize); } |