Как приходите, разные текстовые файлы становятся разными размерами после сжатия?
-
04-10-2019 - |
Вопрос
У меня есть файл какого-либо случайного текста размером = 27 ГБ, а после сжатия он становится 40 МБ или около того.
И файл SQL 3,5 ГБ становится 45 МБ после сжатия.
Но текстовый файл 109 МБ стал 72 МБ после сжатия, так что с ним можно не так.
Почему настолько менее сжаты, он должен 10 МБ или около того, или я что-то не хватает.
Все файлы, как я вижу, это только на английском языке, а также некоторые грамматические символы (/,. - = + и т. Д.)
Почему?
Если нет, вы можете сказать, как я могу супер сжать текстовый файл?
Я могу код в PHP, NP в этом.
Решение
Коэффициент сжатия файла зависит от его содержания.
Большинство алгоритмов сжатия работают путем преобразования повторных данных в одно повторение, указывая, сколько раз это было повторено.
Например, файл, содержащий письмо a
1 000 000 раз могут быть сжаты намного больше, чем файл с полностью случайным контентом.
Для получения дополнительной информации, пожалуйста, предоставьте больше информации.
Другие советы
Подумайте об этом таким образом ... Если у вас есть файл, который содержит:
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc
Файл по существу просто магазины abc times 18
С другой стороны, этот файл:
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
мог только хранить:
abcdefghijklmnopqrstuvwxyz times 2
Таким образом, второй файл сжимается как больший файл, чем первый, даже если он короче, чтобы начать с.
Сжатие работает, удаляя дубликаты в входных данных. Ваш файл 3.5GB становится гораздо меньше после сжатия, потому что он имеет много дубликатов данных, в то время как ваш меньший файл не сжимается так же, поскольку он не содержит столько дубликатов данных.
Если вы хотите понять, как работает компрессионные утилиты, то посмотрите на Википедию Лемпель-Зив-Уэлч Статья, которая является алгоритмом, на которой построены большинство этих алгоритмов.
PHP, вероятно, неверный выбор для такого проекта, потому что он будет чрезвычайно медленным на этом языке по сравнению с совершенно хорошими существующими библиотеками в C, которые уже являются частью самого PHP.
Как правило, уровень сжатия зависит от того, сколько сходства и шаблонов могут найти алгоритм в файле. Если все файлы содержат английский текст, цифры странные. Я настоятельно подозреваю, что файлы, которые имеют экстремальное соотношение сжатия, содержат большие куски повторяющихся текстовых сегментов.
Сжатие работает, удаляя избыточность в данных. Окончательное место для начала, вероятно, с Кодирование Хаффмана который является одним из первых семенных работ, непосредственно на проблему, но вы можете позаботьться о том, чтобы выкопать дальше обратно в оригинальные работы Шеннона на Теория информации.
Это не новые концепции - они впервые приобрели значительный интерес в 1940-х и 50-х годах, когда люди были эффективно заинтересованы в передаче данных по очень ограниченным каналам. Тема - это не только интерес для вычисления - есть несколько очень глубоких соединений с энтропией и другой фундаментальной физикой. Например, получается прекрасно сжатые данные неотличимы от белого шума.