这个问题在这里已有答案:
- 哪个更快,一次复制一切或一次复制一件事? 7个答案
我的老板说,同时复制两个文件需要花费更长的时间而不是另一个,因为硬盘驱动器必须不断地在磁盘上的两个位置之间切换磁头。这是真的?在我看来,操作系统应该足够智能来解决这个问题(即它应该知道按顺序复制它们)。复制到连接到USB端口的驱动器时是真的吗?
编辑:是否有任何其他因素的文件系统因素?例如,复制包含10个文件的1个目录与从整个磁盘复制10个文件有何不同?我只想知道一个源媒体和一个目标媒体(没有从多个驱动器读取)。
这个问题在这里已有答案:
我的老板说,同时复制两个文件需要花费更长的时间而不是另一个,因为硬盘驱动器必须不断地在磁盘上的两个位置之间切换磁头。这是真的?在我看来,操作系统应该足够智能来解决这个问题(即它应该知道按顺序复制它们)。复制到连接到USB端口的驱动器时是真的吗?
编辑:是否有任何其他因素的文件系统因素?例如,复制包含10个文件的1个目录与从整个磁盘复制10个文件有何不同?我只想知道一个源媒体和一个目标媒体(没有从多个驱动器读取)。
Answers:
我会推迟你的 这个问题 。似乎同时在同一磁盘上运行两个复制操作(虽然通过单独的复制操作启动)确实需要更长的时间,因为头部在竞争操作之间来回寻找。
但是,如果是复制操作 开始 同时,绝大多数现代操作系统都是如你所说的那样聪明,可以一个接一个地对传输进行排队,并且应该会产生更快的复制时间。
显然有许多应用程序可用于强制文件复制操作按顺序排队和执行,例如 TeraCopy的 和 FASTCOPY
但是,在多个物理卷上执行并发复制操作完全是另一回事。与通过备用协议传输文件一样。
关于复制到连接到USB端口的驱动器的问题,它在很大程度上取决于驱动器使用的内存类型和使用的USB规范(当然是USB 1.0和2.0的一个值得注意的瓶颈),以及之前的提到有关复制源卷的因素。
这里有很多因素可能会影响到这一点。
至于操作系统是否足够智能来解决这个问题,一般来说,它们都是。也就是说,如果您同时复制多个文件(例如,考虑一次选择多个文件并拖放)。
当然,如果你开了两个 cp
命令,然后它将运行这两个命令,或者如果你复制/粘贴单独的文件在Windows中,并在屏幕上获得两个“复制”进度窗口,那么优化将不会发生。在这种情况下,您已经明确告诉操作系统您要同时运行这两个副本,因此它不会决定一个副本比另一个副本更重要并开始排队。
如果多次选择和复制 - 从GUI或使用“复制C:\文件夹* D:\文件夹\”之类的命令 - 那么文件将被顺序复制,使问题没有实际意义。
如果您复制一些文件,并且在复制时,开始复制更多文件 - 通过GUI中的两个单独操作,或者通过两个单独的命令同时运行,如“cp -r / usr / bin / / opt / bin /& ; cp -r / usr / local / bin / / opt / local / bin /“ - 那么你的性能几乎肯定会降低 - 可能是一点点(高端固态驱动器,两个复制操作中的大文件)或者可能通过TON(旋转磁盘,一个或两个操作中相对较小的文件)。更好的操作系统可以在一定程度上减轻性能损失 - 例如,现代Linux内核使用CFQ(完全公平排队)I / O调度程序,这将在某种程度上“批量”阻止操作以提高效率 - 但您仍将采取性能受到打击。在某些情况下,命中可能是巨大的,因为旋转磁盘在随机I / O上比顺序I / O更慢(可能慢两个数量级或更慢,这就是现代I / O调度程序尽力减轻问题的原因通过批处理和缓存操作来最小化不必要的搜索)。
TL; DR - 仅运行一个副本 手术 一次,无论包含多少个别文件 手术 ,如果你担心表现。