В моем приложении мне нужно сделать сжатие журналов, которые являются текстовыми файлами.
Кажется, что bzip2
и gzip
имеют одинаковую степень сжатия.
Это верно?
Последнее обновление maximumcompression.com - июнь-2011 (ответ обновлен в октябре-2015)
Поэтому этот сайт не упоминает
Текущий чемпион текстового компрессора во всем мире:
cmix
Соревнования / контрольные показатели:
cmix
не победитель, потому что требует слишком много оперативной памяти, более 20 ГБ)Подробности:
Байрон Нолл активно cmix
как программное обеспечение libre (GPL) с 2013 года на основе книги « Сжатие данных, объясненной Мэттом Махони». Мэтт Махони также поддерживает некоторые из вышеперечисленных тестов и предлагает ZPAQ (WP), инкрементный архиватор командной строки.
Если вы предпочитаете более стандартный инструмент (требующий меньше оперативной памяти), я рекомендую:
lrzip
lrzip
- это эволюция rzip
от Con Kolivas.
lrzip
означает два имени: Long Range ZIP и Lzma RZIP.
lrzip
часто лучше, чем xz
(другой популярный инструмент сжатия).
Александр Риччио также рекомендует lrzip
.
Мой любимый:
zpaq
"Эксперт по архивированию", Мэтт Махони, интенсивно работал над алгоритмами PAQ в течение десяти лет и обеспечивает лучший компромисс между ресурсами ЦП / памяти и уровнем сжатия.
Однако последняя версия zpaq
не часто упаковывается / доступна в недавнем дистрибутиве :-(
Я всегда компилирую его из источников, когда у меня новая машина, и мне нужен очень хороший компрессор: https://github.com/zpaq/zpaq
clone https://github.com/zpaq/zpaq
cd zpaq
g++ -O3 -march=native -Dunix zpaq.cpp libzpaq.cpp -pthread -o zpaq
Как правило, bz2 имеет лучшую степень сжатия в сочетании с лучшими функциями восстановления.
OTOH, GZ быстрее.
Говорят, что xz даже лучше, чем bz2, но я не знаю, каково время.
Может быть, вы могли бы взглянуть на эти тесты, особенно часть, тестирующую сжатие файлов журнала.
я сделал тест для тестирования, чтобы сжать следующее:
Папка 204 МБ (с 1600 файлами HTML)
Результаты
7zip => 2.38 MB
winrar => 49.5 MB
zip => 50.8 MB
gzip => 51.9 MB
так что 7zip лучший среди них вы можете получить здесь
http://www.7-zip.org/
xz сжимает намного лучше, чем bz2, но занимает больше времени. Таким образом, если ваша цель - максимальное сжатие, а пространство на жестком диске выше (это мой случай, когда один диск заполнен на 98% - в то время как я реорганизую свои файловые системы), и вы можете запустить сценарий, чтобы выполнить работу. - сделать перерыв и вернуться через 5 минут.
В моем опыте unxz очень быстро распаковывается, и это хорошо для меня в повседневной жизни.
bz2 быстрее сжимается, чем xz, но, похоже, не достигает результатов сжатия xz.
Единственный способ сделать эти оценки - запустить тесты для сравнения общих файлов, которые вы обычно сжимаете / распаковываете, и варьировать параметры, чтобы увидеть, что выходит впереди.
У bz2 сжатие более плотное, в алгоритме есть больше возможностей для поиска избыточности для сжатия.
В gzip гораздо больше инструментов и больше кроссплатформенности. Другие инструменты Windows могут работать с файлами .gz. Это часть http, так что даже веб-браузеры могут это понять.
В Linux есть инструменты, которые позволяют вам работать непосредственно со сжатыми файлами. zgrep и bzgrep могут искать в сжатых файлах.
Если бы только в Linux, я бы использовал bzip2, для немного лучших коэффициентов сжатия.