-1

У меня есть файл JAR размером 392 МБ. Я сделал еще одну копию, так что теперь у меня есть две копии одного и того же файла JAR.

Для одного из них я использовал 7-zip, чтобы сжать его. Он сжат до 76% от первоначального размера, то есть 298 МБ

Для другого; Сначала я использовал proGuard, чтобы уменьшить и запутать его. После уменьшения его размер уменьшился до 348 МБ. После этого я сжал его 7-почтовым. Он сжат до 102% от уменьшенного размера, что составляет 355 МБ !!!

Что случилось?
Как исправить?

1 ответ1

1

Заменив имена функций почти случайными именами, затем изменив шаблоны вызовов для функций и предварительно сжав файл ("сжатие"), вы фактически удаляете все повторяющиеся блоки, которые алгоритм сжатия может видеть и использовать для дальнейшего сжатия файла.

Без повторяющихся блоков в потоке данных алгоритм сжатия не может ничего сделать, чтобы удалить дубликаты блоков, но причина, по которой вы видите увеличение размера файла, заключается в том, что у метода сжатия есть свои накладные расходы, которые он помещает в выходной файл. Компрессор будет иметь словарь "фраз", которые дублируются в файле, а затем сжатый файл по существу представляет собой список поисков в этом словаре, но без дубликатов в файле словарь становится копией исходного файла и поисков все еще там, каждый из которых указывает только на один элемент в словаре.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .