能否使用多线程解压缩包含多个文件的压缩文件?

25

我用以下方式解压缩:

unzip -q "file.zip" -d path

如何利用多个核心和线程更快地解压缩文件?

谢谢


1
请问您能否稍微解释一下,这里的多核是什么意思? - RavinderSingh13
为什么多核是一个问题?你是指你有大型的压缩文件,想使用多线程加快处理速度吗? - Aserre
1
有趣的阅读:https://www.quora.com/How-can-I-leverage-multiple-cores-while-unzipping-a-zip-file-Linux - hek2mgl
我想让unzip使用4个CPU,比如说,这种操作是否可行? - ale8530
2
根据我提供的文章中的论点,即使可能实现,你也不会获得太多额外的速度。 - hek2mgl
显示剩余2条评论
2个回答

12

简而言之:不,无法使用多核解压。

通常情况下,解压比压缩的CPU负载较低(压缩通常涉及多个核心)。

无论如何,您也不会有太多优势,因为读/写操作在解压期间更容易成为瓶颈。


好的,谢谢你的解释 :) - ale8530
24
NVMe固态硬盘超级快,但解压一个6GB的文件仍需要很长时间。很确定是CPU成为了瓶颈。出了什么问题? - Alexandre G
1
使用 https://github.com/lukehutch/quickunzip 解压 Xcode10.2.zip 只需要 2 分 26 秒,而在 Mac 上使用 Archive Utility 则需要 3 分 55 秒。 - Alexandre G
1
这是 CPU 瓶颈,1 核心将始终达到最大值,新的基于 NVMe 的驱动器表明瓶颈。 - Alex
试试ripunzip:https://medium.com/@adetaylor/does-parallel-unzipping-work-cdaf89124c88(我为本地测试构建了静态版本https://github.com/hemnstill/StandaloneTools/releases/tag/ripunzip-0.4.0)它比解压缩快2到4倍。 - hemn
只要你的NVMe驱动足够快,解压大型zip文件可以从多个CPU核心中受益。实际上,需要很多核心。在https://youtu.be/c2tzTMN6-qU?t=636上可以看到一些基准测试结果。在那个图表上,核心数量与性能呈现出很好的比例关系。Threadripper通常比普通桌面版本的处理器频率低,但却轻松超越它们。 - undefined

0

使用 pigz,它利用多核心并在多个线程中解压缩。


7
根据pigz的手册,pigz在解压缩时不使用多线程。 - Aserre
8
比解压缩更好。pigz使用一个线程(主线程)进行解压缩,但会创建三个其他线程用于读取、写入和校验计算,这可以在某些情况下加速解压缩。 - Andrea Bergonzo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接