2013-05-10 17 views
8

Dei possibili livelli di compressione di DEFLATE [0 .. 9], a quale corrisponde esattamente lo Deflater.DEFAULT_COMPRESSION di Java? Nel codice sorgente di Java, lo vedo come public static final int DEFAULT_COMPRESSION = -1;Che cos'è esattamente DEFAULT_COMPRESSION?

risposta

7

Z_DEFAULT_COMPRESSION è destinato ad essere un buon compromesso tra velocità e l'efficacia di compressione. È il ginocchio nella curva. Il livello attuale che è attualmente equivalente a, 6, è una scelta interna che potrebbe cambiare nelle versioni future se l'algoritmo di compressione cambia. Quindi non dovresti dipendere dal fatto che rimanga equivalente al livello 6.

9

il codice Java utilizza il new ZStreamRef(init(level, DEFAULT_STRATEGY, nowrap)); il metodo init di classe è una chiamata nativa e la ZStreamRef è un riferimento alla zlib. Quindi è quello che mai zlib usa come predefinito. Nella versione 1.2.8 il valore predefinito è 6 come indicato da devnull.

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