当前位置: 首页 > 知识库问答 >
问题:

Brotli压缩多线程

叶恩
2023-03-14

我的理解是Brotli将块大小信息存储在元块头中,只有块的最终未压缩大小,没有关于压缩长度的信息(9.2)。我猜测需要创建一个包装器,以便在多个线程中使用它,或者可能类似于马克·阿德勒的皮兹

在这种情况下,线程原则是否适用于Brotli,就像它们适用于gzip一样,或者在多线程实现中是否有任何可预见的问题需要注意?

共有1个答案

丁曦
2023-03-14

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

每个元块可以独立于其他元块。如果流是这样构造的,那么在压缩或单独解压缩它们时组合它们是没有问题的。可能的依赖区域是使用的四个最后距离的环形缓冲区,以及当前元块开头的向后引用。为了并行使用,元块可以并且必须被构造成不依赖于最后四个距离,不引用环形缓冲区,直到它被填充到与当前元块的距离。此外,不允许回到当前元块之前的距离(不包括静态引用)。最后,您将追加一个空或元数据块,将序列带到字节边界,以便于连接。

顺便说一下,看起来您正在链接到草稿格式的旧版本。这里是当前版本的链接。

 类似资料:
  • 我读到关于Broli压缩,并认为我不妨考虑支持它。 我最近读到的一篇(ish)文章提到了一个.br文件——那么,在我的index.html文件旁边放一个index.br文件会很容易吗?或者支持它意味着重新编译Apache?

  • Android API提供了保存位图对象的方法。我创建了一个示例应用程序,它将jpeg图像(一些嘈杂的相机照片)加载到位图中,然后将其压缩回同一个文件。然后,再做5次。 显然,我的位图积累了压缩伪影。让我惊讶的是,这些伪影的数量以一种奇怪的方式取决于压缩的质量。当我将质量设置为100(我认为这是最好的质量)时,工件清晰可见。当我将质量降低到90时,工件的可视性明显降低。质量设置为80会给我最好的效

  • 我通常使用压缩,使用解压(由于习惯使用gzip)。 我最近得到了一个带有超线程的四核CPU,所以我有8个逻辑核,我注意到许多核在压缩/解压过程中没有使用。 有什么方法可以利用未使用的内核来加快速度吗?

  • tar [-]c|x|u|r|t[z|j][v] -f 归档文件 [待打包文件] 将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为 tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时) 操作选项 -c 创建 -x 解包 -u 更新 -r 添加 -t 查看 -d 比较压缩包内文件和文件 -A 将 tar 文件添加到归档文件中 格式选项 -z 使用 gz 压缩格式 -j 使

  • Tango拥有一个默认的压缩中间件,可以按照扩展名来进行文件的压缩。同时,你也可以要求某个Action自动或强制使用某种压缩。比如: type CompressExample struct { tango.Compress // 添加这个匿名结构体,要求这个结构体的方法进行自动检测压缩 } func (CompressExample) Get() string { return f

  • 所有基于http协议的服务器组件均支持压缩,请求头Accept-Encoding的值需要包含deflate或者gzip。 即便请求头Accept-Encoding的值包含deflate或者gzip,服务器还会参考静态变量http_server::zip_min_size(默认1024,即1KB)和http_server::zip_max_size(默认307200,即300KB)来决定是否压缩:仅