【问题标题】:is it possible to make lzw compression/decompression parallel?是否可以使 lzw 压缩/解压缩并行?
【发布时间】:2024-01-04 00:43:01
【问题描述】:

我已经阅读了this article,了解如何使用 LZW 压缩/解压缩数据,但我希望让它使用多线程……但我认为这是不可能的。你怎么看?关于这个主题的任何论文或文章?甚至是如何做的提示。

【问题讨论】:

    标签: parallel-processing compression lzw


    【解决方案1】:

    您可能想阅读this paper,特别是第 2.2 节准确解释了如何并行化 LZW 方案。

    【讨论】:

      【解决方案2】:

      在低级别并行化压缩算法将提供有限的加速,并且可能比它的价值更麻烦。原因是真正的好处在于压缩大量数据。在这种情况下,简单地将数据分解成碎片并使用普通算法单独压缩它们要容易得多。

      LZW 太老了,不是很有效。其他方法可以更快、更有效地进行压缩。您可以查看从lz4zliblzma 到 ppmd、paq 等的各种方案,按照从最快压缩最少到最慢压缩最好的顺序。并行化的一个示例是pigz,它使用zlib 使用尽可能多的处理器和内核将大文件压缩到gzip format。它以并行方式提供从先前块到后续块的历史记录,与串行、单处理器 gzip 压缩相比,不会失去压缩效果。

      【讨论】:

        【解决方案3】:

        当需要进行大量整数运算时,使用多线程并行化压缩或解压缩算法是合理的。但是lzw 不需要它。例如,您可以查看lzws 来源。

        整数运算量少。主要瓶颈是dictionary。您可以使用内存超频和自定义 malloc realloc 策略获得更高的性能。

        【讨论】: