Compression ZLIB deflate:内存分配和文件输出的最快策略?

Compression ZLIB deflate:内存分配和文件输出的最快策略?,compression,zlib,Compression,Zlib,我的输入数据以小块的形式出现,输出保存到磁盘上的文件中。我正在寻找最快的输入和输出策略 在调用deflate()之前创建一个更大的输入缓冲区来积累更多的数据有意义吗?还是最好为每个小的输入块调用deflate()?输入的最佳缓冲区大小是多少(如果有) 更快的方法是:使用deflate()并使用fwrite()将输出从内存写入文件,或者使用组合函数(如gzfwrite)直接写入文件 是文件映射甚至比任何2。在上面 有没有办法在多个线程中并行压缩 deflate在内部累积输入数据,因此在将输入数据输

我的输入数据以小块的形式出现,输出保存到磁盘上的文件中。我正在寻找最快的输入和输出策略

  • 在调用deflate()之前创建一个更大的输入缓冲区来积累更多的数据有意义吗?还是最好为每个小的输入块调用deflate()?输入的最佳缓冲区大小是多少(如果有)

  • 更快的方法是:使用deflate()并使用fwrite()将输出从内存写入文件,或者使用组合函数(如gzfwrite)直接写入文件

  • 是文件映射甚至比任何2。在上面

  • 有没有办法在多个线程中并行压缩

  • deflate在内部累积输入数据,因此在将输入数据输入deflate之前自己积累数据不会有太多节省。(充气的情况不同,向每个充气调用提供大量压缩数据具有显著优势。)

  • 没有区别,如果直接使用deflate,您可以更好地控制发生的事情。您可以使用低级i/o函数来避免额外的缓冲级别

  • 我怀疑使用
    mmap()
    对文件进行简单的顺序写入会有什么好处,也可能有缺点。这不是
    mmap()
    的目的

  • 对。有关示例,请参见

  • deflate在内部累积输入数据,因此在将输入数据输入deflate之前自己积累数据不会有太多节省。(充气的情况不同,向每个充气调用提供大量压缩数据具有显著优势。)

  • 没有区别,如果直接使用deflate,您可以更好地控制发生的事情。您可以使用低级i/o函数来避免额外的缓冲级别

  • 我怀疑使用
    mmap()
    对文件进行简单的顺序写入会有什么好处,也可能有缺点。这不是
    mmap()
    的目的

  • 对。有关示例,请参见