zip 文件提取速度比复制快

Tom*_*Tom 2 windows compression rar

系统 Win 7 32 位。我正在使用 WinRAR 提取 .rar 文件,但我认为任何压缩文件都是一样的。我有:

1) SomeSourceCodeFolder.rar -> 提取 -> SomeDestCodeFolder

2) SomeSourceCodeFolder -> 复制 -> SomeDestCodeFolder

第一种方式通常比第二种方式快得多。在我的例子中,复制一个 300mb 的代码文件夹它说 45 分钟(我只等了 5 分钟,没有费心完成它),但是当我尝试用 winRAR 提取物做同样的事情时,它只需要大约 45 秒即可完成.

这是为什么?压缩文件不通过解密+复制到文件系统吗?它不应该总是比单独复制慢吗?

Hau*_*ing 7

这对于某些硬件非常有意义:快速 CPU、慢速磁盘(HDD 而非 SSD)、只有一个磁盘。

必须读取和写入数据。两种情况下写入的数据量相同,但读取压缩文件意味着需要读取的数据更少。此外,读取单个大文件通常比读取目录要快得多。如果有很多小文件,这种影响会更大。您可以通过将目录结构读入缓存来减少它,这样磁盘就不必在 inode 和数据块之间跳转:

# Edit: This works under Unix only
find /dir/to/be/copied -printf "" # just read the names
find /dir/to/be/copied -perm 777 -printf "" # just read the inodes
Run Code Online (Sandbox Code Playgroud)

如果 CPU 没有减慢数据输入的速度(因为放气比读取需要更多时间),那么提取比复制快。

如果您改为从 SSD 复制到另一台设备并且您的 CPU 是石器时代,那么复制速度会更快。