0

我按照http://zlib.net/zlib_how.html中的 zlib inflate 示例解压缩了一个压缩文件。即使在我将 CHUNK 大小定义为 256KB 之后,我看到每个 inflate() 函数调用的输出数据也只有 8KB。我知道压缩文件是通过使用 8K 的 CHUNK 大小来放气的,所以这是否意味着 zlib inflate 的 CHUNK 大小必须与通货紧缩中使用的大小相同?

如果是的话,在不改变源文件的情况下,有没有办法加快解压速度?使用 8K 的 CHUNK 大小进行解压缩速度很慢。

4

1 回答 1

0

不,块大小不必相同。一个有效的 deflate 流可以通过使用任何块大小的 inflate 来解码。

即使在我将 CHUNK 大小定义为 256KB 之后,我看到每个 inflate() 函数调用的输出数据也只有 8KB。

根据评论中的讨论,您没有单个 deflate 流,而是一系列小 deflate 流的串联。做充气,每次完成一个流时,您只需重新启动充气过程,这Z_STREAM_ENDinflate(). 使用inflateReset()而不是inflateEnd()后跟inflateInit(),因为这样可以节省时间并避免不必要的释放和内存分配。

除此之外,没有办法加快解压速度。

于 2013-06-11T20:27:17.263 回答