假设我们有下一种情况:两台计算机通过网络连接,目录(平面)充满了小型(甚至不同大小)文件需要通过网络传输。 什么是更快: 1)直接通过网络或移动目录 2)zip(或通过任何其他算法压缩),移动压缩文件,解压缩吗?
根据我的经验,它似乎是第二个,但我怎么能看到它是对的?
据我所知,这不是那么简单 - 是或否,有玩家喜欢带宽,拉链算法,文件大小和平均压缩比等等,但我只是想知道可能有一些计算机科学我不知道?
答案 0 :(得分:1)
你没有说你正在使用什么样的系统。最好的方法是两者兼顾。通过网络发送压缩存档,并在另一端解压缩,而不必在任何一端存储整个压缩存档。在Unix系统上,这通常用tar来完成,它调用gzip进行压缩。你可以直接tar到一个管道,然后在另一端解开。您也可以使用rsync,它也会在链接上进行压缩,但更复杂,避免发送已经在目的地的数据。
答案 1 :(得分:0)
我认为更好的方法是将多个文件压缩为单个存档。
例如,现代3D游戏 - 许多游戏资源文件被压缩到更大的档案,在游戏运行时直接解压缩到内存。这显着降低了游戏负载。
优点:
1)没有必要多次重新读取目录索引,目录索引只读一次
2)没有必要制作多个fopen
3)压缩数据 - 当使用现代处理器(不超过10年:) :)从硬盘读取比解包过程慢得多(我不知道这是如何使用SSD磁盘)。4)使用硬盘时,读取单个(甚至碎片)的大文件要比磁盘不同位置的许多小文件快得多。当读取多个文件时,读取速度会降低,因为硬盘需要定位它的头部。
5)在传输多个文件时,例如使用FTP,我们需要为每个文件创建STOR命令,而传输存档时我们只需要一个STOR命令。