Предустановленный словарь полезен только для первых 32 Кбайт данных?

Я просто хотел использовать предустановленный словарь с моим компрессором и декомпрессором. Я прочитал здесь этот предустановленный словарь полезен только для первых 32 КБ данных, после чего в качестве словаря используются самые последние 32 КБ данных. Это правда? Я что-то упустил здесь?


person Chinna    schedule 01.04.2015    source источник


Ответы (1)


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

Алгоритм deflate zlib использует окно размером до 32 КБ для ссылки на байты, распакованные ранее — части этого окна и байтовые литералы — это все, что он может использовать для распаковки. Предустановленный словарь просто инициализирует это окно, но данные в нем будут «вытеснены» реальными распакованными данными, поэтому только первые 32 КБ данных могут использовать убывающую часть предустановленного словаря.

person schnaader    schedule 01.04.2015
comment
Спасибо за ваш быстрый ответ. Это означает, что предустановленный словарь не может помочь нам при сжатии. - person Chinna; 01.04.2015
comment
Еще одно уточнение: если я использую предустановленный словарь со строкой словаря aaaaaaa. У меня есть данные, которые содержат эту строку со смещением 16K, смещением 34K и смещением 66K соответственно. Согласно вашему ответу, он использует предустановленный словарь для строки со смещением 16 КБ. Но как насчет смещения 34 КБ, поскольку оно имеет длину 34 КБ из предустановленного словаря и не может ссылаться на него, но имеет длину 18 КБ от первой ссылки строки и может ссылаться на это. Итак, в этом случае он использует первую ссылку или создает новую. - person Chinna; 01.04.2015
comment
@Chinna: Да, действительно, в таких случаях, когда строки из предустановленного словаря появятся позже в распакованных данных, они снова появятся в окне, и на них можно будет ссылаться позже. В любом случае, эта вторая ссылка также может быть сделана без предустановленного словаря, поэтому предустановленный словарь помогает только для первого появления строки. - person schnaader; 01.04.2015
comment
повторное появление означает, что 1-й экземпляр относится к словарю, 2-й экземпляр относится к 1-му экземпляру. Итак, это означает, что второй экземпляр косвенно ссылается на словарь, верно? Если словаря нет, 1-й экземпляр сам заменяется на 2-й экземпляр. Если есть словарь, второй экземпляр заменить словарем, верно? Пожалуйста, предоставьте мне любой документ, который объясняет предустановленный словарь. - person Chinna; 01.04.2015