Огромный двоичный файл сокращается почти на 100%? - PullRequest
1 голос
/ 04 января 2011

Я создал двоичный файл с 4 000 000 «двойных» значений (всего 32 МБ).Затем я сжал его, и, к моему удивлению, файл сжался до 46 КБ.

Это почти на 100%!это на самом деле?или я что-то здесь упускаю?

1 Ответ

8 голосов
/ 04 января 2011

Степень сжатия зависит от алгоритма и данных.Например, нули на 32 МБ сжимаются довольно хорошо.

Обновление

Мои основы информатики довольно ржавые, но я могу предположить, исходя из того, что я помню.Двойник может использовать, скажем, 8 байтов (64 бита).Диапазон между -1000 и 1000 подобен 2 ^ 11 последовательным целым числам.Таким образом, следует ожидать, что 64-11 = 53 бита, возможно, будут общими для всех чисел, и большая часть сжатого пространства будет использоваться для оставшихся 11 бит.Это экономия уже 53/64 = 82,2%.

Теперь данные, вероятно, не полностью случайны.Любой приличный компрессор должен уметь обнаруживать повторяющиеся строки и получать дальнейшее усиление.Упрощенный пример:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb ==> 30a10b
...