优化内存占用
Node.js 中的用法修改自 zlib/zconf.h
:
deflate 的内存需求(按字节):
(1 << (windowBits+2)) + (1 << (memLevel+9))
表示:128K 的 windowBits = 15 + 128K 的 memLevel = 8(默认值)加上几 KB 的小对象。
例如,如果你需要将默认内存需求从 256K 减少到 128K,设置选项:
{ windowBits: 14, memLevel: 7 }
当然,这通常会降低压缩等级(天下没有免费午餐)。
inflate 的内存需求(按字节):
1 << windowBits
表示:32K 的 windowBits = 15(默认值)加上几 KB 的小对象。
这是除了内部输出的单个缓冲外的 chunkSize
大小,默认为 16K。
zlib 的压缩速度主要受压缩级别 level
的影响。更高的压缩级别会有更好的压缩率,但也要花费更长时间。更低的压缩级别会有较低压缩率,但速度更快。
通常,使用更多内存的选项意味着 Node.js 能减少对 zlib 的调用,因为单次 write
操作能处理更多数据。因此,这是另一个影响速度和内存占用的因素。