DEFAULT_COMPRESSION到底是什么?

2022-09-02 00:48:11

在可能的 DEFLATE 压缩级别 [0 .. 9] 中,Java 究竟对应于哪一个?在Java源代码中,我认为它是Deflater.DEFAULT_COMPRESSIONpublic static final int DEFAULT_COMPRESSION = -1;


答案 1

Z_DEFAULT_COMPRESSION旨在实现速度和压缩效率之间的良好折衷。它是曲线中的膝盖。它当前等效的实际级别 6 是一个内部选择,如果压缩算法发生更改,该选择可能会在将来的版本中更改。因此,您不应依赖它保持相当于6级的水平。


答案 2

java 代码使用的类 init 方法是本机调用,ZStreamRef 是对 zlib 的引用。因此,它曾经是zlib用作默认值的。在版本1.2.8中,默认值为6,如devnull所述。new ZStreamRef(init(level, DEFAULT_STRATEGY, nowrap));

来自 zlib 手册

Compression levels.
#define Z_NO_COMPRESSION         0
#define Z_BEST_SPEED             1
#define Z_BEST_COMPRESSION       9
#define Z_DEFAULT_COMPRESSION  (-1)
...
 Z_DEFAULT_COMPRESSION requests a default compromise between speed and compression (currently equivalent to level 6).

推荐