解压缩操作为什么不吃CPU?
解压缩文件和压缩文件不同,解压缩过程需要不断读取压缩文件,并把解压出来的文件写到磁盘,这个过程中最主要是依赖CPU性能,但是也需要占用大量磁盘资源,我们经常遇到在解压一些好几G的大文件中,电脑运行会变得比较卡顿,这就是由于产生大量的磁盘IO导致的。
解压缩任务对CPU、内存和硬盘都有要求,其中性能要求占比最大的是CPU,按照水桶原理的说法,主流机械硬盘的读写速度在150m/s左右,而SATA固态硬盘也仅仅是400-500m/s,与CPU和内存速度差距甚远,磁盘形成短板,而且解压缩一般为单线程运算,对CPU性能要求并不太高,所以如果在电脑CPU性能不是太弱的情况下,就会出现CPU占用率上不去,磁盘反应变卡的情况(尤其是解压存在大量小文件的压缩包)
除此之外,解压占用CPU资源的高低也与采用的压缩格式有关,如果采用高压缩率格式比较吃CPU,低压缩率则吃硬盘,估计题主是采用了低压缩率格式的大文件压缩包,因为在大文件连续读写过程中,机械硬盘与SATA固态硬盘差距并不太明显,如果压缩包内是大量如图片之类的小文件,在解压中两个硬盘就会出现明显的速率差距。
如果是机械硬盘和NVME固态对比的话,即使解压一个视频文件压缩包也会出现比较大的差距。
在下图NVME固态上,I5 8250U的CPU占用率能达到20%以上,大约2秒就解压完毕,而在机械硬盘上,同样的配置下耗时达到7秒多,然而CPU占用率仅有10%左右,磁盘占用率几乎占满,性能瓶颈出现在机械硬盘上。
嘟嘟说:所以说很多情况下不是CPU不想发挥性能,而是解压缩过程中磁盘限制了CPU的性能发挥,CPU必须等待磁盘数据,即使固态硬盘很多情况下也是喂不饱CPU,导致CPU占用率很低;但是在处理高压缩率的文件下,CPU的占用率就会变得较高。
其实最大的瓶颈还是在于解压缩软件在解压过程中仅仅支持单线程,这样就导致四核CPU即使一个核心占满,也不过是25%占用率,显的CPU占用率不高,期待今后的压缩软件算法能够实现解压缩并行化处理。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有