Brotli压缩多线程

l'l'l

据我了解,Brotli将块大小信息存储在元块头中,仅具有块的最终未压缩大小,而没有有关压缩长度的信息(9.2)。我猜想将需要创建一个包装器,以便将其用于多个线程,或者可能类似于Mark Adler的东西pigz

在这种情况下,Brotli是否会像对gzip一样适用于Brotli,或者在涉及多线程实现时是否有任何可预见的问题需要注意?

马克·阿德勒

为此,您可以按原样使用brotli格式。我让他们添加了将元数据放入空的元数据块的选项(其中“空”表示元数据块产生零个未压缩的数据)。您可以在元数据中放置标记,以帮助查找元块。插入的空元块也会在字节边界处开始下一个元块。

每个元块可以独立于其他元块。如果以这种方式构造流,那么在压缩或分别解压缩它们时组合它们就没有问题。可能依赖的区域是所使用的最后四个距离的环形缓冲区,并向后引用当前元块开头之后的内容。对于并行使用,可以并且必须构造一个元块,以使其不依赖于最后四个距离,直到它已经填充了距当前元块的距离后才引用环形缓冲区。此外,不允许在当前元块之前返回的距离(不包括静态引用)。最后,您将添加一个空的或元数据元块,以将序列带到字节边界以方便串联。

顺便说一句,您似乎正在链接到草稿格式的旧版本。这是当前版本链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章