优化内存占用

Node.js 中的用法修改自 zlib/zconf.h

deflate 的内存需求(按字节):

  1. (1 << (windowBits+2)) + (1 << (memLevel+9))

表示:128K 的 windowBits = 15 + 128K 的 memLevel = 8(默认值)加上几 KB 的小对象。

例如,如果你需要将默认内存需求从 256K 减少到 128K,设置选项:

  1. { windowBits: 14, memLevel: 7 }

当然,这通常会降低压缩等级(天下没有免费午餐)。

inflate 的内存需求(按字节):

  1. 1 << windowBits

表示:32K 的 windowBits = 15(默认值)加上几 KB 的小对象。

这是除了内部输出的单个缓冲外的 chunkSize 大小,默认为 16K。

zlib 的压缩速度主要受压缩级别 level 的影响。更高的压缩级别会有更好的压缩率,但也要花费更长时间。更低的压缩级别会有较低压缩率,但速度更快。

通常,使用更多内存的选项意味着 Node.js 能减少对 zlib 的调用,因为单次 write 操作能处理更多数据。因此,这是另一个影响速度和内存占用的因素。