All Projects → emmanuel-marty → em_inflate

emmanuel-marty / em_inflate

Licence: Zlib license
Fast, small, in-memory inflate (zlib, deflate and gzip decompression)

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to em inflate

Denoflate
WebAssembly powered Deflate/Gzip/Zlib compression for Deno, written in Rust
Stars: ✭ 80 (+35.59%)
Mutual labels:  compression, gzip, zlib
power-gzip
POWER9 gzip engine documentation and code samples
Stars: ✭ 16 (-72.88%)
Mutual labels:  compression, gzip, zlib
Zippy
Pure Nim implementation of deflate, zlib, gzip and zip.
Stars: ✭ 88 (+49.15%)
Mutual labels:  compression, gzip, zlib
zlib
Compression and decompression in the gzip and zlib formats
Stars: ✭ 32 (-45.76%)
Mutual labels:  compression, gzip, zlib
Uzlib
Radically unbloated DEFLATE/zlib/gzip compression/decompression library. Can decompress any gzip/zlib data, and offers simplified compressor which produces gzip-compatible output, while requiring much less resources (and providing less compression ratio of course).
Stars: ✭ 168 (+184.75%)
Mutual labels:  compression, gzip, zlib
Turbobench
Compression Benchmark
Stars: ✭ 211 (+257.63%)
Mutual labels:  compression, gzip, zlib
Huffman-Coding
A C++ compression program based on Huffman's lossless compression algorithm and decoder.
Stars: ✭ 81 (+37.29%)
Mutual labels:  compression, huffman, compression-implementations
deflate-rs
An implementation of a DEFLATE encoder in rust
Stars: ✭ 47 (-20.34%)
Mutual labels:  compression, gzip, zlib
zopflipy
A Python bindings for Zopfli
Stars: ✭ 17 (-71.19%)
Mutual labels:  compression, zlib, zopfli
decompress
Pure OCaml implementation of Zlib.
Stars: ✭ 103 (+74.58%)
Mutual labels:  compression, huffman, zlib
Datacompression
Swift libcompression wrapper as an extension for the Data type (GZIP, ZLIB, LZFSE, LZMA, LZ4, deflate, RFC-1950, RFC-1951, RFC-1952)
Stars: ✭ 191 (+223.73%)
Mutual labels:  compression, gzip, zlib
Leanify
lightweight lossless file minifier/optimizer
Stars: ✭ 694 (+1076.27%)
Mutual labels:  compression, gzip
Minizip Ng
Fork of the popular zip manipulation library found in the zlib distribution.
Stars: ✭ 750 (+1171.19%)
Mutual labels:  compression, zlib
Zlib Ng
zlib replacement with optimizations for "next generation" systems.
Stars: ✭ 807 (+1267.8%)
Mutual labels:  compression, zlib
Fflate
High performance (de)compression in an 8kB package
Stars: ✭ 547 (+827.12%)
Mutual labels:  compression, zlib
Genozip
Compressor for genomic files (FASTQ, SAM/BAM, VCF, FASTA, GVF, 23andMe...), up to 5x better than gzip and faster too
Stars: ✭ 53 (-10.17%)
Mutual labels:  compression, gzip
Sharpcompress
SharpCompress is a fully managed C# library to deal with many compression types and formats.
Stars: ✭ 1,397 (+2267.8%)
Mutual labels:  compression, gzip
Fast zlib
Heavily optimized zlib compression algorithm
Stars: ✭ 105 (+77.97%)
Mutual labels:  compression, zlib
Lzbench
lzbench is an in-memory benchmark of open-source LZ77/LZSS/LZMA compressors
Stars: ✭ 490 (+730.51%)
Mutual labels:  compression, zlib
Fastify Compress
Fastify compression utils
Stars: ✭ 95 (+61.02%)
Mutual labels:  compression, gzip

em_inflate -- Fast, in-memory, single file decompressor for zlib, deflate and gzip

em_inflate is a one-file, single function call, memory-to-memory decompressor for the zlib, deflate and gzip bitstream formats:

RFC 1950: ZLIB specification

RFC 1951: DEFLATE specification

RFC 1952: GZIP specification

You just need to add em_inflate.c and em_inflate.h to your project and call em_inflate() to decompress some data.

em_inflate is less than 1,200 lines of C (including 300 lines of two different flavors of checksums), and decompresses faster than zlib.

enwik8 decompression (gzip bitstream, 100,000,000 bytes compressed to 36,445,248 with gzip -9):

Decompressor                      Time (microseconds), core i7
zlib inflate 1.2.11               426,167 (100%)
em_inflate (verify checksum)      358,118 (84%)
em_inflate (skip checksum)        275,847 (64%)

large raw texture decompression (zlib bitstream, 32,212,992 bytes compressed to 13,721,537 with gzip -9):

Decompressor                      Time (microseconds), core i7
zlib inflate 1.2.11               127,945 (100%)
em_inflate (verify checksum)      114,369 (89%)
em_inflate (skip checksum)        105,476 (82%)

Code size (linux x86_64, clang 6.0.0 -O3, most of the rodata is checksum tables)

With checksums                    10,334 (code) + 4,624 (rodata)  14,958
Without checksums                 8,510 (code) + 518 (rodata)     9,028

em_inflate is developed by Emmanuel Marty. gzip crc32 checksum by Stephen Brumme. adler checksum computation by Mark Adler. All code is licensed under the zlib license, with the gzip crc32 code under a zlib-like license. All mentions are included in the sourcecode.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].