Что такое сжатие по умолчанию?

из возможных уровней сжатия выкачать [0 .. 9], который именно Java Deflater.DEFAULT_COMPRESSION соответствуют? В исходном коде Java, я вижу его как public static final int DEFAULT_COMPRESSION = -1;

2 ответов


Z_DEFAULT_COMPRESSION предназначен для хорошего компромисса между скоростью и эффективностью сжатия. Это колено в изгибе. Фактический уровень, который в настоящее время эквивалентен, 6, является внутренним выбором, который может измениться в будущих версиях, если изменится алгоритм сжатия. Таким образом, вы не должны зависеть от того, что он остается эквивалентным уровню 6.


код 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).