Zlib - это алгоритм сжатия, который адаптивен.Все алгоритмы сжатия работают, потому что данные, с которыми они работают, не полностью случайны.Вместо этого их входные данные имеют неравномерное распределение, которое можно использовать.Возьмите английский текст в качестве простого примера.Буква e
встречается гораздо чаще, чем буква q
.Zlib обнаружит это и использует меньше битов для буквы e
.
Теперь, когда вы отправляете много коротких текстовых сообщений и знаете, что они все на английском языке, вы должны использовать сжатие Zlib statefull.Это сохранит это младшее битовое представление буквы e
во всех сообщениях.Но если есть смешанные сообщения на китайском, японском, французском и т. Д., Сжатие с сохранением состояния уже не так уж умно.В японском тексте будет мало букв e
.Сжатие без сохранения состояния проверяет для каждого сообщения, какие буквы являются общими.Хорошо известным примером сжатия без сохранения состояния ZLib является формат файла PNG, который не сохраняет состояния между двумя различными изображениями.