为什么压缩一百万个 1KB 文件、传输它们并解压它们比直接传输相同的文件更快?

为什么压缩一百万个 1KB 文件、传输它们并解压它们比直接传输相同的文件更快?

这不仅适用于本地驱动器传输。我甚至注意到,当将文件推送或拉取到服务器,或只是上传到 Google Drive 等服务时,通常将许多小文件压缩(即使只使用“存储”ZIP 选项)、传输它们,然后解压缩它们的速度会快得多。

如果是这样,为什么大多数服务(如 rsync、Windows/macOS 文件传输等)不能自动执行此操作?例如,如果用户尝试传输超过 1000 个非常小的文件,是否会自动将文件“压缩”到临时位置,然后传输它们,然后解压缩它们?或者也许“即时”执行此操作,以免占用不必要的磁盘空间?

答案1

对于每个文件,单独的网络连接会产生开销,这会增加总耗时。如果连接是加密的,则更是如此。

对于单个 zip 文件,仅需传输单个文件,且仅需网络开销。也就是说显著地随着文件数量的增加,速度会更快。

我们无法回答为什么没有实现,这是开发者/供应商的问题。有一件事可能是不能保证远程端可以使用相同的 zip 技术。

相关内容