commit 3f3f7e6eddbc977fd75d21178d964caa0eb85159
parent 375c3317ce0fa917802ff160a4379cbe2bc6f84e
Author: Emmanuel Marty <emmanuel@fgl.com>
Date: Wed, 29 May 2019 17:32:12 +0200
Fix formatting
Diffstat:
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