LINUX.ORG.RU

Как оценить оптимальную степень сжатия?

 , ,


1

2

Здравствуйте!

Достаточно часто мне приходится иметь дело с сжатием данных (GZip, XZ). Но данные попадаются разные, и хотелось бы знать, на каких настройках лучше сжимать данные, поскольку для использования более сильного сжатия требуется больше времени и памяти, в то время для некоторых файлов применение более сильного пресета не даёт значительной экономии места. В связи с чем интересуюсь вопросом, можно ли оценить, насколько сильно сожмётся файл на заданных настройках, до проведения самого сжатия?



Последнее исправление: ShiningRiver (всего исправлений: 1)

до проведения самого сжатия?

Это только если в /dev/null, через pv сжимать.

на каких настройках лучше сжимать данные

Для gz поможет advdef.

Deleted
()
Ответ на: комментарий от Deleted

А индексировать эти gzip потом можно тем же способом что обычный deflate?

anonymous
()
Ответ на: комментарий от Deleted

Это только если в /dev/null, через pv сжимать.

Лучше тогда сжимать с опцией --keep, а потом оставить нужный файл, чтобы сэкономить время. Меня больше интересует, есть ли возможность оценить приблизительный размер файла после сжатия, либо определить оптимальные настройки. Просто для некоторых файлов выбор пресета и опции --extreme значительно уменьшает размер сжатых данных. Для некоторых различия незначительны, и нет смысла тратить время на более сильное сжатие. Некоторые файлы вообще не сжимаются. В руководстве к XZ даже написано:

Specifically, it's not a good idea to blindly use -9 for everything like it often is with gzip(1) and bzip2(1).

ShiningRiver
() автор топика
Ответ на: комментарий от ShiningRiver

Меня больше интересует, есть ли возможность оценить приблизительный размер файла после сжатия

Можно попробовать так:

How to calculate the entropy of a file?

Но как это пересчитать в размер архива? Чорт его знает.

Deleted
()
Ответ на: комментарий от anonymous

Да вот не применял особо, lz4 действительно практически бесплатный и это очень удобно на практике. Кроме того zstd всего пара лет и потенциально могут быть проблемы.

anonymous
()
Ответ на: комментарий от anonymous

Кроме того zstd всего пара лет и потенциально могут быть проблемы.

Согласен, но за ним стоит Facebook и он включён в ядро. Думаю, сырым zstd назвать сложно.

anonymous
()

Ничего нет лучше метода научного тыка. Я надеюсь, что Вы хорошо себе представляете, какие типы данных Вам приходится сжимать. Вот и подготовьте наборы таких типов данных и пройдитесь по ним различными архиваторами с различными опциями.

Дальше Вам нужно будет придумать, как задействовать архиватор с нужной опцией для конкретного типа файла.

funky
()

натренируй нейросетку

anonymous
()

Если данных много - то лучше не заморачиваться. Вы же не будете под каждую конкретную задачу использовать только метод сжатия. Если данные плюс\минус одинаковые. Возьмите и методом простого опытного пути установите наиболее приемлемый для Вас вариант. вот и все. И ни один архиватор никогда не выдаст предварительный результат степени сжатия до полного окончания процедуры архивации.

Tihonor
()
Ответ на: комментарий от Tihonor

Ну можно заранее знать результат. Lzma2 сожмёт лучше всего, но оооооооооооочень медленно, особенно если подкрутить настройки. Какой-нибудь paq ещё лучше, только стоимость сжатия ещё выше.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.