em_inflate.c

Fast, small, in-memory inflate (zlib, deflate and gzip decompression)
git clone git://git.finwo.net/lib/em_inflate.c
Log | Files | Refs | README | LICENSE

commit 3f3f7e6eddbc977fd75d21178d964caa0eb85159
parent 375c3317ce0fa917802ff160a4379cbe2bc6f84e
Author: Emmanuel Marty <emmanuel@fgl.com>
Date:   Wed, 29 May 2019 17:32:12 +0200

Fix formatting
Diffstat:
MREADME.md | 8++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md @@ -3,26 +3,30 @@ em_inflate -- Fast, in-memory, single file decompressor for gzip and zlib em_inflate is a one-file, single function call, memory-to-memory decompressor for the gzip and zlib bitstream formats: -[RFC 1950]https://www.ietf.org/rfc/rfc1950.txt -[RFC 1952]https://www.ietf.org/rfc/rfc1952.txt +[RFC 1950: ZLIB specification](https://www.ietf.org/rfc/rfc1950.txt) + +[RFC 1952: GZIP specification](https://www.ietf.org/rfc/rfc1952.txt) 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