DEFAULT_COMPRESSION是什么?

27

在 DEFLATE 压缩的可能级别[0..9]中,Java 的 Deflater.DEFAULT_COMPRESSION 精确对应哪个级别?在 Java 源代码中,我看到它被定义为public static final int DEFAULT_COMPRESSION = -1;

2个回答

26

Z_DEFAULT_COMPRESSION旨在在速度和压缩效果之间达到一个良好的折衷。 这是曲线上的拐点。 它当前等效于的实际级别为6,这是一个内部选择,如果压缩算法发生变化,它可能会在未来版本中更改。 因此,您不应依赖于它保持等效于级别6。


21

这段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).

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接