Я знаю gzip много лет, недавно я увидел, как bzip используется на работе. Являются ли они в основном эквивалентными, или есть существенные плюсы и минусы одного из них над другим?
Я знаю gzip много лет, недавно я увидел, как bzip используется на работе. Являются ли они в основном эквивалентными, или есть существенные плюсы и минусы одного из них над другим?
Ответы:
Gzip и bzip2 функционально эквивалентны. (Когда-то был bzip, но, похоже, он полностью исчез с лица земли.) Другие распространенные форматы сжатия: zip, rar и 7z; эти три файла выполняют сжатие и архивирование (упаковывая несколько файлов в один). Вот некоторые типичные оценки с точки зрения скорости, доступности и типичной степени сжатия (обратите внимание, что эти оценки несколько субъективны, не воспринимайте их как Евангелие):
decompression speed (fast > slow): gzip, zip > 7z > rar > bzip2
compression speed (fast > slow): gzip, zip > bzip2 > 7z > rar
compression ratio (better > worse): 7z > rar, bzip2 > gzip > zip
availability (unix): gzip > bzip2 > zip > 7z > rar
availability (windows): zip > rar > 7z > gzip, bzip2
Как видите, нет явного победителя. Если вы хотите полагаться на программы, которые, вероятно, уже установлены, используйте zip в Windows (или, если возможно, самораспаковывающиеся архивы, поскольку Windows не поставляется с любым из них) и gzip в unix. Если вы хотите максимальное сжатие, используйте 7z.
Rar также имеет недостаток в том, что, насколько я знаю, нет свободного программного обеспечения, которое создает архивы rar или может распаковать все архивы rar. Другие форматы имеют свободную реализацию и не имеют (серьезных) патентных претензий.
bzip
исчезла, потому что использовала запатентованное алгоритмическое кодирование. Из-за патента он был перепроектирован для использования кодирования Хаффмана. Во время этого редизайна были добавлены новые функции и улучшения. Фундаментальная вещь, которая делает его уникальным алгоритмом сжатия, - преобразование Берроуза-Уилера, которое осталось неизменным в обеих версиях.
Насколько я могу судить, gzip работает быстрее, а bzip - лучше (меньше).
Алгоритмы имеют разное время, память, пространственные компромиссы. Имейте в виду, что эти алгоритмы были написаны довольно давно, и ваш смартфон имеет во много раз больше процессоров, чем настольные компьютеры того времени.
Ваш выбор между универсальностью (.gz) и немного большим сжатием (.bz2). Только вы можете сказать, что вас волнует больше.
Одним из преимуществ .gz является то, что он может сжимать поток, последовательность, в которой вы не можете смотреть назад. Это делает его официальным компрессором потоков http. Мне нужно было использовать gzip один раз из-за этого, но вряд ли вам нужно будет думать об этом.
Вот список сайтов, которые тестируют алгоритмы сжатия, чтобы найти только bzip и gzip, вам придется немного покопаться, но на большинстве сайтов будут перечислены характеристики алгоритмов. Таким образом, вы можете сравнить, что важно для вас, размер (степень сжатия), время, память, процессор.
http://www.maximumcompression.com/benchmarks/benchmarks.php
По моему опыту, bzip предлагает неизменно лучшие коэффициенты сжатия, чем gzip. Плюс с 7zip в качестве менеджера и алгоритмом bzip, 7zip может использовать многоядерные процессоры.
Согласно http://tukaani.org/lzma/benchmarks.html , gzip сжимает в два раза быстрее, чем bzip2, и распаковывает в десять раз быстрее.
Например, для использования с кэшированием s3, на travis и т. Д., Где вам нужна скорость сжатия / распаковки, а не только небольшие размеры, gzip может быть хорошим компромиссом.