6

bzip2的哪个实现解压速度最快?

有一个http://bitbucket.org/james_taylor/seek-bzip2/src/tip/micro-bunzip.c声称

Manuel Novoa III (mjn3@codepoet.org) 的大小和速度优化。更有效地读取霍夫曼代码、简化的 read_bunzip() 函数以及各种其他调整。在(有限的)测试中,在 x86 上比 bzcat 快约 20%,在 arm 上快约 10%。请注意,大约 2/3 的时间用于 read_unzip() 反转 Burrows-Wheeler 转换。大部分时间是由于缓存未命中导致的延迟。

许多缓存未命中有机会通过某些技术进行优化,因此更快的实现是可能的。

这个(seek-bzip2)还有一个有趣的功能,即在输入文件中轻松搜索。

我的程序将消耗 bzip2 的输出,并且(理论上)可以在文件的不同部分并行执行此操作。因此,也考虑了并行 bzip2 实现。

谢谢。

4

3 回答 3

4

有一点http://lists.debian.org/debian-mentors/2009/02/msg00135.html的比较。考虑并行版本。

还有一点http://realworldtech.com/forums/index.cfm?action=detail&id=98883&threadid=98430&roomid=2

链接来自英特尔 cilk-parallel 版本的 bzip2 http://software.intel.com/en-us/articles/a-parallel-bzip2/

此外,英特尔的 ipp 驱动的 bzip2 也很好,并且还尝试在 IPP(具有负面影响)中将 bzip2 的某些内部(无并行块解压缩)与 openmp(英特尔 KMP 5)并行化。当将其限制为一个或两个线程时,20 MByte/s 的解压缩流在 2.4 core2 上是真实的(ipp“v8”代码)

希望这可以帮助。

于 2010-09-15T02:00:43.443 回答
1

lbzip2是一个不错的选择。

sudo apt install lbzip2

lbzip2 -d <archive>
于 2021-04-10T19:30:55.317 回答
0

如果您可以访问多处理器机器(很容易在 Amazon EC2 或 Digital Ocean 上旋转多处理器虚拟机)/具有大量 RAM 的机器,您绝对应该查看PBZIP2

PBZIP2 是 bzip2 块排序文件压缩器的并行实现,它使用 pthreads 并在 SMP 机器上实现近线性加速


举例说明:我目前正在解压缩一个 17Gb 的大文件。bzip2正在以 10Mb/秒的速度写入解压文件;PBZIP2 现在以 160Mb/秒的速度写入。我正在运行它:

pbzip2 -v -d -k -m10000 file.bz2

-v详细-d解压缩-k保留原始文件-m1000使用 10Gb 的 RAM

这是在 Digital Ocean 上的 64Gb RAM、20 CPU 机器上运行的,每小时收费 0.952 美元。:-)

于 2017-03-26T14:16:56.600 回答