2013-05-10 9 views
8

Von den möglichen DEFLATE-Komprimierungsstufen [0 .. 9], denen genau entsprechen Javas Deflater.DEFAULT_COMPRESSION? Im Quellcode Java, ich sehe es als public static final int DEFAULT_COMPRESSION = -1;Was genau ist DEFAULT_COMPRESSION?

Antwort

7

Z_DEFAULT_COMPRESSION bestimmt ein guter Kompromiss zwischen Geschwindigkeit und Kompression Wirksamkeit zu sein. Es ist das Knie in der Kurve. Die tatsächliche Stufe, der sie derzeit entspricht (6), ist eine interne Wahl, die sich in zukünftigen Versionen ändern könnte, wenn sich der Komprimierungsalgorithmus ändert. Sie sollten also nicht davon abhängig sein, dass es Level 6 entspricht.

9

Der Java-Code der Klasse new ZStreamRef(init(level, DEFAULT_STRATEGY, nowrap)); die init-Methode ist eine native Aufruf und die ZStreamRef ist ein Verweis auf zlib verwendet. Also was immer zlib als Standard verwendet. In der Version 1.2.8 ist der Standardwert 6 wie devnull angegeben.

Von dem zlib Handbuch ist

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