Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for kanzi 2.2 #130

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 54 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,53 @@ ZSTD_FILES += zstd/lib/dictBuilder/divsufsort.o
ZSTD_FILES += zstd/lib/dictBuilder/fastcover.o
ZSTD_FILES += zstd/lib/dictBuilder/zdict.o

ifeq "$(DONT_BUILD_KANZI)" "1"
DEFINES += -DBENCH_REMOVE_KANZI
KANZI_FILES =
else
KANZI_FILES = kanzi-cpp/src/io/CompressedOutputStream.o
KANZI_FILES += kanzi-cpp/src/io/CompressedInputStream.o
KANZI_FILES += kanzi-cpp/src/entropy/EntropyUtils.o
KANZI_FILES += kanzi-cpp/src/entropy/ExpGolombEncoder.o
KANZI_FILES += kanzi-cpp/src/entropy/FPAQEncoder.o
KANZI_FILES += kanzi-cpp/src/entropy/ANSRangeEncoder.o
KANZI_FILES += kanzi-cpp/src/entropy/ANSRangeDecoder.o
KANZI_FILES += kanzi-cpp/src/entropy/RiceGolombEncoder.o
KANZI_FILES += kanzi-cpp/src/entropy/RiceGolombDecoder.o
KANZI_FILES += kanzi-cpp/src/entropy/ExpGolombDecoder.o
KANZI_FILES += kanzi-cpp/src/entropy/HuffmanEncoder.o
KANZI_FILES += kanzi-cpp/src/entropy/FPAQDecoder.o
KANZI_FILES += kanzi-cpp/src/entropy/TPAQPredictor.o
KANZI_FILES += kanzi-cpp/src/entropy/CMPredictor.o
KANZI_FILES += kanzi-cpp/src/entropy/HuffmanCommon.o
KANZI_FILES += kanzi-cpp/src/entropy/RangeDecoder.o
KANZI_FILES += kanzi-cpp/src/entropy/RangeEncoder.o
KANZI_FILES += kanzi-cpp/src/entropy/BinaryEntropyEncoder.o
KANZI_FILES += kanzi-cpp/src/entropy/HuffmanDecoder.o
KANZI_FILES += kanzi-cpp/src/entropy/BinaryEntropyDecoder.o
KANZI_FILES += kanzi-cpp/src/bitstream/DefaultInputBitStream.o
KANZI_FILES += kanzi-cpp/src/bitstream/DebugOutputBitStream.o
KANZI_FILES += kanzi-cpp/src/bitstream/DebugInputBitStream.o
KANZI_FILES += kanzi-cpp/src/bitstream/DefaultOutputBitStream.o
KANZI_FILES += kanzi-cpp/src/Event.o
KANZI_FILES += kanzi-cpp/src/Global.o
KANZI_FILES += kanzi-cpp/src/transform/AliasCodec.o
KANZI_FILES += kanzi-cpp/src/transform/BWT.o
KANZI_FILES += kanzi-cpp/src/transform/RLT.o
KANZI_FILES += kanzi-cpp/src/transform/TextCodec.o
KANZI_FILES += kanzi-cpp/src/transform/EXECodec.o
KANZI_FILES += kanzi-cpp/src/transform/SBRT.o
KANZI_FILES += kanzi-cpp/src/transform/ROLZCodec.o
KANZI_FILES += kanzi-cpp/src/transform/LZCodec.o
KANZI_FILES += kanzi-cpp/src/transform/SRT.o
KANZI_FILES += kanzi-cpp/src/transform/DivSufSort.o
KANZI_FILES += kanzi-cpp/src/transform/BWTBlockCodec.o
KANZI_FILES += kanzi-cpp/src/transform/BWTS.o
KANZI_FILES += kanzi-cpp/src/transform/UTFCodec.o
KANZI_FILES += kanzi-cpp/src/transform/ZRLT.o
KANZI_FILES += kanzi-cpp/src/transform/FSDCodec.o
endif

BRIEFLZ_FILES = brieflz/brieflz.o brieflz/depack.o brieflz/depacks.o

LIBLZG_FILES = liblzg/decode.o liblzg/encode.o liblzg/checksum.o
Expand Down Expand Up @@ -193,12 +240,12 @@ else
SNAPPY_FILES = snappy/snappy-sinksource.o snappy/snappy-stubs-internal.o snappy/snappy.o
endif

ifeq "$(DONT_BUILD_FASTLZMA2)" "1"
#ifeq "$(DONT_BUILD_FASTLZMA2)" "1"
DEFINES += -DBENCH_REMOVE_FASTLZMA2
else
FASTLZMA2_SRC = $(wildcard fast-lzma2/*.c)
FASTLZMA2_OBJ = $(FASTLZMA2_SRC:.c=.o)
endif
#else
# FASTLZMA2_SRC = $(wildcard fast-lzma2/*.c)
# FASTLZMA2_OBJ = $(FASTLZMA2_SRC:.c=.o)
#endif

ifeq "$(DONT_BUILD_XPACK)" "1"
DEFINES += -DBENCH_REMOVE_XPACK
Expand Down Expand Up @@ -353,7 +400,7 @@ $(NVCOMP_CPP_OBJ): %.cpp.o: %.cpp

_lzbench/lzbench.o: _lzbench/lzbench.cpp _lzbench/lzbench.h

lzbench: $(BZIP2_FILES) $(DENSITY_FILES) $(FASTLZMA2_OBJ) $(ZSTD_FILES) $(GLZA_FILES) $(LZSSE_FILES) $(LZFSE_FILES) $(XPACK_FILES) $(GIPFELI_FILES) $(XZ_FILES) $(LIBLZG_FILES) $(BRIEFLZ_FILES) $(LZF_FILES) $(LZRW_FILES) $(BROTLI_FILES) $(CSC_FILES) $(LZMA_FILES) $(ZLING_FILES) $(QUICKLZ_FILES) $(SNAPPY_FILES) $(ZLIB_FILES) $(LZHAM_FILES) $(LZO_FILES) $(UCL_FILES) $(LZMAT_FILES) $(LZ4_FILES) $(LIBDEFLATE_FILES) $(MISC_FILES) $(NVCOMP_FILES) $(LZBENCH_FILES)
lzbench: $(BZIP2_FILES) $(KANZI_FILES) $(DENSITY_FILES) $(FASTLZMA2_OBJ) $(ZSTD_FILES) $(GLZA_FILES) $(LZSSE_FILES) $(LZFSE_FILES) $(XPACK_FILES) $(GIPFELI_FILES) $(XZ_FILES) $(LIBLZG_FILES) $(BRIEFLZ_FILES) $(LZF_FILES) $(LZRW_FILES) $(BROTLI_FILES) $(CSC_FILES) $(LZMA_FILES) $(ZLING_FILES) $(QUICKLZ_FILES) $(SNAPPY_FILES) $(ZLIB_FILES) $(LZHAM_FILES) $(LZO_FILES) $(UCL_FILES) $(LZMAT_FILES) $(LZ4_FILES) $(LIBDEFLATE_FILES) $(MISC_FILES) $(NVCOMP_FILES) $(LZBENCH_FILES)
$(CXX) $^ -o $@ $(LDFLAGS)
@echo Linked GCC_VERSION=$(GCC_VERSION) CLANG_VERSION=$(CLANG_VERSION) COMPILER=$(COMPILER)

Expand All @@ -370,4 +417,4 @@ lzbench: $(BZIP2_FILES) $(DENSITY_FILES) $(FASTLZMA2_OBJ) $(ZSTD_FILES) $(GLZA_F
$(CXX) $(CFLAGS) $< -c -o $@

clean:
rm -rf lzbench lzbench.exe *.o _lzbench/*.o bzip2/*.o fast-lzma2/*.o slz/*.o zstd/lib/*.o zstd/lib/*.a zstd/lib/common/*.o zstd/lib/compress/*.o zstd/lib/decompress/*.o zstd/lib/dictBuilder/*.o lzsse/lzsse2/*.o lzsse/lzsse4/*.o lzsse/lzsse8/*.o lzfse/*.o xpack/lib/*.o blosclz/*.o gipfeli/*.o xz/*.o xz/common/*.o xz/check/*.o xz/lzma/*.o xz/lz/*.o xz/rangecoder/*.o liblzg/*.o lzlib/*.o brieflz/*.o brotli/common/*.o brotli/enc/*.o brotli/dec/*.o libcsc/*.o wflz/*.o lzjb/*.o lzma/*.o density/buffers/*.o density/algorithms/*.o density/algorithms/cheetah/core/*.o density/algorithms/*.o density/algorithms/lion/forms/*.o density/algorithms/lion/core/*.o density/algorithms/chameleon/core/*.o density/*.o density/structure/*.o pithy/*.o glza/*.o libzling/*.o yappy/*.o shrinker/*.o fastlz/*.o ucl/*.o zlib/*.o lzham/*.o lzmat/*.o lz4/*.o crush/*.o lzf/*.o lzrw/*.o lzo/*.o snappy/*.o quicklz/*.o tornado/*.o libdeflate/lib/*.o libdeflate/lib/x86/*.o libdeflate/lib/arm/*.o nakamichi/*.o nvcomp/*.o
rm -rf lzbench lzbench.exe *.o _lzbench/*.o bzip2/*.o fast-lzma2/*.o slz/*.o zstd/lib/*.o zstd/lib/*.a zstd/lib/common/*.o zstd/lib/compress/*.o zstd/lib/decompress/*.o zstd/lib/dictBuilder/*.o lzsse/lzsse2/*.o lzsse/lzsse4/*.o lzsse/lzsse8/*.o lzfse/*.o xpack/lib/*.o blosclz/*.o gipfeli/*.o xz/*.o xz/common/*.o xz/check/*.o xz/lzma/*.o xz/lz/*.o xz/rangecoder/*.o liblzg/*.o lzlib/*.o brieflz/*.o brotli/common/*.o brotli/enc/*.o brotli/dec/*.o libcsc/*.o wflz/*.o lzjb/*.o lzma/*.o density/buffers/*.o density/algorithms/*.o density/algorithms/cheetah/core/*.o density/algorithms/*.o density/algorithms/lion/forms/*.o density/algorithms/lion/core/*.o density/algorithms/chameleon/core/*.o density/*.o density/structure/*.o pithy/*.o glza/*.o libzling/*.o yappy/*.o shrinker/*.o fastlz/*.o ucl/*.o zlib/*.o lzham/*.o lzmat/*.o lz4/*.o crush/*.o lzf/*.o lzrw/*.o lzo/*.o snappy/*.o quicklz/*.o tornado/*.o libdeflate/lib/*.o libdeflate/lib/x86/*.o libdeflate/lib/arm/*.o nakamichi/*.o nvcomp/*.o $KANZI_FILES
92 changes: 92 additions & 0 deletions _lzbench/compressors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,96 @@ int64_t lzbench_bzip2_decompress(char *inbuf, size_t insize, char *outbuf, size_

#endif // BENCH_REMOVE_BZIP2

#ifndef BENCH_REMOVE_KANZI
#include "kanzi-cpp/src/types.hpp"
#include "kanzi-cpp/src/util.hpp"
#include "kanzi-cpp/src/InputStream.hpp"
#include "kanzi-cpp/src/OutputStream.hpp"
#include "kanzi-cpp/src/io/CompressedInputStream.hpp"
#include "kanzi-cpp/src/io/CompressedOutputStream.hpp"

int64_t lzbench_kanzi_compress(char *inbuf, size_t insize, char *outbuf, size_t outsize, size_t level, size_t windowLog, char*) {
std::string entropy;
std::string transform;
uint32_t szBlock;

switch (level) {
case 0:
transform = "NONE";
entropy = "NONE";
szBlock = 4 * 1024 * 1024;
break;
case 1:
transform = "PACK+LZ";
entropy = "NONE";
szBlock = 4 * 1024 * 1024;
break;
case 2:
transform = "PACK+LZ";
entropy = "HUFFMAN";
szBlock = 4 * 1024 * 1024;
break;
case 3:
transform = "TEXT+UTF+PACK+MM+LZX";
entropy = "HUFFMAN";
szBlock = 4 * 1024 * 1024;
break;
case 4:
transform = "TEXT+UTF+EXE+PACK+MM+ROLZ";
entropy = "NONE";
szBlock = 4 * 1024 * 1024;
break;
case 5:
transform = "TEXT+UTF+BWT+RANK+ZRLT";
entropy = "ANS0";
szBlock = 4 * 1024 * 1024;
break;
case 6:
transform = "TEXT+UTF+BWT+SRT+ZRLT";
entropy = "FPAQ";
szBlock = 8 * 1024 * 1024;
break;
case 7:
transform = "LZP+TEXT+UTF+BWT+LZP";
entropy = "CM";
szBlock = 16 * 1024 * 1024;
break;
case 8:
transform = "EXE+RLT+TEXT+UTF";
entropy = "TPAQ";
szBlock = 16 * 1024 * 1024;
break;
case 9:
transform = "EXE+RLT+TEXT+UTF";
entropy = "TPAQX";
szBlock = 32 * 1024 * 1024;
break;
default:
return -1;
}

ostreambuf<char> buf(outbuf, outsize);
std::iostream os(&buf);
int cores = std::max(int(std::thread::hardware_concurrency()) / 2, 1); // Defaults to half the cores
kanzi::CompressedOutputStream cos(os, entropy, transform, szBlock, false, std::min(cores, 64));
cos.write(inbuf, insize);
cos.close();
return cos.getWritten();
}

int64_t lzbench_kanzi_decompress(char *inbuf, size_t insize, char *outbuf, size_t outsize, size_t level, size_t, char*)
{
istreambuf<char> buf(inbuf, insize);
std::iostream is(&buf);
int cores = std::max(int(std::thread::hardware_concurrency()) / 2, 1); // Defaults to half the cores
kanzi::CompressedInputStream cis(is, std::min(cores, 64));
cis.read(outbuf, outsize);
cis.close();
return outsize;//cis.getRead();
}
#endif // BENCH_REMOVE_KANZI




#ifndef BENCH_REMOVE_CRUSH
Expand Down Expand Up @@ -187,6 +277,7 @@ int64_t lzbench_fastlz_decompress(char *inbuf, size_t insize, char *outbuf, size



/*
#ifndef BENCH_REMOVE_FASTLZMA2
#include "fast-lzma2/fast-lzma2.h"

Expand All @@ -204,6 +295,7 @@ int64_t lzbench_fastlzma2_decompress(char *inbuf, size_t insize, char *outbuf, s
return ret;
}
#endif // BENCH_REMOVE_FASTLZMA2
*/


#ifndef BENCH_REMOVE_GIPFELI
Expand Down
7 changes: 7 additions & 0 deletions _lzbench/compressors.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ int64_t lzbench_return_0(char *inbuf, size_t insize, char *outbuf, size_t outsiz
#define lzbench_brieflz_decompress NULL
#endif

#ifndef BENCH_REMOVE_KANZI
int64_t lzbench_kanzi_compress(char *inbuf, size_t insize, char *outbuf, size_t outsize, size_t level, size_t, char*);
int64_t lzbench_kanzi_decompress(char *inbuf, size_t insize, char *outbuf, size_t outsize, size_t, size_t, char*);
#else
#define lzbench_kanzi_compress NULL
#define lzbench_kanzi_decompress NULL
#endif // BENCH_REMOVE_KANZI

#ifndef BENCH_REMOVE_BROTLI
int64_t lzbench_brotli_compress(char *inbuf, size_t insize, char *outbuf, size_t outsize, size_t level, size_t, char*);
Expand Down
3 changes: 2 additions & 1 deletion _lzbench/lzbench.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,13 +136,14 @@ typedef struct



#define LZBENCH_COMPRESSOR_COUNT 72
#define LZBENCH_COMPRESSOR_COUNT 73

static const compressor_desc_t comp_desc[LZBENCH_COMPRESSOR_COUNT] =
{
{ "memcpy", "", 0, 0, 0, 0, lzbench_return_0, lzbench_memcpy, NULL, NULL },
{ "blosclz", "2.0.0", 1, 9, 0, 64*1024, lzbench_blosclz_compress, lzbench_blosclz_decompress, NULL, NULL },
{ "brieflz", "1.3.0", 1, 9, 0, 0, lzbench_brieflz_compress, lzbench_brieflz_decompress, lzbench_brieflz_init, lzbench_brieflz_deinit },
{ "kanzi", "2.2", 0, 9, 0, 0, lzbench_kanzi_compress, lzbench_kanzi_decompress, NULL, NULL },
{ "brotli", "1.0.9", 0, 11, 0, 0, lzbench_brotli_compress, lzbench_brotli_decompress, NULL, NULL },
{ "brotli22", "1.0.9", 0, 11, 22, 0, lzbench_brotli_compress, lzbench_brotli_decompress, NULL, NULL },
{ "brotli24", "1.0.9", 0, 11, 24, 0, lzbench_brotli_compress, lzbench_brotli_decompress, NULL, NULL },
Expand Down
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ environment:
- PLATFORM: "mingw32"
CC_COMPILER: "gcc"
CXX_COMPILER: "g++"
MORE_OPTIONS: "BUILD_ARCH=32-bit DONT_BUILD_GLZA=1 DONT_BUILD_LZHAM=1"
MORE_OPTIONS: "BUILD_ARCH=32-bit DONT_BUILD_GLZA=1 DONT_BUILD_LZHAM=1 DONT_BUILD_KANZI=1"
- PLATFORM: "mingw64"
CC_COMPILER: "gcc"
CXX_COMPILER: "g++"
Expand Down
Loading