21

在可能的 DEFLATE 压缩级别 [0 .. 9] 中,Java 到底Deflater.DEFAULT_COMPRESSION对应哪一个?在 Java 源代码中,我将其视为public static final int DEFAULT_COMPRESSION = -1;

4

2 回答 2

21

Z_DEFAULT_COMPRESSION旨在成为速度和压缩效率之间的良好折衷。它是曲线中的膝盖。它当前等效于 6 的实际级别是内部选择,如果压缩算法发生变化,可能会在未来版本中发生变化。所以你不应该依赖它保持相当于 6 级。

于 2013-05-10T15:56:45.533 回答
19

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

来自 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).
于 2013-05-10T15:32:35.503 回答