Узнайте степень сжатия для каждой части файла - PullRequest
1 голос
/ 21 октября 2019

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

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

Я полагаю, что это возможно для каждого байта внесжатые данные, подсчитайте, как этот байт влияет на общий размер сжатого файла. Такие программы, как 7-zip, показывают, сколько файлов в архиве сжато - это просто доводит дело до крайности!

Я не знаю достаточно о сжатии, чтобы понять, стоит ли спрашивать об этом разумнодля - но, насколько я понимаю, это можно сделать, разделив стоимость каждого байта среди каждой используемой «ссылки» на блок байтов, в котором содержится этот байт. Более часто повторяющиеся блоки будут снижать свою стоимость, а более уникальные блоки (без ссылок) не будут снижать свою стоимость.

Имеет ли это смысл, и существуют ли какие-либо алгоритмы для такого рода действий? Компрессор в этом случае - LZ4 (для скорости), но я хотел бы получить общий ответ, если это возможно - если нет способа сделать это для LZ4, но это легко с другими компрессорами, я все еще очень хотел бы знать.

...