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_LZ_DICT_SIZE
这对我帮助很大。
- 我正在使用
TINFL_BITBUF_SIZE (32)
而不是 64,这也给了我更多 space。
- 我设置了
TINFL_FAST_LOOKUP_BITS = 1
这也有帮助。
我一直在阅读霍夫曼编码以尝试理解这些值的作用:
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 的空间。
我有一个内存量较低的嵌入式系统,它需要对来自服务器端的 zlib-deflated 数据包进行膨胀。通货紧缩可以使用它想要的所有资源,但对于 inflation 我限制在 5 kB 以下。放气后的数据包都是512位
由于数据包较小,我认为在一个块中执行 inflation 并使用与需要的大小完全相同的缓冲区更便宜。但是现在我已经在 miniz 中调整了一段时间,试图降低内存使用量,我发现对于我能做的最简单的实现(稍微修改了 miniz 示例代码),它的峰值约为 5.5 kB。现在,我忽略了 inflation 速度,因为它似乎在任何情况下都足以满足我的要求。我只想知道它在 theory/practice.
中可以有多小我尝试过的事情:
- 我拒绝了
TINFL_LZ_DICT_SIZE
这对我帮助很大。 - 我正在使用
TINFL_BITBUF_SIZE (32)
而不是 64,这也给了我更多 space。 - 我设置了
TINFL_FAST_LOOKUP_BITS = 1
这也有帮助。
我一直在阅读霍夫曼编码以尝试理解这些值的作用:
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 的空间。