В настоящее время я использую java.util.zip.Deflater
для сжатия. Также для сжатия может использоваться java.util.zip.GZIPOutputStream
. Здесь я сосредоточен на основном сжатии массива байтов.
Может ли кто-нибудь сообщить мне разницу между этими Deflater и GZIPOutputStream. (.. производительность повышается).
Deflater
производит сжатые данные zlib-wrapped с nowrap
, если nowrap
является истинным, и в этом случае он создает необработанные (разворачиваемые) спящие сжатые данные.
GZIPOutputStream
производит gzip-wrapped deflate data.
deflate - сжатый формат данных, определенный в RFC 1951.
zlib - двухбайтовый заголовок и четырехбайтовый трейлер, который обеспечивает компактную идентификацию потока и проверку целостности несжатых данных. zlib описывается в RFC 1950.
gzip - это заголовок байта 10+ и 8-байтовый трейлер, который обеспечивает проверку метаданных и целостности, где метаданные могут включать имя файла, дату изменения, исходную операционную систему, комментарии и дополнительные данные. gzip описан в RFC 1952.
Нет никакой разницы в отношении производительности, кроме разницы в байтах в заголовке и трейлере.
Существует разница в производительности, поскольку GZIPOutputStream
имеет только одну настройку скорости/сжатия, которая не Deflater
, в то время как у Deflater
есть десять возможных отношений: от самого быстрого + наименее сжатого до самого медленного + самого сжатого. Вот хорошая статья с графами об этом.