主流的机械硬盘速度大概在50-150MB/s之间SSD大概是150-500MB/s,主流的CPU(带流水线)、内存的速度大概是硬盘速度的100~1000倍左右
换句话说,如果一个解压算法平均解压一个字节消耗的指令数洳果少于100个,那么硬盘速度就很难赶上CPU速度了;如果平均解压一个字节消耗的指令数少于1000个那么绝大多数机械硬盘很难赶上CPU速度。所以瓶颈在哪,主要看解压的过程中的CPU负担
通常情况下,zip的解压字典只有32K或者64K解压的过程中并非每次都搜索完整的字典,所以zip默认配置丅很难占满CPU如果考虑到多核的话,每个核的负担可以更低磁盘IO的负担会更重,瓶颈效果会更明显如果要让CPU成为瓶颈,需要调整一些壓缩的策略
比如:1. 字典要更大,查找速度会更慢如果字典比内存还大就更好了(7zip最大可以配置1G的字典)。2. 文件的信息熵要足够大换呴话说文件本身更难以压缩,比如已经被压缩过的视频文件这样解压时查字典的负担会更重。3. 解压到内存里或者至少是SSD里。4. 压缩的时候选择用AES-256加密一下5. 挑一个性能比较弱的CPU解压。满足以上条件的情况下就可以让CPU成为瓶颈了。
但这样的条件很难达到因为满足以上条件,会让压缩的过程变得非常慢比如7zip的LZMA2算法中,把字典配到1G线程数16的情况下,压缩需要内存是88G左右绝大多数PC的内存都不够用。在超級计算机上压缩到普通计算机上解压就有可能吃满CPU。
对于通常情况下来说解压文件瓶颈在硬盘,只有在一定特定的场景下CPU才会成为瓶颈。
补充一点:如果解压的是零碎的小文件速度没有参考价值。小文件的实际写入开销比文件实际大小要大的多
}