如果我复制一个 213MB 的文件,它会立即复制 - 嗯,在几毫秒内如果我复制一个 936MB 的文件,则大约需要 1 分钟。
这两个文件都位于我的 E:\ 驱动器的根目录下。
为什么会有这样的差异?即使 213MB 需要 999 毫秒,后者应该只需几秒钟即可复制,但事实并非如此。
该机器具有 4GB Ram、双核等 - 两者都位于单个驱动器上。
答案1
我注意到 Windows 7 具有高度的缓存。如果您复制一个完全适合可用 RAM 的文件,它会非常快地将控制权返回给您,因此您可以在后台完成复制时进行工作。
话虽如此,缓存并不能真正解释文件复制时间的差异,除非您尝试复制文件时该文件已经在内存中,而另一个不在。一分钟内磁盘到磁盘复制一个 936MB 的文件大约需要 15 兆字节每秒,这是一个可观的传输速率。
换句话说,我预计复制一个 936MB 的文件需要一分钟左右。
答案2
每次执行文件复制例程时,都会执行一系列命令。如果文件为 213MB,则您将执行这些命令(假设为 3 个步骤)以及单个读/写命令来复制文件。
如果您的文件为 936MB,那么您仍需执行前面提到的 3 个步骤,以及另外 7 个读/写命令来实际复制文件。
因此,100 个总计 900MB 的小文件包含 100 个强制步骤和 100 个“复制”步骤,并且比复制单个 900MB 文件花费的时间更长
因此,差异在于复制所需的步骤数。
答案3
您的源驱动器和目标驱动器在两次测试中是否物理上相同?在同一驱动器上复制文件需要更多时间,因为驱动器磁头必须来回移动。在驱动器之间复制时,各个磁头可以按顺序读取/写入(待处理碎片量)。
答案4
根据我的经验,一旦文件被读入内存,Windows 就会报告文件已复制。如果它有 231MB 文件的缓冲空间,但没有 900MB,则必须等到它写入了足够的文件内容才能将其末尾读入内存。这可能是磁盘不同区域上的大量读写周期。对于较大的文件,空间可能分布在磁盘上更远,从而导致读写周期变慢。
Windows 最初也倾向于将复制时间估计得过高。我经常得到几分钟的估计时间,但复制只需几秒或几十秒即可完成。
将文件复制到靠近源的磁盘区域比复制到磁盘上较远的位置要快。磁头移动延迟过去高于旋转延迟。两者都随着距离的增加而增加。我最近没有查看延迟数据,但预计磁头移动仍然比旋转延迟慢。