2016-07-03 3 views
5

Это мое понимание Brotli хранит информацию в размере блоке заголовка меты-блоке только с окончательным несжатым размером блока, и никакой информации о длине сжатия (9.2). Я предполагаю, что нужно будет создать оболочку, чтобы использовать ее с несколькими потоками или, возможно, с чем-то похожим на pigz от Mark Adler.сжатие Brotli многопоточности

Будут ли применяться те же принципы наведения к Brotli, что и в случае с gzip, или есть ли какие-либо предсказуемые проблемы, чтобы знать, когда речь заходит о многопоточных реализациях?

ответ

8

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

Каждый мета-блок может быть не зависит от других метаблоков. Если поток сконструирован таким образом, тогда нет проблем с их объединением при сжатии или раздельной декомпрессии. Областями возможной зависимости являются кольцевой буфер из четырех последних используемых расстояний и обратные ссылки, предшествующие началу текущего метаблока. Для параллельного использования мета-блок может и должен быть сконструирован таким образом, чтобы не зависеть от последних четырех расстояний, не ссылаясь на кольцевой буфер, пока он не будет заполнен расстояниями от текущего метаблока. Кроме того, расстояния, которые доходят до текущего метаблока, не будут разрешены (что не включает статические ссылки). Наконец, вы добавите мета-блок пустой или метаданных, чтобы привести последовательность к границе байта для легкой конкатенации.

Кстати, похоже, что вы ссылаетесь на более старую версию черновика. Вот link to the current version.

+0

Это помогает кучке! Я немного беспокоился о метаблоках (как предлагал более старый проект), поэтому я очень рад видеть, что вариант, который у вас есть, теперь доступен. Есть ли предпочтительный или рекомендуемый способ проверки/проверки потока; Я думал, что это может быть проблемой, если все происходит локально, хотя, возможно, нет необходимости в этом. Большое спасибо! –

+1

Они попросили меня предложить формат оболочки для brotli с проверками целостности и другими функциями, которые я сделал и которые вы можете [найти здесь] (https://github.com/madler/brotli/blob/master/br-format- v3.txt). Однако я не знаю, что они приняли его или рекомендуют. –

 Смежные вопросы

  • Нет связанных вопросов^_^