From 15898e51d6ae2d26d8c67f32aff5c70fe951d639 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 28 Jan 2021 21:59:19 +0100 Subject: README: Update memory requirements and performance numbers --- README.md | 50 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index e4b4c45..3974e31 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ unsigned char inflate_output[128]; ``` -Decompressing deflate (RFC 1951) data works as follows: +Example for deflate (RFC 1951) decompression: ``` #include "inflate.h" @@ -102,16 +102,44 @@ have more RAM than this library is designed for. In that case, you may be better off with [udeflate](https://github.com/jlublin/udeflate), [uzlib](https://github.com/pfalcon/uzlib), or similar. -## Requirements and Performance +## Memory Requirements -RAM usage excludes the space needed for input and output buffer. ROM/RAM usage -rounded up to the next multiple of 16B. Performance tested with text files of -various sizes, minimum file size 500 bytes, maximum file size determined by the -amount of available RAM. +Excluding the decompressed data buffer, zlib-deflate-nostdlib needs about +2.5 kB of ROM and 500 Bytes of RAM. Actual values depend on the architecture, +see the tables below. ROM/RAM values are rounded up to the next mupltiple of +16B. -| Architecture | ROM | RAM | Speed +### default (no checksum verification) + +| Architecture | ROM | RAM | +| :--- | ---: | ---: | ---: | +| 8-bit ATMega328P | 1824 B | 640 B | +| 16-bit MSP430FR5994 | 2272 B | 448 B | +| 20-bit MSP430FR5994 | 2576 B | 464 B | +| 32-bit ESP8266 | 1888 B | 656 B | +| 32-bit STM32F446RE (ARM Cortex M3) | 1600 B | 464 B | + +### compliant mode (-DDEFLATE\_CHECKSUM) + +| Architecture | ROM | RAM | +| :--- | ---: | ---: | ---: | +| 8-bit ATMega328P | 2032 B | 640 B | +| 16-bit MSP430FR5994 | 2560 B | 448 B | +| 20-bit MSP430FR5994 | 2896 B | 464 B | +| 32-bit ESP8266 | 2048 B | 656 B | +| 32-bit STM32F446RE (ARM Cortex M3) | 1782 B | 464 B | + +## Performance + +Due to its focus on low RAM usage, zlib-deflate-nostdlib is very slow. Expect +about 1kB/s per MHz on 16-bit and 2kB/s per MHz on 32-bit architectures. Tested +with text files of various sizes, minimum file size 500 bytes, maximum file +size determined by the amount of available RAM. + +| Architecture | Speed @ 1 MHz | Speed | CPU Clock | | :--- | ---: | ---: | ---: | -| 8-bit ATMega328P @ 16 MHz | 1440 B | 624 B | 10 .. 22 kB/s | -| 16-bit MSP430FR5994 @ 16 MHz | 2224 B | 432 B | 8 .. 16 kB/s | -| 20-bit MSP430FR5994 @ 16 MHz | 2512 B | 432 B | 8 .. 16 kB/s | -| 32-bit STM32F446RE (ARM Cortex M3) @ 168 MHz | 1552 B | 432 B | 258 .. 898 kB/s | +| 8-bit ATMega328P | 1 kB/s | 10 .. 22 kB/s | 16 MHz | +| 16-bit MSP430FR5994 | 1 kB/s | 8..15 kB/s | 16 MHz | +| 20-bit MSP430FR5994 | 1 kB/s | 8..17 kB/s | 16 MHz | +| 32-bit ESP8266 | 1 .. 3 kB/s | 79..246 kB/s | 80 MHz | +| 32-bit STM32F446RE (ARM Cortex M3) | 1 .. 5 kB/s | 282..875 kB/s | 168 MHz | -- cgit v1.2.3