zlib/miniz:如何为非常低的内存使用量配置 inflate?

zlib/miniz: how to configure inflate for very low memory usage?

我有一个内存量较低的嵌入式系统,它需要对来自服务器端的 zlib-deflated 数据包进行膨胀。通货紧缩可以使用它想要的所有资源,但对于 inflation 我限制在 5 kB 以下。放气后的数据包都是512位

由于数据包较小,我认为在一个块中执行 inflation 并使用与需要的大小完全相同的缓冲区更便宜。但是现在我已经在 miniz 中调整了一段时间,试图降低内存使用量,我发现对于我能做的最简单的实现(稍微修改了 miniz 示例代码),它的峰值约为 5.5 kB。现在,我忽略了 inflation 速度,因为它似乎在任何情况下都足以满足我的要求。我只想知道它在 theory/practice.

中可以有多小

我尝试过的事情:

我一直在阅读霍夫曼编码以尝试理解这些值的作用:

TINFL_MAX_HUFF_TABLES = 3,
TINFL_MAX_HUFF_SYMBOLS_0 = 288,
TINFL_MAX_HUFF_SYMBOLS_1 = 32,
TINFL_MAX_HUFF_SYMBOLS_2 = 19,
TINFL_FAST_LOOKUP_BITS = 1,
TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS

但我不能说我完全理解。我可以看到它们与分配的内存直接相关,但我不确定如何正确更改它们。

所以我正在寻找有关如何使 inflation 使用尽可能少的内存的建议。对其他可能更适合我的实现的库的替代建议。

谢谢:)

查看 puff.c 作为备选方案。它从堆栈中分配大约 1KB 的空间。